GNU/Linux >> Tutoriales Linux >  >> Linux

4 formas de editar un PDF con el comando pdftk-java

Entre documentos técnicos de tecnología, manuscritos y libros de juegos de rol, trato con muchos archivos PDF todos los días. El formato PDF es popular porque contiene código PostScript procesado. PostScript es el lenguaje nativo de las imprentas modernas, por lo que los editores a menudo publican una versión digital de un libro en formato PDF porque de todos modos han invertido tiempo y esfuerzo para producir un archivo para imprimir. Pero un PDF no está destinado a ser un formato editable, y aunque es posible cierto procesamiento inverso, está destinado a ser la última parada para los datos digitales antes de enviarlos a la impresora. Aun así, a veces es necesario realizar ajustes en un PDF y una de mis herramientas favoritas para ese trabajo es el comando pdftk-java.

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

Instalar pdftk-java en Linux

Como su nombre indica, pdftk-java está escrito en Java, por lo que funciona en todos los principales sistemas operativos siempre que tenga Java instalado.

Los usuarios de Linux y macOS pueden instalar Java desde AdoptOpenJDK.net. Los usuarios de Windows pueden instalar la compilación de OpenJDK para Windows de Red Hat.

Para instalar pdftk-java :

1. Descargue la versión pdftk-all.jar de su repositorio de Gitlab y guárdela en ~/.local/bin/ o alguna otra ubicación en su camino.

2. Abra ~/.bashrc en su editor de texto favorito y agréguele esta línea:

alias pdftk='java -jar $HOME/.local/bin/pdftk-all.jar'

3. Cargue su nueva configuración de Bash:

$ source ~/.bashrc

Sintaxis de comandos

La estructura de un pdftk-java válido El comando sigue un patrón, pero hay mucha flexibilidad en lo que está en el patrón. La sintaxis es un poco inusual porque no usa opciones de terminal de estilo tradicional, pero con la práctica, no es demasiado difícil de recordar.

  • pdftk :El alias para llamar al comando
  • archivo de entrada:el PDF que desea modificar
  • acción:lo que desea hacer con el archivo de entrada
  • salida:dónde desea guardar su archivo PDF modificado

La parte de acción es la más compleja, así que comenzaré con tareas simples.

Combina dos archivos PDF en uno

No es raro que la portada de un libro se cree en una aplicación separada, como Inkscape o GIMP, que el resto del libro, lo que generalmente se hace en una aplicación de diseño como Scribus o una suite ofimática como LibreOffice. Puede combinar los dos en su aplicación de diseño. Un buen editor de escritorio como Scribus facilita simplemente hacer referencia a una imagen para que cuando cambie la portada, se actualice automáticamente en el diseño. Sin embargo, también es posible anteponer la portada a un PDF con pdftk-java :

$ pdftk cover.pdf body.pdf \
cat \
output book.pdf

En este ejemplo, la acción es cat , como en concatenar y al igual que el comando cat de Linux, concatena uno o más archivos PDF en un solo flujo de datos, y el flujo de datos se dirige al archivo que output especifica el argumento.

Eliminar páginas de un PDF

No puede eliminar exactamente una página de un PDF, pero puede crear un nuevo PDF que contenga solo las páginas que desea conservar.

$ pdftk book.pdf \
cat 1 3-end \
output shorter-book.pdf

En este ejemplo, la página 1 del archivo de mi libro y todas las páginas desde la 3 hasta la final se guardan en un nuevo archivo. Por lo tanto, la página que eliminé es la página 2.

Dividir un PDF en archivos separados

Dividir un archivo PDF en muchos archivos diferentes también usa el cat acción, y es similar en principio a la eliminación de páginas. Puede dividir un PDF enviando las páginas que desee a un nuevo archivo:

$ pdftk book.pdf \
cat 1-15 \
output part-1.pdf

$ pdftk book.pdf \
cat 16-42 \
output part-2.pdf

Si necesita dividir un PDF en archivos de una sola página, hay una acción especial para eso, llamada burst :

$ pdftk book.pdf burst

$ ls
book.pdf pg_0001.pdf pg_0002.pdf
pg_0003.pdf pg_0004.pdf pg_0005.pdf
[...]

Rellenar formularios

Pocos argumentarían que el formato PDF no se ha inflado a lo largo de los años, y una característica que a veces encuentra en un archivo PDF es un formulario rellenable. Verá esto en los documentos de impuestos de EE. UU., hojas de personajes de juegos de rol, libros de trabajo escolares en línea y otros archivos PDF que están destinados a ser interactivos. Si bien la mayoría de los visores de PDF modernos, como Evince de GNOME y Okular de KDE, pueden completar formularios PDF, también puede completar un formulario PDF con la ayuda de pdftk-java .

Primero, debe extraer los datos del formulario utilizando generate_fdf acción. Esto extrae los ID de los elementos del formulario y los coloca en un archivo de texto.

$ pdftk character-sheet.pdf \
generate_fdf \
output chsheet-form.txt

Su archivo de destino (en este ejemplo, chsheet-form.txt ) contiene los datos del formulario contenido en el PDF, pero solo las partes de texto. Puede editarlo en cualquier editor de texto estándar, como Atom o Gedit.

En un vistazo a veces admirable ya veces incómodo del flujo de trabajo de la organización que produce el PDF, encontrará que algunos formularios están claramente etiquetados, mientras que otros tienen nombres predeterminados como "Checkbox_001" y "Textfield-021", por lo que es posible que tenga que cruzar -haga referencia a su archivo de texto con su PDF, pero eso puede valer la pena si está escribiendo un script para completar formularios automáticamente. Cada etiqueta está marcada como /T item, y en la línea siguiente, hay un espacio (marcado como /V ) proporcionado para la entrada de texto. Aquí hay un fragmento de uno que tiene contexto para sus etiquetas y algunos datos completados:

/T (CharacterName 2)
/V (Abaddon)
>>
<<
/T (SlotsTotal 24)
/V ()
>>
<<
/T (Hair)
/V (Brown)
>>
<<
/T (AC)
/V (15)
>>
<<
/T (Background)
/V ()
>>
<<
/T (DEXmod )
/V ()

Una vez que haya ingresado los datos del formulario, puede combinar su entrada de texto con la estructura PDF con el fill_form acción:

$ pdftk character-sheet.pdf \
fill_form chsheet-form.txt \
output completed.pdf

Aquí hay una muestra del resultado:

Modificación de PDF simplificada

Cuando maneja muchos archivos PDF o archivos PDF a través de scripts de shell, una herramienta como pdftk-java es invaluable porque lo libera de tener que hacer todo manualmente. Cuando construyo un PDF a partir de la salida de Docbook, es un Makefile que llama a pdftk-java para cualquier cantidad de tareas, por lo que no hay posibilidad de que me olvide de un paso o escriba mal el comando, y no hay necesidad de que dedique mi tiempo a ello. Hay muchas otras razones por las que podría usar pdftk-java en su propio flujo de trabajo y muchas otras cosas pdftk-java puede hacer, incluidas acciones como shuffle , rotate , dump_data , update_info y attach_files . Si se encuentra lidiando con archivos PDF a menudo, proporcione pdftk-java un intento.


Linux
  1. Programación de tareas con el comando cron de Linux

  2. ¿Usando –exclude con el comando Du?

  3. ¿Cómo usa expresiones regulares con el comando cp en Linux?

  4. ¿Qué significa tener * * * en el comando traceroute? y ¿Cómo se puede hacer frente a esa situación?

  5. ¿Cómo puedo abrir un archivo con números de línea que se muestran desde la línea de comando en 'vi'?

3 formas interesantes de usar el comando cowsay de Linux

Ordenarse con ordenar en la línea de comando

3 cosas útiles que puedes hacer con la herramienta IP en Linux

13 maneras en que puede ayudar a Linux

7 formas de usar el comando Head de Linux

7 formas de usar el comando Watch de Linux