Ao obter metadados de alguns arquivos pdf com marcadores pdftk
, observo o formato dos marcadores nos metadados pdf. Então, eu acho que com pdftk
isso, é possível adicionar e editar marcadores de um arquivo pdf.
Aqui estão três etapas que eu sigo:
- Em primeiro lugar, recebo os metadados (incluindo os favoritos, se houver) de um arquivo pdf em um arquivo de texto
pdftk in.pdf dump_data > in.info
. Em seguida, adiciono alguns favoritos ao arquivo de texto de metadados
in.info
, alterando-o 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
para
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
- Então tento colocar os metadados editados de volta no arquivo pdf por
pdftk in.pdf update_info in.info output out.pdf
.
Mas quando abro o novo arquivo pdf out.pdf
no evince ou no adobe reader, não há nenhum marcador no novo arquivo pdf.
Se eu conseguir os metadados do novo arquivo pdf out.pdf
por pdftk out.pdf dump_data > out.info
, não haverá fichas no out.info
. Parece que os favoritos não foram adicionados com sucesso.
Fiquei me perguntando se existem alguns erros? Como devo adicionar e editar os favoritos de um arquivo pdf, não necessariamente pelo pdftk?
Respostas:
Parece-me que da versão 1.45 (06-12-2012), o pdftk permite a modificação de indicadores por meio do comando update_info:
via: http://www.pdflabs.com/docs/pdftk-version-history/
fonte
BookmarkBegin
tags antes que cada entrada de marcador esteja ausente.O jPDFtweak (Java, portanto, é executado no Unix / Linux) pode alterar os favoritos, mas não sei se você pode criar um script com ele.
Para scripts, eu acho que sua única opção nativa Unix / Linux seria pdflatex com o pacote pdfpages. Mas essa é uma curva de aprendizado se você ainda não é usuário do LaTeX.
EDIT: Na verdade, pode ser possível com o ghostscript: Veja aqui ou aqui ou aqui
fonte
Se você ainda se apegar a esses scripts unix, então
pdftk
gs
é aceito.gs
script para mesclá-los com o pdfmarksDê uma olhada em http://blog.tremily.us/posts/PDF_bookmarks_with_Ghostscript/, o script
pdf-merge.py
faz exatamente o que você (ou eu) deseja.pdf-merge.py --output=merged.pdf input1.pdf input2.pdf
Algumas pequenas melhorias podem ser feitas em seu script
De qualquer forma, deve funcionar
fonte
O pdftk é definitivamente a ferramenta certa (com a sintaxe correta):
fonte
Caleb,
Tanto quanto eu entendo, os favoritos de acordo com as especificações do PDF não podem ser injetados por meio de uma ferramenta de diagnóstico como
pdftk
. Atualizar os metadados para se referir a capítulos e âncoras de aterrissagem de marcadores que não existem definitivamente não funcionará, pode até tornar seu PDF inconsistente ou não aberto.Acabei usando as bibliotecas java + iText para fazer o que você está sugerindo, de acordo com este tutorial , mas estamos lidando com centenas de pdfs diariamente, por isso precisava ser automatizado. Se você estiver realizando uma única ação, o Adobe Acrobat deverá conseguir fazer isso.
fonte
Para resumir todas essas boas respostas:
Há um projeto bmconverter no GitHub que pode converter vários formatos de favoritos em PDF. Ele pode converter a saída do pdftk para o formato jpdftweak, embora se você usar o jpdftweak, não será necessário converter a saída do pdftk para o csv, pois você pode fazer todo o trabalho no jpdftweak.
Infelizmente, o pdfmarks não é suportado pelo projeto, mas, felizmente, alguém postou um script nos problemas do bmconverter que podem converter a saída do pdftk em pdfmarks. A opção de lote ghostscript é uma opção
fonte
pdftk
formato de marcador é um pouco tedioso para escrever. Em vez disso eu criei o meu próprio script usandobash
,sed
,pdftk
epython3
. Confira neste repositório: https://github.com/SiddharthPant/bookyEntão agora eu posso criar um arquivo de texto (
bkmrks.txt
) como este, que leva apenas 5 minutos para escrever, mesmo para um pdf de 1000 páginas.e depois usar meu script
isso cria automaticamente um pdf (
pdf_file_new.pdf
) que contém meus favoritos.fonte
Basta adicionar
BookmarkBegin
antes de cada entrada de marcador, como emfonte
O redirecionamento usado na etapa 1 fará com que o update_info não funcione corretamente. Você precisa especificar o arquivo de saída para pdftk:
Veja esta resposta de uma pergunta semelhante: /programming//a/30308964/3158933
Os arquivos que eu criei usando um redirecionamento têm um tamanho de arquivo um pouco maior e fazem com que o pdftk emita uma mensagem "Aviso: caso inesperado 1 em LoadDataFile (); continuação" ao executar o comando update_info.
fonte