【发布时间】:2017-01-05 20:05:16
【问题描述】:
以下代码用于将多个pdf文件合并为一个文件
public byte[] MergePdfFiles(IEnumerable<byte[]> files)
{
using (var stream = new MemoryStream())
{
var pdfDoc = new iTextSharp.text.Document();
var pdf = new PdfCopy(pdfDoc, stream);
pdf.SetMergeFields();
pdfDoc.Open();
foreach (var file in files)
{
try
{
pdf.AddDocument(new PdfReader(file));
}
catch (InvalidPdfException ex)
{
_loggingServiceClient.Log(LogLevel.Error, ex);
throw;
}
}
pdfDoc.Close();
return stream.GetBuffer();
}
}
代码运行良好,但生成的文件大小几乎是所有合并文件总大小的两倍。我尝试添加一些压缩指令,例如pdf.CompressionLevel = PdfStream.BEST_COMPRESSION; 和pdf.SetFullCompression();,但没有成功。
请注意,在 acrobat 阅读器中从生成的文件中执行简单的 saveAs 会生成一个大小合适的新文件(每个合并文件的组合大小)。
我还尝试了其他合并文件的方法,例如使用 addPage 方法,结果相同。
【问题讨论】:
标签: c# pdf-generation itext