¿Cómo editar metadatos pdf desde la línea de comandos?


83

Necesito una herramienta de línea de comandos para editar metadatos de archivos pdf.

Estoy usando una tableta Aiptek MyNote Premium para escribir mis notas y minutos en este dispositivo, importarlos más tarde y convertirlos a pdf automáticamente con un script simple usando inkscape y ghostscript.

¿Existe alguna herramienta de línea de comando para agregar algunas categorías a los metadatos del pdf, de modo que pueda encontrar el pdf más tarde (por ejemplo, con gnome-do) por categorías?

Actualización: probé la solución con pdftk y funciona, pero parece que gnome-do no se ocupa de los metadatos pdf. ¿Hay alguna manera de hacer que gnome-do haga eso?

Respuestas:


101

Pruebe exiftool, está disponible en el paquete libimage-exiftool-perl en los repositorios.

Como ejemplo, si tiene un archivo pdf llamado drawing.pdf y desea actualizar sus metadatos, use la utilidad exiftool de esta manera:

exiftool -Title="This is the Title" -Author="Happy Man" -Subject="PDF Metadata" drawing.pdf

Por alguna razón, el Asunto ingresado termina en el campo de palabras clave de los metadatos en el archivo pdf. no es un problema en algunos casos, incluso deseable, sin embargo, esto puede ser problemático, lo demuestra y el previsualizador de metadatos nautilus no muestra esto, pero el visor Adobe Acrobat y el visor PDF-XChange sí.

El programa creará una copia de seguridad del archivo original si no utiliza el; -overwrite_originalcambiar, esto significa que existirá un duplicado en la carpeta donde está el pdf actualizado. Del ejemplo anterior; un archivo llamado; Se creará drawing.pdf_original.

use el interruptor de sobrescritura bajo su propio riesgo, mi sugerencia es no usarlo y escribir algo para mover este archivo a una mejor ubicación por si acaso.


16
Tenga en cuenta que: " Todas las ediciones de metadatos son reversibles . Si bien esto normalmente se consideraría una ventaja, es un posible problema de seguridad porque la información antigua nunca se elimina del archivo".
loco por natty

55
@nuttyaboutnatty si desea purgar todas las entradas de metadatos remanentes y no utilizados, puede linealizar el archivo PDF justo después de procesarlo con exiftool. Esto se describe con más detalle en esta esencia de Github .
Glutanimate

99
@nuttyaboutnatty Bueno, por supuesto, no es una fuente autorizada, pero eso es solo porque nadie se tomó el tiempo para escribir una. Sin embargo, puedo asegurar que el método descrito por el autor funciona. Pruébelo usted mismo: 1.) Tome un PDF que tenga algunas etiquetas y "elimine" todos los metadatos con exiftool -overwrite_original -all:all="" file.pdf; 2.) Use exiftool -PDF-update:all= file.pdfpara confirmar que todavía hay metadatos antiguos presentes; 3.) linealizar el archivo con qpdf --linearize file.pdf; 4.) Verifique nuevamente, como lo hizo en 2.); todos los metadatos deberían desaparecer;
Glutanimate

44
5.) confirme que el archivo ha sido purgado de todos los metadatos mirando el diccionario PDF ( pdfinfo -meta file.pdf)
Glutanimate

1
Funciona perfectamente. Regularmente quiero copiar los metadatos de un PDF a otro, en cuyo caso exiftool -overwrite_original -tagsFromFile <srcfile> <destfile>es lo que necesito (la opción -overwrite_originalsobrescribe el original <destfile>).
AstroFloyd

15

Puede editar metadatos usando pdftk. Echa un vistazo al update_infoparámetro. En cuanto al archivo de datos, a continuación se muestra un ejemplo:

InfoKey: Title
InfoValue: Mt-Djing: multitouch DJ table
InfoKey: Subject
InfoValue: Dissertation for Master degree
InfoKey: Keywords
InfoValue: DJing, NUI, multitouch, user-centered design
InfoKey: Author
InfoValue: Pedro Lopes

( Fuente )


1
Ok, esto significa que tengo que exportar los metadatos a un archivo de texto, editarlos y volver a importar el archivo de texto. ¿Hay alguna manera de establecer directamente un solo metadato desde la línea de comandos?
bdr529

Puede haber, pero no pude encontrarlo.
Olli

pdftkParece que los caracteres Unicode en los metadatos.
Caracol mecánico

1
Tuve algún problema al usar pdftknuevos archivos PDF (las versiones más nuevas se cifran a través de AESV2). Parece que ha sido descontinuado. exiftoolEstaba funcionando mejor.
s1lv3r

2
para usar pdftk, lo que debe hacer es: 1) pdftk book.pdf dump_data output report.txt2) editar report.txt 3)pdftk book.pdf update_info report.txt output bookcopy.pdf
craq

6

Usando Ghostview

Cree un archivo llamado "pdfmarks" con este contenido:

[ /Title (Document title)
  /Author (Author name)
  /Subject (Subject description)
  /Keywords (comma, separated, keywords)
  /ModDate (D:20061204092842)
  /CreationDate (D:20061204092842)
  /Creator (application name or creator note)
  /Producer (PDF producer name or note)
  /DOCINFO pdfmark

luego combine este pdfmarksarchivo con un archivo de entrada PDF, PS o EPS:

gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf no_marks.pdf pdfmarks

Fuente: http://milan.kupcevic.net/ghostscript-ps-pdf/


0

Para profundizar en el pdftkmétodo, que es bueno porque muestra todo lo que se está configurando, al mismo tiempo que le permite cambiar lo que quiera, aquí hay un script (para su .bashrcu otro archivo de alias) para hacerlo con un comando. Esto crea una nueva versión del archivo que desea editar, abre su editor favorito con el archivo de metadatos y luego implementa sus cambios y establece el tiempo de creación / modificación del archivo PDF modificado para que sea el mismo que el original. Para usarlo, después de asignar recursos a su .bashrcarchivo, simplemente escriba

editPDFmetadata myfile.pdf

Aquí está el alias:

editPDFmetadata() {
OUTPUT="${1}-new.pdf"
METADATA="tmp${1}-report.txt"
pdftk ${1} dump_data output $METADATA
$EDITOR $METADATA
pdftk ${1} update_info $METADATA  output $OUTPUT
touch -r ${1} ${OUTPUT}
}

Simplemente coloque la definición anterior en el .bashrcarchivo en su carpeta de inicio, luego abra un nuevo terminal y estará listo para usar.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.