使用iText 7 C#复制大尺寸PDF文件时出现内存异常版本7.1.12

问题描述

我正在尝试对现有文档(3 GB的大小)进行一些操作。 我发现用PdfReader读取文档没有问题。 将现有文档页面复制到新文档时出现内存异常。 请找到我创建的代码段

string inputFile = CommonHelper.GetPdfFilePath("MergeRootAttributesOntoPage.pdf");
            string outputFile = CommonHelper.GetOutputPdfFile("MergeRootAttributesOntoPage_iText7");
            PdfReader pdfReader = new PdfReader(
                                                new RandomAccessSourceFactory().SetForceRead(false).CreateBestSource(inputFile),new ReaderProperties()
                                                    );
            PdfDocumentWrapper sourceDocument = new PdfDocumentWrapper(pdfReader,true);
            PdfWriter pdfWriter = new PdfWriter(outputFile).SetSmartMode(true);
            PdfDocumentWrapper destinationDocument = new PdfDocumentWrapper(pdfWriter);
            destinationDocument.InitializeOutlines();

            sourceDocument.CopyPagesTo(1,sourceDocument.GetNumberOfPages(),destinationDocument);
            sourceDocument.Close();
            destinationDocument.Close();

使用PDf Merge对象复制方案:

 string inputFile = CommonHelper.GetPdfFilePath("MergeRootAttributesOntoPage.pdf");
            string outputFile = CommonHelper.GetOutputPdfFile("MergeRootAttributesOntoPage_iText7");
            PdfReader pdfReader = new PdfReader(
                                                new RandomAccessSourceFactory().SetForceRead(false).CreateBestSource(inputFile),new ReaderProperties()
                                                );
            PdfDocumentWrapper sourceDocument = new PdfDocumentWrapper(pdfReader,true);
            PdfWriter pdfWriter = new PdfWriter(outputFile).SetSmartMode(true);
            PdfDocumentWrapper destinationDocument = new PdfDocumentWrapper(pdfWriter);
            PdfMerger resultDocument = new PdfMerger(destinationDocument).SetCloseSourceDocuments(true);
            resultDocument.Merge(sourceDocument,1,sourceDocument.GetNumberOfPages()).Close();
            resultDocument.Close();

一页一页地复制

 string inputFile = CommonHelper.GetPdfFilePath("MergeRootAttributesOntoPage.pdf");
            string outputFile = CommonHelper.GetOutputPdfFile("MergeRootAttributesOntoPage_iText7");
            PdfReader pdfReader = new PdfReader(
                                                new RandomAccessSourceFactory().SetForceRead(false).CreateBestSource(inputFile),true);
            PdfWriter pdfWriter = new PdfWriter(outputFile).SetSmartMode(true);
            PdfDocumentWrapper destinationDocument = new PdfDocumentWrapper(pdfWriter);
            destinationDocument.SetCloseWriter(false);
            destinationDocument.InitializeOutlines();
            PdfPageFormCopier pdfPageFormCopier = new PdfPageFormCopier();

            for (int i = 1; i <= sourceDocument.GetNumberOfPages(); ++i)
            {
               destinationDocument.AddPage(sourceDocument.GetPage(i).CopyTo(destinationDocument,pdfPageFormCopier));
            }

以上所有方法在复制对象时都以内存异常结束 任何解决方案都是热烈的欢迎

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...