2010-03-11 18 views
5

mientras yo soy capaz de convertir una página específica de un PDF a un archivo PNG de este modo:El uso de Ghostscript en modo de servidor para convertir archivos PDF a PNG

gs \ 
    -dSAFER \ 
    -dBATCH \ 
    -dNOPAUSE \ 
    -sDEVICE=png16m \ 
    -dGraphicsAlphaBits=4 \ 
    -sOutputFile=gymnastics-20.png \ 
    -dFirstPage=20 \ 
    -dLastPage=20 \ 
    gymnastics.pdf 

me pregunto si de alguna manera puede usar el modo JobServer de Ghostscript para procesar varias conversiones sin tener que incurrir en el costo de iniciar ghostscript cada vez.

de: http://pages.cs.wisc.edu/~ghost/doc/svn/Use.htm

-dJOBSERVER

Definir \004 (^D) para comenzar un nuevo trabajo encapsulado utilizado para la compatibilidad con Adobe PS Intérpretes que normalmente se ejecuta bajo un servidor de tareas. El interruptor -dNOOUTERSAVE se ignora si se especifica -dJOBSERVER ya que los servidores de trabajos siempre ejecutan la entrada PostScript bajo un nivel de guardado, aunque el operador exitserver puede usarse para escapar del trabajo encapsulado y ejecutarse como si se hubiera especificado -dNOOUTERSAVE.

Esto también requiere que la entrada sea desde stdin; de lo contrario, se producirá un error (Error: /invalidrestore in --restore--).

Ejemplo de uso es:

gs ... -dJOBSERVER - < inputfile.ps 
       -or- 
    cat inputfile.ps | gs ... -dJOBSERVER - 

Nota: El ^D no da lugar a una acción de fin de archivo en la entrada estándar como fuere en algunas impresoras PostScript que se basan en TBCP (Protocolo de comunicaciones binario con la etiqueta) para provocar que un ^D fuera de banda indique EOF en una entrada de datos de transmisión. Esto significa que las acciones de archivos directos en stdin como flushfile y closefile afectarán el procesamiento de los datos más allá del ^D en la transmisión.

la idea es ejecutar Ghostscript en proceso. el script recibiría una solicitud para una página particular de un pdf y usaría ghostscript para generar la imagen especificada. Prefiero no comenzar un nuevo proceso de Ghostscript todo el tiempo.

+0

¿Has probado mi solución sugerida para tu problema? –

Respuesta

2

Así que ¿por qué no sólo tiene que utilizar un comando como este:

gs \ 
    -sDEVICE=png16m \ 
    -dGraphicsAlphaBits=4 \ 
    -o pngimages_%03d.png \ 
    \ 
    -dFirstPage=20 \ 
    -dLastPage=20 \ 
    gymnastics.pdf 
    \ 
    -dFirstPage=3 \ 
    -dLastPage=3 \ 
    sports.pdf 
    \ 
    -dFirstPage=33 \ 
    -dLastPage=33 \ 
    athletics.pdf 
    \ 
    -dFirstPage=4 \ 
    -dLastPage=4 \ 
    lazyness.pdf 

Esto generará varias imágenes PNG de diferentes archivos PDF de una sola vez.

Cuestiones relacionadas