加入pdf文件的内存错误

时间:2013-09-25 14:07:16

标签: c# pdf-generation out-of-memory

我正在用C#构建一个程序,它读取3个PDF文件,根据用户ID执行一些排序并生成输出PDF文件。 它目前生成1254个pdf文件(每个大约5 MB),当我尝试加入它们时,抛出一个Out of Memmory Exception。

如何加入这些文件,考虑到它会产生4 GB的文件大小? 以下代码将所有PDF文件合并为一个输出文件。

public void CombineMultiplePDFs(string[] fileNames, string outFile)
    {
        int pageOffset = 0;
        ArrayList master = new ArrayList();
        int f = 0;
        Document document = null;
        PdfCopy writer = null;
        while (f < fileNames.Length)
        {
            // we create a reader for a certain document
            PdfReader reader = new PdfReader(fileNames[f]);
            reader.ConsolidateNamedDestinations();
            // we avisorieve the total number of pages
            int n = reader.NumberOfPages;
            pageOffset += n;
            if (f == 0)
            {
                // step 1: creation of a document-object
                document = new Document(reader.GetPageSizeWithRotation(1));
                // step 2: we create a writer that listens to the document
                writer = new PdfCopy(document, new FileStream(outFile, FileMode.Create));
                // step 3: we open the document
                document.Open();
            }
            // step 4: we add content
            for (int i = 0; i < n; )
            {
                ++i;
                if (writer != null)
                {


                    PdfImportedPage page = writer.GetImportedPage(reader, i);
                    writer.AddPage(page);


                }
            }
            PRAcroForm form = reader.AcroForm;
            if (form != null && writer != null)
            {
                writer.CopyAcroForm(reader);
            }
            f++;
        }
        // step 5: we close the document
        if (document != null)
        {
            document.Close();
        }
    }

0 个答案:

没有答案