【发布时间】:2015-08-11 23:16:37
【问题描述】:
我们希望以编程方式将批量图像转换为 PDF。到目前为止,看起来我们将使用 iTextSharp,但我们遇到了带有剪切路径的 JPG 图像的问题。我们在测试中使用以下代码:
using (FileStream fs = new FileStream(output, FileMode.Create, FileAccess.Write, FileShare.None))
{
using (Document doc = new Document())
{
using (PdfWriter writer = PdfWriter.GetInstance(doc, fs))
{
doc.Open();
iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(source);
image.SetAbsolutePosition(0, 0);
doc.SetPageSize(new iTextSharp.text.Rectangle(0, 0, image.Width, image.Height, 0));
doc.NewPage();
writer.DirectContent.AddImage(image,false);
doc.Close();
}
}
}
JPG 图像中的剪切路径似乎被丢弃了。有没有办法保留剪切路径?另外,在调用 AddImage 时,还有一个 InlineImage 选项,有人知道这是做什么的吗?
【问题讨论】:
-
不要使用内嵌图像:使用内嵌图像意味着图像存储在PDF的内容流中。这只能用于大小为 4 KB 或更小的图像。 PDF 2.0 将禁止使用较大的内嵌图像。此外:iText 将 JPG 的字节直接复制到 PDF 中。没有一个字节被改变。如果您说您的 JPG 具有剪切路径(我从未听说过这样的事情)并且您在 PDF 中看不到该功能,那么您将面临 PDF 固有的限制,而不是 iText(iText 没有连看 JPG 都不看)。
-
我确实在您的代码中看到了一个错误:第一个图像的页面大小总是错误的。它将是 A4 而不是图像的大小。您需要使用遇到的第一张图片的大小创建
Document对象。 -
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
@BrunoLowagie 关于你指出的错误,我们没有注意到它,我们已经对数百张图片进行了测试,每张图片的尺寸都是正确的。
-
@LarsThorén 好的,我已经发布了一个包含更多说明的答案。也许这有帮助。 (您可能已经注意到,我是 iText 的原作者。)
标签: c# itextsharp itext jpeg clipping