2010-04-17 24 views
9

He estado usando Ghostscript para convertir mis sola figura parcelas prestados en PDF a PNG:Obedecer la MediaBox/CropBox en PDF cuando se utiliza Ghostscript para hacer un PDF a PNG

gswin32c -sDEVICE=png16m -r300x300 -sOutputFile=junk.png^
     -dBATCH -dNOPAUSE Figure_001-a.pdf 

Esto funciona en el sentido Apago un PNG y contiene la trama.

Pero también contiene una gran cantidad de espacio en blanco (una imagen de origen de ejemplo: http://cdsweb.cern.ch/record/1258681/files/Figure_001-a.pdf).

Si lo ve en Acrobat, notará que no hay espacios en blanco alrededor de la trama. Si usa la línea de comando anterior, verá que la trama representa aproximadamente 1/3 del espacio.

Al hacer lo mismo con un archivo EPS me encuentro con el mismo problema. Sin embargo, existe el parámetro de línea de comandos -dEPSCrop que se puede pasar para que el motor de representación de PS preste atención a BoundingBox.

Necesito el argumento similar para renderizar archivos PDF. No pude encontrarlo en documentos (ni siquiera el -dEPSCrop, en realidad).

+0

Gracias! Hasta donde puedo decir, esto utiliza un método circular para escribir un jpeg o similar, escanear los márgenes y volver a ejecutar con los márgenes establecidos. La información de recorte que deseo utilizar ya está en el PDF mismo (diablos, Acrobat lo detecta automáticamente).No puedo evitar preguntarme si podría volverme loco como convertir el PDF a PS, y luego extraer el cuadro delimitador de allí. :-) – user319080

Respuesta

0

¿Ha intentado usar pdfcrop usando pdftex (viene con texlive por ejemplo) o (aún no probado) la secuencia de comandos python pdfcrop?

Tengo un flujo de trabajo similar con la primera herramienta mencionada.

4

Hay varias opciones para controlar la cual "el tamaño del material" Ghostscript hace una entrada dada:

-dPDFFitPage
-dUseTrimBox
-dUseCropBox

Con PDFFitPage Ghostscript pagará al tamaño del dispositivo página actual (generalmente el tamaño de página predeterminado). Con UseTrimBox usará la TrimBox (y al mismo tiempo establecerá el tamaño de página en ese valor). Con UseCropBox utilizará CropBox (y al mismo tiempo establecerá el tamaño de página en ese valor). Por defecto (no da ningún parámetro), Ghostscript renderizará usando el MediaBox.

Para su ejemplo, parece que agregar "-dUseCropBox" hará el trabajo que está esperando.

Nota: también puede controlar el tamaño total de su salida utilizando "-sPAPERSIZE" (seleccione entre todos los valores predefinidos que Ghostscript conoce) o (para mayor flexibilidad) use "-dDEVICEWIDTHPOINTS=NNN -dDEVICEHEIGHTPOINTS=NNN".

8

Tuve exactamente el mismo problema. Lo arreglé agregando el interruptor -dUseArtBox.

Ejemplo:

/usr/bin/gs -dUseArtBox -dNOPAUSE -sDEVICE=pngalpha -sOutputFile=output.png input.pdf 

Nota: -dUseArtBox conmutador es compatible since ghostscript version 9.07

-dUseArtBox Sets the page size to the ArtBox rather than the MediaBox. The art box defines the extent of the page's meaningful content (including potential white space) as intended by the page's creator. The art box is likely to be the smallest box. It can be useful when one wants to crop the page as much as possible without losing the content.

Cuestiones relacionadas