2014-05-19 28 views
7

Ho un problema con TCPDF per generare immagini PDF contenenti un file PNG CMYK.Le immagini CMYK diventano negative con TCPDF

Il sistema consente all'utente di caricare foto, che possono essere JPG, GIF o PNG. ImageMagick converte queste immagini in CMYK da RGB dove necessario. L'immagine viene quindi caricata sul fileserver (Amazon S3).

Quando viene presentata, l'immagine viene semplicemente visualizzata sullo schermo in HTML sulla pagina "anteprima" e facendo clic su un pulsante si genera il PDF.

Il PDF è il punto in cui l'immagine diventa negativa (colori invertiti). Da quello che posso dire, l'immagine rimane come previsto fino al punto in cui TCPDF inserisce l'immagine nel documento:

tipo
$tcpdf->Image($path_to_image, 0, 3.5, '42', '22', $file_extension, '', '', false, 300, '', false, false, 0, false, false, false); 

enter image description here---->enter image description here

Il file è PNG, estensione è png. Il profilo colore è CMYK. Quando viene aperto nel browser, l'immagine sembra corretta.

Inoltre, non sono stato in grado di replicarlo nel mio ambiente di sviluppo locale, sembra solo che si verifichi sul sito attivo, il che rende ancora più difficile la replica. Questo sembra solo che si verifichi con i file PNG.

L'OP di this article supera questo problema in uno dei suoi post di sballo, ma non sembra risolverlo.

Qualcuno ha riscontrato questo problema e ha risolto come risolverlo? Immagino che stia accadendo da qualche parte nella classe TCPDF (v5.9.103) come il file sorgente va bene.

risposta

7

Bene, a meno che Wikipedia non sia disinformata, non esiste una cosa come una PNG CMYK.

Ecco Wikipedia estratto:

PNG è stato progettato per trasferire le immagini su Internet, non per la grafica di stampa di qualità professionale, e pertanto non supporta gli spazi colore non-RGB, come CMYK.

La mia ipotesi è che i browser non siano interessati al profilo colore del png, lo vedranno sempre "RGB". Presumo che tu abbia impostato TCPDF per l'output di un PDF in CMYK, e poiché i file .png non supportano CMYK ...

Hai provato a convertirlo in .tiff (supponendo che devi conservare i canali alfa), e poi a CMYK con Imagemagick, prima di passarlo a TCPDF?

+0

Molto interessante - seguirò questo! –

+0

Suppongo sia una buona cosa che abbia avuto una risposta così banale. Rimuoverò PNG dal mio elenco di estensioni di file supportate e lo lasceremo lì. Grazie. –

3

Non so nulla di TCPDF e non ho ancora provato i file PNG CMYK.

Ma quando ho aggiunto il supporto per i file CMYK JPEG PDFsharp, ho dovuto aggiungere un parametro /DECODE con il valore [1 0 1 0 1 0 1 0] per le immagini JPEG con /DeviceCMYK spazio colore per farli mostrare correttamente con Adobe Reader.

Suppongo che i file PNG di CMYK necessitino dello stesso parametro per mostrare correttamente (e non invertito).

Il valore di byte 255 è molto luminoso con colori RGB e molto scuro con colori CMYK. Sembra che Adobe Reader abbia bisogno di un suggerimento per gestirlo correttamente. RGB è additivo, CMYK è sottrattivo.

Adobe PDF Reference scrive sullo spazio colore DeviceCMYK:

Nota che il senso di questi numeri è opposta a quella di RGB a colori componenti.

-1

.png `t profilo di colore CMYK uso provare a utilizzare .jpg. La soluzione più rapida è

<?php 

$file = "myimage.png"; 

$image = imagecreatefrompng($file); 
$bg = imagecreatetruecolor(imagesx($image), imagesy($image)); 

imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255)); 
imagealphablending($bg, TRUE); 
imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image)); 
imagedestroy($image); 

header('Content-Type: image/jpeg'); 

$quality = 50; 
imagejpeg($bg); 
imagedestroy($bg); 

?>