问题描述
我正在尝试对现有文档(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 (将#修改为@)