使用iText将外部图像添加到PDF

时间:2009-12-02 14:26:10

标签: image pdf itext

我无法弄清楚如何使用iText将外部图像(由URL引用)添加到PDF。这种事情有可能吗?

7.1.5中的PDF规范表明,您应该能够使用URL规范通过URL引用PDF。这是我到目前为止所得到的:

PdfFileSpecification pdfSpec = 
    PdfFileSpecification.url(writer, "http://www.someurl.com/test.jpg");

StringBufferInputStream sbis = new StringBufferInputStream("");   
PdfStream dict = new PdfStream(sbis, writer);
dict.put(PdfName.FILTER, PdfName.DCTDECODE)
dict.put(PdfName.TYPE, PdfName.XOBJECT);
dict.put(PdfName.SUBTYPE, PdfName.IMAGE);
dict.put(PdfName.WIDTH, new PdfNumber(100));
dict.put(PdfName.HEIGHT, new PdfNumber(100));
dict.put(PdfName.BITSPERCOMPONENT, new PdfNumber(8));
dict.put(PdfName.LENGTH, new PdfNumber(0));
dict.put(PdfName.F, pdfSpec);

PdfIndirectObject img = writer.addToBody(dict);

我知道我仍然需要确保添加色彩空间和内容,但我现在主要关心的是将此图像放入文档正文中。我无法弄清楚如何做到这一点......似乎我无法获得对PdfPage或资源字典或任何东西的引用。这可以使用iText吗?

作为旁注,如果在视图尝试加载图像时我将收到安全警告,则此练习无效。有谁知道是否是这种情况?

1 个答案:

答案 0 :(得分:6)

PDF规范中描述了外部内容,但几乎没有PDF处理器确实支持它们。到目前为止,Acrobat 9已经支持它,但我对此功能非常谨慎:您的客户或用户可能无法看到引用的内容。