iTextSharp 在不保留页面大小的情况下合并 PDF
iTextSharp merging PDF's without persisting page size
我有以下 .NET 代码通过 iTextSharp 合并两个 PDF。
byte[] result;
using (var ms = new MemoryStream())
{
using (var doc = new Document())
{
using (PdfCopy copy = new PdfSmartCopy(doc, ms))
doc.Open();
var d1 = new PdfReader(coverSheetPdf);
copy.AddDocument(d1);
var d2 = new PdfReader(reportPdf);
copy.AddDocument(d2);
doc.Close();
}
}
result = ms.ToArray();
}
以上将 Letter/Landscape PDF 与 Tabloid/Landscape PDF 合并。在大多数情况下,每个 PDF 的页面大小都保持不变,但在某些情况下,合并后的文档都是一个大小。
下图显示了调试时的页面大小
我已附上以下文件
Coversheet文件:代码中用变量d1表示
(http://www.mediafire.com/file/be4x8fzyqle6hdt/Coversheet.pdf/file)
报表文件:代码中用变量d1表示
(http://www.mediafire.com/file/8z5q260h8j32b6l/Report.pdf/file)
以上两者的合并文件
(http://www.mediafire.com/file/5ob79holw3yfaz7/Merged_Coversheet%252BReport.pdf/file)
知道为什么合并后的 PDF 包含所有相同大小的页面吗?
抱歉 - 这是一个误报 - 这是由于一些 post-processing - 在执行合并后,每个页面都有页码(由 iTextSharp 执行),默认页面大小为第一页的尺寸
我有以下 .NET 代码通过 iTextSharp 合并两个 PDF。
byte[] result;
using (var ms = new MemoryStream())
{
using (var doc = new Document())
{
using (PdfCopy copy = new PdfSmartCopy(doc, ms))
doc.Open();
var d1 = new PdfReader(coverSheetPdf);
copy.AddDocument(d1);
var d2 = new PdfReader(reportPdf);
copy.AddDocument(d2);
doc.Close();
}
}
result = ms.ToArray();
}
以上将 Letter/Landscape PDF 与 Tabloid/Landscape PDF 合并。在大多数情况下,每个 PDF 的页面大小都保持不变,但在某些情况下,合并后的文档都是一个大小。
下图显示了调试时的页面大小
我已附上以下文件
Coversheet文件:代码中用变量d1表示 (http://www.mediafire.com/file/be4x8fzyqle6hdt/Coversheet.pdf/file)
报表文件:代码中用变量d1表示 (http://www.mediafire.com/file/8z5q260h8j32b6l/Report.pdf/file)
以上两者的合并文件 (http://www.mediafire.com/file/5ob79holw3yfaz7/Merged_Coversheet%252BReport.pdf/file)
知道为什么合并后的 PDF 包含所有相同大小的页面吗?
抱歉 - 这是一个误报 - 这是由于一些 post-processing - 在执行合并后,每个页面都有页码(由 iTextSharp 执行),默认页面大小为第一页的尺寸