Parece-me que a partir da versão 1.45 (2012-12-06), o pdftk permite a modificação de marcadores através do comando update_info:
You can now add or change a PDF’s bookmarks using update_info.
via: link
Ao obter metadados de alguns arquivos PDF com marcadores por pdftk
, observo o formato de marcadores em metadados em PDF. Então, estou supondo que, com pdftk
, é possível adicionar e editar marcadores de um arquivo pdf.
Aqui estão três etapas que eu sigo:
pdftk in.pdf dump_data > in.info
. Em seguida, adiciono alguns marcadores ao arquivo de texto de metadados in.info
, alterando-o
de
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
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
pdftk
in.pdf update_info in.info output out.pdf
. Mas quando eu abro o novo arquivo pdf out.pdf
no evince ou no adobe reader, não há nenhum bookmark no novo arquivo pdf.
Se eu obtiver os metadados do novo arquivo PDF out.pdf
by pdftk out.pdf dump_data > out.info
, não haverá marcadores em out.info
. Parece que os favoritos não foram adicionados com sucesso.
Eu queria saber se existem alguns erros? Como devo adicionar e editar marcadores de um arquivo pdf, não necessariamente pelo pdftk?
Parece-me que a partir da versão 1.45 (2012-12-06), o pdftk permite a modificação de marcadores através do comando update_info:
You can now add or change a PDF’s bookmarks using update_info.
via: link
jPDFtweak (Java, então roda no Unix / Linux) pode alterar marcadores, mas eu não sei se você pode escrever qualquer coisa com isso.
Para scripts, acho que sua única opção nativa do Unix / Linux seria o pdflatex com o pacote pdfpages. Mas isso é uma curva de aprendizado se você ainda não é um usuário do LaTeX.
EDIT: Na verdade, pode ser possível com ghostscript: Veja aqui ou aqui ou aqui
Se você continuar com esses scripts unix,
pdftk
gs
do ghostscript é aceito. gs
para mesclá-los com os pdfmarks Dê uma olhada no link que 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
O pdftk é definitivamente a ferramenta certa (com a sintaxe correta):
BookmarkBegin
BookmarkTitle: Chapter 1
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: Paragraph 1.1
BookmarkLevel: 2
BookmarkPageNumber: 1
Caleb,
Pelo que entendi, os marcadores de acordo com a especificação 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 marcadores que não existem definitivamente não funcionará, pode até tornar seu PDF inconsistente ou inatingível.
Acabei usando as bibliotecas java + iText para fazer o que você está sugerindo, conforme este tutorial , mas estamos lidando com centenas de pdfs diariamente, por isso precisava ser automatizado. Se você estiver fazendo uma única vez, o Adobe Acrobat deve ser capaz de fazer isso.
Para resumir todas essas boas respostas:
Existe o projeto bmconverter no GitHub que pode converter vários formatos de marcadores PDF. Ele pode converter a saída pdftk para o formato jpdftweak, embora se você usar o jpdftweak, você não precisará converter a saída pdftk para csv, pois você pode fazer todo o trabalho de dentro do jpdftweak.
Infelizmente, os pdfmarks não são suportados pelo projeto, mas, felizmente, alguém postou um script em problemas do bmconverter que podem converter saída pdftk para pdfmarks. Então, a opção de lote ghostscript é uma opção
pdftk
formato de marcador é um pouco tedioso para escrever. Em vez disso, criei meu próprio script usando bash
, sed
, pdftk
e python3
. Confira neste repo: link
Agora eu posso criar um arquivo de texto ( bkmrks.txt
) como este, que leva apenas 5 minutos para escrever até mesmo para um pdf de 1000 páginas.
{
Title1, 1
Title2, 2
{
Subtitle1, 3
Subtitle2, 4
{
SubSubtitle1, 5
...
}
}
}
e depois use meu script
./booky.sh pdf_file.pdf bkmrks.txt
isso cria automaticamente um pdf ( pdf_file_new.pdf
) que tem meus favoritos nele.
Basta adicionar BookmarkBegin
antes de cada entrada de marcador, como em
BookmarkBegin
BookmarkTitle: Front cover
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
⋮