2009-12-02 94 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

相關問題