2009-12-02 17 views
6

Non riesco a capire come aggiungere un'immagine esterna (a cui fa riferimento un URL) a un PDF utilizzando iText. Questo tipo di cose è possibile?Aggiunta di immagini esterne a PDF utilizzando iText

La specifica PDF in 7.1.5 dice che dovresti essere in grado di fare riferimento a un PDF tramite un URL utilizzando una specifica URL. Questo è quello che ho finora:

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); 

so ho ancora bisogno di assicurarsi che si aggiunge e roba lo spazio colore, ma la mia preoccupazione principale in questo momento è in realtà sempre questa immagine nel corpo del documento . Non riesco a capire come farlo ... sembra che non riesca a ottenere un riferimento a una PdfPage o al dizionario delle risorse o altro. È possibile usare iText?

Come nota a margine, questo esercizio è inutile se mi verrà presentato un avviso di sicurezza quando la vista tenta di caricare l'immagine. Qualcuno sa se questo è il caso?

+0

Inoltre, se questo tipo di operazione di basso livello non è possibile in iText, esiste un'altra libreria PDF che rende questo più facile da eseguire? – MikeQ

+0

Sulla base del tuo commento qui sotto, quello che stai cercando di fare è tracciare quando un documento viene aperto da un utente. Ecco un esempio di come aggiungere codice per effettuare una chiamata attiva a un URL: http://stackoverflow.com/questions/8099927/tracking-code-into-a-pdf-or-postscript-file – CobaltBlue

risposta

6

Il contenuto esterno è descritto nelle specifiche PDF, ma quasi nessun processore PDF in realtà li supporta. A questo punto Acrobat 9 ha il suo supporto, ma sarei molto cauto con quella funzione: i tuoi clienti o utenti potrebbero non essere in grado di vedere il contenuto di riferimento.

+1

Hmm, grazie mille , questo è utile. Quello che sto cercando di fare è semplicemente ottenere il documento per contattare un server in background (stava per incorporare un'immagine di 1px). Sto lavorando con un cliente che desidera generare alcuni documenti sensibili per i propri clienti e rilevare se vengono copiati in tutto. – MikeQ

+0

... e naturalmente ho subito scoperto che il lettore Adobe ha avuto protezioni contro questo genere di cose dalla versione 7 (mostra un avviso di sicurezza, che è una buona cosa). – MikeQ

Problemi correlati