Recientemente necesitaba una sola página PDF en blanco (tamaño 8.5 "x 11") y me di cuenta de que no sabía cómo hacer una desde la línea de comandos.
La emisión touch blank.pdfproduce un archivo PDF vacío . ¿Existe una herramienta de línea de comando que produce una página PDF vacía ?
command-line
pdf
Brian Fitzpatrick
fuente
fuente

Respuestas:
convert, la utilidad ImageMagick utilizada en la respuesta de Ketan, también le permite escribir algo comoo
o (para papel A4 horizontal)
etc. , sin crear un archivo de texto vacío. @chbrown notó que esto crea un archivo pdf más pequeño.
"xc:" significa "X imagen constante" pero realmente podría considerarse como "x lienzo". Es una forma de especificar un solo bloque de un color, en este caso ninguno. Más información en http://imagemagick.org/Usage/canvas/#solid, que es el manual "de facto" para ImageMagick. [complementado con información de la tubería] (Cosas como
pdf:ase puede utilizar para declarar explícitamente el formato de un archivo.label:'some text',gradient:,rose:ylogo:parecen ser otros ejemplos de formatos de archivos especiales.)Anko sugirió publicar esta modificación como una respuesta separada, así que lo estoy haciendo.
fuente
~/binconvert-im6.q16: not authorized 'blank.pdf' @ error/constitute.c/WriteImage/1037, pero encontré la solución aquí: askubuntu.com/questions/1081895/... Publicar aquí en caso de que ayude a cualquier otra persona que tenga el mismo problema.Al igual que el GIF más pequeño posible , el PDF de página en blanco más pequeño posible debe elaborarse a mano, porque es tan pequeño que fragmentos de metadatos innecesarios pero inofensivos se convierten en una parte significativa del tamaño del archivo, y la compresión en realidad hace que las cosas sean más grandes . También requiere una atención cuidadosa a las reglas en la especificación de PDF sobre qué partes de la estructura del archivo son y no son necesarias. (¿Sabía que los objetos de página deben contener un
/Resourcesdiccionario, incluso si está vacío, pero no están obligados a incluir una/Contentssecuencia?)Si no utiliza el objeto PDF 1.5 y las secuencias de referencia cruzada (que tiene la ventaja de que el archivo puede ser ASCII completamente imprimible), creo que lo mejor que puede hacer es 317 bytes. Si copiar y pegar, tomar nota de que es necesario que haya un espacio al final de las cuatro entradas de la tabla de referencias cruzadas (entre las líneas
0 4ytrailer<<...), y que no hay , no supone que hay un salto de línea final después de la%%EOF.Reemplazar la tabla de referencia cruzada con una secuencia de referencia cruzada v1.5 diseñada manualmente hace que el archivo sea un poco más pequeño, al precio de que ya no se puede imprimir ASCII: 294 bytes. (En aras de la legibilidad, sin mencionar la posibilidad de escribirlo en absoluto, la secuencia xref a continuación se ha duplicado, pero esto no se refleja en su diccionario de secuencias. Para recuperar un PDF válido, debe reemplazar el hexdump con el correspondiente bytes binarios sin formato, o el cambio
/Length 15de/Length 30/Filter/ASCIIHexDecodey aceptar un archivo que es de 328 bytes de longitud.)También experimenté envolviendo objetos del 1 al 3 en una secuencia de objetos, pero esto agrega más sobrecarga de la que ahorra, incluso cuando la secuencia está comprimida.
Una posible formulación alternativa de la corriente xref es
Lamentablemente, a pesar de los ahorros sustanciales en la longitud de los datos de transmisión reales, el adicional
/Index[1 4]consume todos menos un byte de los ahorros. Además, no me queda claro si puede dejar el objeto 0 completamente fuera del archivo. (Tampoco me queda claro si el objeto 0 debe tener el número de generación -1. Si eso no es necesario, en realidad guarda más bytes con.)
Para cambiar el tamaño del papel, reemplácelo
612 792con el ancho y la altura apropiados, expresados en puntos PostScript (72 puntos PostScript = 1 pulgada de EE. UU. O 25,4 milímetros). Por ejemplo,595 842para A4. Puede incrustar esto en un script de shell que escupe un PDF en blanco del tamaño de papel deseado; La única parte difícil sería asegurarse de que elstartxrefdesplazamiento permaneciera exacto incluso si el tamaño del objeto 3 cambiara.fuente
Si tiene
convertinstalado (una utilidad ImageMagick), puede hacer esto:fuente
convertTambién tiene una-sizeopción que puede usar para establecer el tamaño del PDF de salida.convert xc:none -page Letter a.pdfsin crear un archivo txt vacío.(null)error de fuente.convert.im6: improper image headera.txt' @ error / txt.c / ReadTXTImage / 429. convert.im6: no hay imágenes definidasa.pdf' @ error/convert.c/ConvertImageCommand/3044.echo .bp | groff -T pdf > t.pdfTraído a usted por Groff, el software más subestimado del mundo.
fuente
groff: can't find `DESC' fileygroff:fatal error: invalid device `pdf'con groff versión 1.22.2 en CentOS 7.2.bash 4.1.2runninggroff 1.18.1.4.bpsimplemente significa "página de salto", por lo que esto produce un documento de 2 páginas. Para producir un documento de 1 página, simplemente haga lo más simpleecho | groff -T pdf > blank.pdf.echo .bphecho debería ser reemplazado porecho, como dijoPuedes usar pdfTeX:
que produce una página en blanco
texput.pdfde aproximadamente 900 bytes, la mitad de lo que utiliza ImageMagick.Sin embargo, esto lo pone a merced del tamaño de papel predeterminado de su instalación de TeX. Para establecer el tamaño explícitamente, puede ir a LaTeX en su lugar:
Otra opción más sería utilizar el controlador PDF de Ghostscript, aunque el útil
ps2pdfscript:que es mucho más silencioso que TeX pero produce una salida menos compacta (aproximadamente 2300 bytes).
fuente
echo "" | ps2pdf -sPAPERSIZE=a4 - blank.pdf. Esto es un poco más pequeño, a 2200 bytes.echo '\documentclass[letterpaper]{article}\usepackage[pass]{geometry} \begin{document}\shipout\hbox{}\end{document}' | pdflatexcreaarticle.pdf. ¿Es posible que se creeblank.pdfdirectamente?-jobname <basename>en la línea de comando.\shipout\hbox{}oshowpageproduce una página. Tanto TeX como Postscript tienen construcciones en bucle que podría usar, pero probablemente sea más simple usar el lenguaje de scripting de su elección para duplicar el comando un número apropiado de veces.Una manera fácil de hacer un PDF con una página en blanco, es usar
rst2pdf:simplemente hacer eco en un solo espacio no funcionará, terminarás con un archivo PDF sin páginas (que no es lo mismo que un archivo vacío).
fuente
En la línea de comando, escriba:
el comando
ps2pdfse usa para convertir archivos PostScript a pdffuente
ps2pdf blank.pdfdevuelve un error, porque espera un archivo Postscript como argumento. Y el segundo comando requiere un preexistentefile.pdf. ¿Me estoy perdiendo de algo?touch blank.ps.; 2ps2pdf blank.ps blank.pdf.; 3.pdftk A=1.pdf B=blank.pdf cat A1-end B output 2.pdfPor último, no menos importante, aquí está la forma de Ghostscript de crear un PDF que muestra una página vacía:
El tamaño de la página probablemente será Carta. Si quieres A4, usa esto:
Antecedentes: el
-cparámetro puede ser seguido por cualquier cadena PostScript válida, que Ghostscript intentará interpretar. Y una página vacía en PostScript está representada por este bloque de código corto:fuente