2009-12-02 63 views
6

我无法弄清楚如何使用iText将外部图像(通过URL引用)添加到PDF。这种事情可能吗?使用iText将外部图像添加到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?

作为一个方面说明,如果我在视图尝试加载图像时遇到安全警告,则此练习是无用的。有谁知道这是否是这种情况?

+0

另外 - 如果这种低级别操作在iText中不可行,是否还有另一个PDF库使得这更容易实现? – MikeQ 2009-12-03 16:05:00

+0

根据您的评论,您真正想要做的是追踪用户何时打开文档。以下是如何添加代码以对URL进行主动调用的示例:http://stackoverflow.com/questions/8099927/tracking-code-into-a-pdf-or-postscript-file – CobaltBlue 2014-01-25 13:03:37

回答

6

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

+1

嗯,非常感谢,这很有帮助。我真正想要做的只是让文档在后台联系服务器(只是要嵌入1px图像)。我正在和一位想为客户生成一些敏感文档的客户合作,并检测他们是否被复制。 – MikeQ 2009-12-04 21:28:29

+0

......当然,我很快就发现,自从第7版以来,Adobe读者已经对这类事情提供了保护(它显示了安全警告,这是一件好事)。 – MikeQ 2009-12-10 16:32:19

相关问题