Al obtener metadatos de algunos archivos pdf con marcadores pdftk
, observo el formato de los marcadores en metadatos pdf. Así que supongo que con pdftk
, es posible agregar y editar marcadores de un archivo pdf.
Aquí hay tres pasos que sigo:
- En primer lugar, obtengo los metadatos (incluidos los marcadores si los hay) de un archivo pdf a un archivo de texto
pdftk in.pdf dump_data > in.info
. A continuación, agrego algunos marcadores en el archivo de texto de metadatos
in.info
, cambiándolo deInfoKey: Creator InfoValue: PScript5.dll Version 5.2 InfoKey: Title InfoValue: SSReader Print. InfoKey: Producer InfoValue: Acrobat Distiller 7.0 (Windows) InfoKey: Author InfoValue: Administrator InfoKey: ModDate InfoValue: D:20050605073244+08'00' InfoKey: CreationDate InfoValue: D:20050605073244+08'00' PdfID0: 591a87c91dc76881fdf2ccf3811e72a5 PdfID1: 6b6ab11de8824e438e4f5eb1d85ec72 NumberOfPages: 400 PageLabelNewIndex: 1 PageLabelStart: 1 PageLabelNumStyle: DecimalArabicNumerals
a
InfoKey: Creator InfoValue: PScript5.dll Version 5.2 InfoKey: Title InfoValue: SSReader Print. InfoKey: Producer InfoValue: Acrobat Distiller 7.0 (Windows) InfoKey: Author InfoValue: Administrator InfoKey: ModDate InfoValue: D:20050605073244+08'00' InfoKey: CreationDate InfoValue: D:20050605073244+08'00' PdfID0: 591a87c91dc76881fdf2ccf3811e72a5 PdfID1: 6b6ab11de8824e438e4f5eb1d85ec72 NumberOfPages: 400 BookmarkBegin BookmarkTitle: Front cover BookmarkLevel: 1 BookmarkPageNumber: 1 BookmarkBegin BookmarkTitle: About the Author BookmarkLevel: 1 BookmarkPageNumber: 5 BookmarkBegin BookmarkTitle: Title page BookmarkLevel: 1 BookmarkPageNumber: 6 BookmarkBegin BookmarkTitle: Copyright page BookmarkLevel: 1 BookmarkPageNumber: 7 BookmarkBegin BookmarkTitle: Foreword BookmarkLevel: 1 PageLabelNewIndex: 1 PageLabelStart: 1 PageLabelNumStyle: DecimalArabicNumerals
- Luego trato de volver a colocar los metadatos editados en el archivo pdf
pdftk in.pdf update_info in.info output out.pdf
.
Pero cuando abro el nuevo archivo pdf out.pdf
en evince o adobe reader, no hay ningún marcador en el nuevo archivo pdf.
Si consigo los metadatos del archivo PDF out.pdf
mediante pdftk out.pdf dump_data > out.info
, no habrá marcadores en out.info
. Parece que los marcadores no se agregaron correctamente.
Me preguntaba si hay algunos errores? ¿Cómo debo agregar y editar marcadores de un archivo pdf, no necesariamente por pdftk?
Respuestas:
Me parece que desde la versión 1.45 (2012-12-06), pdftk permite la modificación de marcadores a través del comando update_info:
vía: http://www.pdflabs.com/docs/pdftk-version-history/
fuente
BookmarkBegin
etiquetas antes de que falte cada entrada de marcador.jPDFtweak (Java, por lo que se ejecuta en Unix / Linux) puede alterar los marcadores, pero no sé si puede escribir algo con él.
Para las secuencias de comandos, supongo que su única opción nativa de Unix / Linux sería pdflatex con el paquete pdfpages. Pero esa es una curva de aprendizaje si aún no es usuario de LaTeX.
EDITAR: en realidad puede ser posible con ghostscript: ver aquí o aquí o aquí
fuente
Si todavía te quedas con esos scripts de Unix, entonces
pdftk
gs
.gs
script para fusionarlos con pdfmarksEche un vistazo a http://blog.tremily.us/posts/PDF_bookmarks_with_Ghostscript/ el script
pdf-merge.py
hace exactamente lo que usted (o yo) quiere.pdf-merge.py --output=merged.pdf input1.pdf input2.pdf
Se podrían hacer algunas mejoras menores en su guión.
De todos modos, debería funcionar
fuente
pdftk es definitivamente la herramienta correcta (con la sintaxis correcta):
fuente
Caleb
Según tengo entendido, los marcadores según la especificación de PDF no se pueden inyectar a través de una herramienta de diagnóstico como
pdftk
. La actualización de los metadatos para referirse a capítulos y anclajes de aterrizaje de marcadores que no existen definitivamente no funcionará, incluso puede hacer que su PDF sea inconsistente o no se pueda abrir.Terminé usando las bibliotecas java + iText para hacer lo que sugieres según este tutorial , pero estamos lidiando con cientos de archivos PDF a diario, por lo que era necesario automatizarlos. Si está haciendo una única vez, Adobe Acrobat debería poder hacerlo.
fuente
Para resumir todas estas buenas respuestas:
Hay un proyecto de bmconverter en GitHub que puede convertir varios formatos de marcadores PDF. Puede convertir la salida de pdftk a formato jpdftweak, aunque si va a usar jpdftweak, no necesitará convertir la salida de pdftk a csv, ya que puede hacer todo el trabajo desde jpdftweak.
Desafortunadamente, pdfmarks no es compatible con el proyecto, pero afortunadamente alguien publicó un script en problemas de bmconverter que puede convertir la salida de pdftk a pdfmarks. Entonces, la opción de lote de ghostscript es una opción
fuente
pdftk
el formato de marcador es un poco tedioso de escribir. En lugar de ello he creado mi propia secuencia de comandos conbash
,sed
,pdftk
ypython3
. Compruébelo en este repositorio: https://github.com/SiddharthPant/bookyAsí que ahora puedo crear un archivo de texto (
bkmrks.txt
) como este que toma solo 5 minutos para escribir incluso para un pdf de 1000 páginas.y luego uso mi script
esto crea automáticamente un pdf (
pdf_file_new.pdf
) que tiene mis marcadores en él.fuente
Simplemente agregue
BookmarkBegin
antes de cada entrada de marcador, como enfuente
La redirección que usó en el paso 1 hará que update_info no funcione correctamente. En su lugar, debe especificar el archivo de salida para pdftk:
Vea esta respuesta de una pregunta similar: /programming//a/30308964/3158933
Los archivos que creé usando una redirección tienen un tamaño de archivo ligeramente mayor y hacen que pdftk emita un mensaje de "Advertencia: caso inesperado 1 en LoadDataFile (); continua" cuando ejecuta el comando update_info.
fuente