iTextsharp - 插入图像后的PDF文件大小

Pad*_*ddy 5 c# pdf-generation itextsharp

我目前正在使用iTextSharp转换一些遗留代码来创建PDF文件.我们正在创建一个包含大量图像的大型PDF文件,我正在插入这样的图像:

Document doc = new Document(PageSize.A4, 50, 50, 25, 25);
PdfWriter writer = PdfWriter.GetInstance(doc, myStream);

writer.SetFullCompression();

doc.Open();

Image frontCover = iTextSharp.text.Image.GetInstance(@"C:\MyImage.png");

//Scale down from a 96 dpi image to standard itextsharp 72 dpi
frontCover.ScalePercent(75f);

frontCover.SetAbsolutePosition(0, 0);

doc.Add(frontCover);

doc.Close();
Run Code Online (Sandbox Code Playgroud)

插入图像(20.8 KB png文件)似乎会使PDF文件大小增加近100 KB.

有没有办法在进入前压缩图像(记住这需要合理的打印质量),或进一步压缩整个PDF?我在上面的例子中是否进行了任何压缩?

Pad*_*ddy 8

答案似乎是您需要将PDF规范的适当版本设置为目标,然后按如下方式设置压缩:

PdfWriter writer = PdfWriter.GetInstance(doc, ms);
PdfContentByte contentPlacer;

writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_5);

writer.CompressionLevel = PdfStream.BEST_COMPRESSION;
Run Code Online (Sandbox Code Playgroud)

这大大降低了我的文件大小.我还发现PNG在文档的最终大小方面给了我最好的结果.