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.pdf
produce 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:a
se 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
~/bin
convert-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
/Resources
diccionario, incluso si está vacío, pero no están obligados a incluir una/Contents
secuencia?)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 4
ytrailer<<...
), 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 15
de/Length 30/Filter/ASCIIHexDecode
y 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 792
con 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 842
para 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 elstartxref
desplazamiento permaneciera exacto incluso si el tamaño del objeto 3 cambiara.fuente
Si tiene
convert
instalado (una utilidad ImageMagick), puede hacer esto:fuente
convert
También tiene una-size
opción que puede usar para establecer el tamaño del PDF de salida.convert xc:none -page Letter a.pdf
sin crear un archivo txt vacío.(null)
error de fuente.convert.im6: improper image header
a.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.pdf
Traído a usted por Groff, el software más subestimado del mundo.
fuente
groff: can't find `DESC' file
ygroff:fatal error: invalid device `pdf'
con groff versión 1.22.2 en CentOS 7.2.bash 4.1.2
runninggroff 1.18.1.4
.bp
simplemente 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 .bp
hecho debería ser reemplazado porecho
, como dijoPuedes usar pdfTeX:
que produce una página en blanco
texput.pdf
de 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
ps2pdf
script: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}' | pdflatex
creaarticle.pdf
. ¿Es posible que se creeblank.pdf
directamente?-jobname <basename>
en la línea de comando.\shipout\hbox{}
oshowpage
produce 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
ps2pdf
se usa para convertir archivos PostScript a pdffuente
ps2pdf blank.pdf
devuelve 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.pdf
Por ú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
-c
pará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