如何解决使用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 举报,一经查实,本站将立刻删除。