© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
C#C
C#•2y ago•
9 replies
Turwaith

ObjectDisposedException: Cannot access a closed Stream. I don't understand why it doesn't work.

I am receiving a pdf document via a http get request and I need to rescale the actual document size. For this, I have written the following method, using the itext7 nuget package:
private static Stream CompressPdf(Stream inputStream, float scaleFactor = 0.5f)
{
    var outputStream = new MemoryStream();
    inputStream.Position = 0;
    var pdfReader = new PdfReader(inputStream);
    var pdfWriter = new PdfWriter(outputStream);
    var pdfDocument = new PdfDocument(pdfReader, pdfWriter);
    int numberOfPages = pdfDocument.GetNumberOfPages();
    for (int i = 1; i <= numberOfPages; i++)
    {
        PdfPage page = pdfDocument.GetPage(i);
        Rectangle originalPageSize = page.GetPageSize();
        float newWidth = originalPageSize.GetWidth() * scaleFactor;
        float newHeight = originalPageSize.GetHeight() * scaleFactor;
        var newPageSize = new PageSize(newWidth, newHeight);
        page.SetMediaBox(newPageSize);
        page.SetCropBox(newPageSize);
        var canvas = new PdfCanvas(page);
        canvas.ConcatMatrix(scaleFactor, 0, 0, scaleFactor, 0, 0);
    }
    pdfDocument.Close();
    outputStream.Position = 0;
    return outputStream;
}
private static Stream CompressPdf(Stream inputStream, float scaleFactor = 0.5f)
{
    var outputStream = new MemoryStream();
    inputStream.Position = 0;
    var pdfReader = new PdfReader(inputStream);
    var pdfWriter = new PdfWriter(outputStream);
    var pdfDocument = new PdfDocument(pdfReader, pdfWriter);
    int numberOfPages = pdfDocument.GetNumberOfPages();
    for (int i = 1; i <= numberOfPages; i++)
    {
        PdfPage page = pdfDocument.GetPage(i);
        Rectangle originalPageSize = page.GetPageSize();
        float newWidth = originalPageSize.GetWidth() * scaleFactor;
        float newHeight = originalPageSize.GetHeight() * scaleFactor;
        var newPageSize = new PageSize(newWidth, newHeight);
        page.SetMediaBox(newPageSize);
        page.SetCropBox(newPageSize);
        var canvas = new PdfCanvas(page);
        canvas.ConcatMatrix(scaleFactor, 0, 0, scaleFactor, 0, 0);
    }
    pdfDocument.Close();
    outputStream.Position = 0;
    return outputStream;
}

With this code, I get a
ObjectDisposedException
ObjectDisposedException
with the message
Cannot access a closed Stream
Cannot access a closed Stream
. The exception is thrown at the line
outputStream.Position = 0;
outputStream.Position = 0;


I don't understand why I get this exception. In an earlier version, I was using
using
using
for both the PdfReader and the PdfWriter. But even after removing that, I still get this error.
C# banner
C#Join
We are a programming server aimed at coders discussing everything related to C# (CSharp) and .NET.
61,871Members
Resources

Similar Threads

Was this page helpful?
Recent Announcements

Similar Threads

❔ WPF System.ObjectDisposedException: 'Cannot access a closed Stream.'
C#CC# / help
3y ago
Blazor Server: Cannot access a closed Stream
C#CC# / help
2y ago
✅ I don't know why this doesn't work.
C#CC# / help
4y ago
✅ I don't understand GC
C#CC# / help
4y ago