Come convertire un PDF da “RGB” in “B&W”

GhostScript-IcoLavorando sui miei vari progetti, mi sono imbattuto su un problema tanto semplice quanto particolare, stiamo parlando della conversione di un PDF da “RGB” a “GRAY”.

ecco il codice per fare questo:

#gs -dPDFX -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.3
-g4134x5906 -r300 -dProcessColorModel=/DeviceGray -sColorConversionStrategy=Gray
-sOutputFile=test_gray.pdf test_color.pdf

per vedere il risultato:
pdf colore pdf b&w

21 comments

  1. Dingo scrive:

    Ho provato a usare questo codice (mi serviva proprio per convertire lo spazio colore di un pdf da mandare in stampa offset da RGB a gray) ma ottengo questo errore:

    ERROR: /undefinedfilename in ( -sColorConversionStrategy=Gray)
    Operand stack:

    Execution stack:
    %interp_exit .runexec2 –nostringval– –nostringval– –nostringval– 2 %stopped_push –nostringval– –nostringval– –nostringval– false 1 %stopped_push
    Dictionary stack:
    –dict:1119/1686(ro)(G)– –dict:0/20(G)– –dict:102/200(L)–
    Current allocation mode is local
    Last OS error: 2
    ESP Ghostscript 815.04: Unrecoverable error, exit code 1

  2. jimilucio scrive:

    Ciao, ho modificato un pò lo script ed ho effettuato una prova da linea di comando. puoi verificare che ora funzioni anche sul tuo ambiente?

  3. Dingo scrive:

    grazie innanzitutto. quando provo a lanciare lo scrpt modificati mi restituisce questo errore:

    ESP Ghostscript 815.04 (2007-03-14)
    Copyright (C) 2004 artofcode LLC, Benicia, CA. All rights reserved.
    This software comes with NO WARRANTY: see the file PUBLIC for details.
    CRIT: rangecheck in .putdeviceprops

    che cerca di dirmi?

  4. jimilucio scrive:

    Guarda, dovresti darmi qualche info in più…

    Io per esempio uso la versione GPL Ghostscript 8.61, puoi provare ad aggiornarla? a quanto pare sembra un problema di versione.

    Usi windows o linux?

  5. Dingo scrive:

    uso Linux

    in realtà io vedo che sul mio sistema in /share/ è presente la cartella della versone 8.60 del ghostscript. poiché mi servirebbe assolutamente fare questa conversione, potresti magari dirmi la tua configurazione così la copio e sono sicuro ch funziona?

  6. jimilucio scrive:

    che distro usi di linux? la soluzione non è darti la mia configurazione ma avere la versione di GS aggiornata alla 8.61

    Lucio.

  7. Dingo scrive:

    uso Puppy Linux. potrei installare il ghostscript 8.61, ma se ci fosse una distribuzione live che già lo include, potrei fare la prova più agevolmente

  8. Dingo scrive:

    con la versione 8.62 del ghostscrpt la conversione si avvia, ma ci sono due problemi:

    il primo:

    la conversione avviene pagina per pagina e occorre premere spazio per farlo andare avanti, OGNI VOLTA! il che, per file di 100-200 pagine è alquanto improponibile

    Processing pages 1 through 108.
    Page 1
    >>showpage, press to continue<>showpage, press to continue<>showpage, press to continue<>showpage, press to continue<>showpage, press to continue<<

    il secondo problema è che nell’output, le dimensioni della pagina sono sballate rispetto all’originale, ho convertito una pagina in formato A4 e il risultato è stata una pagina di 34 x 49 cm con la pagina originale decentrata all’estrema sinistra e tutto il resto spazio bianco in più, ho convertito pagine A5, 17×24 ecc… ma nella conversione il formato pagina non si è mai conservato. ma come mai questo difetto?

  9. jimilucio scrive:

    Per il primo problema posso dirti di provare un po di comandi come:

    -dNOPAUSE
    -dNOOUTERSAVE

    Per quanto riguarda la dimensione delle pagine, non penso sia un difetto di GS… ma semplicemente un problema di passaggio delle informazioni a GS.. prova con “-gWxH” specificando W ed H in pixel

    comunque per avere altre info sui comandi e come usarli, vai su
    http://web.mit.edu/ghostscript/www/Use.htm#Help_command

  10. Dingo scrive:

    dunque. con il parametro:

    -dNOPAUSE

    e, sostituendo nel parametro -g

    -g2008x2833

    dà proprio un 17×24 cm e non chiede ogni volta di premere return

    solo che… il pdf prodotto è rasterizzato nel testo che non è più vettoriale come nel tuo esempio (se ben ricordo) mentre, per una buona qualità di stampa, il testo deve rimanere vettoriale

  11. Dingo scrive:

    ho trovato il bandolo:

    il codice che avevi postato all’inizio:

    gs -sOutputFile=output.pdf -sDEVICE=pdfwrite -sColorConversionStrategy=Gray -dProcessColorModel=/DeviceGray -dCompatibilityLevel=1.4 input.pdf < /dev/null

    funziona con il ghostscript 8.62 e converte lo spazio colore senza rasterizzare il file mantenendo le proporzioni della pagina senza richiedere la pressione del tasto return ogni volta. mi rimane solo un problema con le immagini: alcune le converte bene, altre invece le rende completamente bianche lasciando solo un rettangolino vuoto (e bianco) al loro posto. l’immagine c’è fisicamente (ho ispezionato il pdf con il tool info di multivalent) ma, per qualche strano motivo, è stata completamente sbiancata

    grazie comunque per il post. spero di riuscire a superare anche questo intoppo dopodiché stampa offset con la sola lastra del nero a volontà

  12. Dingo scrive:

    dunque ho individuato il problema. a quanto pare, ghostscript non può gestire le immagini RGBA (o perlomeno non può farlo convertendo lo spazio colore da RGB a gray) quindi mi è bastato trasformare le immagini da RGBA a RGB togliendo il canale alpha quindi e la conversione del documento è poi andata a buon fine e tutte le immagini erano pienamente visualizzabili

    ora passo il file alla tipografia. spero proprio che non emergano altri problemi. grazie del post. spero che la mia esperienza possa servire anche ad altri

  13. Dingo scrive:

    mi chiedevo se si potesse effettuare anche una conversione da RGB a CMYK. mi sono perso un po’ nel manuale e non ho trovato informazioni in merito

  14. jimilucio scrive:

    Ciao Dingo, allora secondo me puoi provare ad applicare direttamente il profilo CMYK al pdf passando il parametro: -sProfileOut=fileprofilo.icc

    i file coi profili li puoi scaricare dal link inserito sul post del convert.

    A presto.

    Lucio.

  15. Dingo scrive:

    ho fatto subito una prova (si lamenta di qualcosa nel mio pdf di prova ma poi termina l’operazione con successo)

    gs -sOutputFile=provacmyk.pdf -sDEVICE=pdfwrite -sProfileOut=/mnt/hda1/AdobeICCProfiles/CMYK-Profiles/CoatedFOGRA27.icc -dCompatibilityLevel=1.4 prova.pdf >showpage, press to continue<>showpage, press to continue<>>> ESP Ghostscript 815.04 <<<<
    **** Please notify the author of the software that produced this
    **** file that it does not conform to Adobe’s published PDF
    **** specification.

    ma, la verifica di preflight mi avverte che il modello di colore è sempre RGB

    Warning:PDF has RGB Element

    (hai avuto la mia mail di risposta in privato?)

  16. jimilucio scrive:

    Guarda se hai immaggini prima le devi trattare in CYMK… e poi importarle dentro il pdf, ho avuto lo stesso problema io 🙁 infatti il mio sistema utilizza convert (imagemagick) per convertire le immagini e gs per generare il pdf 😉

  17. Dingo scrive:

    non ci sono immagini nel pdf che ho usato per la prova, solo testo. anche usando quell’opzione col profilo cmyk, sembra che ghostscript non riesca a convertire da RGB a CMYK

  18. jimilucio scrive:

    Mi sembra al quanto strano, mi reincolli tutta la stringa che utilizzi per creare il pdf?
    Cmq ho letto l’email che mi hai inviato in privato.. quando e se vuoi collaborare non ci sono problemi.

  19. Dingo scrive:

    questa qui:

    gs -sOutputFile=provacmyk.pdf -sDEVICE=pdfwrite -sProfileOut=/mnt/hda1/AdobeICCProfiles/CMYK-Profiles/CoatedFOGRA27.icc -dCompatibilityLevel=1.4 prova.pdf

    ho scelto un profilo cmyk a caso da quelli che hsi indicato della Adobe

  20. -dCompatibilityLevel=1.4 input.pdf < /dev/null
    come descritto qui: http://www.sviluppando.net/2008/07/25/ghostscript-pdf-convert-rgb2gray/ si trasforma lo spazio colore di un pdf da RGB a GRAY
    — Puppy Linux wiki

  21. forex empire scrive:

    hi we are forex…

    […]the time to read or visit the content or sites we have linked to below the[…]…

Lascia un commento