2013-01-08 17 views
8

Sono in grado di inserire l'immagine JPG in un documento PDF con il filtro DCTDecode. Penso che tutti i parametri dovrebbero essere uguali per l'immagine PNG, ad eccezione del filtro che dovrebbe essere FlateDecode. Tuttavia, quando provo a inserire PNG con gli stessi parametri, l'immagine PNG non è visibile nel documento PDF.Come inserire PNG trasparenti in PDF?

UPDATE: Sono venuto a conclusione che il file PDF deve includere

1 0 obj << 
/Type /XObject 
/Subtype /Image 
/Width 512 
/Height 512 
/BitsPerComponent 8 
/ColorSpace /DeviceRGB 
/SMask 9 0 R 
/Length 134753  
/Filter /FlateDecode 
>> 
stream 
PNG_RAW DATA 
endstream 
endobj 
9 0 obj << 
/Type /XObject 
/Subtype /Image 
/Width 512 
/Height 512 
/BitsPerComponent 8 
/ColorSpace /DeviceGray 
/Length 12087  
/Filter /FlateDecode 
>> 
stream 
ALPHA_PIXELS 
endstream 
endobj 

ma come posso separare i PNG dati grezzi e la alpha pixels via ImageMagick? In altre parole, il comando ImageMagick può produrre PDF_RAW_DATA e ALPHA_PIXELS per l'inserimento nel file pdf.

risposta

4

Molto probabilmente non hai decodificato le immagini PNG.

I PNG non sono supportati direttamente in PDF. Voglio dire che non sono supportati in modo che i file JPEG siano supportati.

È necessario produrre byte raster non compressi non elaborati dai PNG prima di incorporarli in PDF. Se lo desideri, puoi codificare i byte raster con il codificatore Flate o LZW.

+0

Grazie per la segnalazione del problema. Ho modificato la mia domanda per trovare una soluzione pratica. – Googlebot

+1

Con alcune limitazioni PNG è supportato direttamente dal PDF. Il PNG deve essere PNG8 (tipo di colore 3), avere max 256 colori, non avere una maschera di trasparenza (canale alfa), non essere interlacciato. – zfr

+0

@zfr avete un esempio di un PDF con tale PNG incorporato? – Bobrovsky

6

@Bobrovsky

Ecco un esempio: http://pd4ml.com/i/pd4ml18130.pdf

per essere più precisi: non si può incorporare un PNG assolutamente senza manipolazioni con esso. Dovresti dividere un PNG in sezioni: IDAT (dati immagine) va in PDF come flusso di byte invariato, PLTE (tavolozza) - alla definizione dello spazio cromatico, iCCP passa facoltativamente all'oggetto profilo colore.

Un dizionario oggetto può sembrare che:

<< 
/Filter /FlateDecode 
/Type /XObject 
/Subtype /Image 
/BitsPerComponent 8 
/Length 1277 
/Height 250 
/Width 250 
/DecodeParms << 
    /BitsPerComponent 8 
    /Predictor 15 
    /Columns 250 
    /Colors 1 
>> 
/ColorSpace [/Indexed /DeviceRGB 1 <1989d1ffffff>] 
>> 
stream 
... IDAT bytes ... 
+0

Grazie per la spiegazione dettagliata. Non ero a conoscenza di un modo tale per incorporare PNG. – Bobrovsky