Mesclar anotações em PDF de dois arquivos

6

Eu tenho duas versões do mesmo documento PDF. Um deles tem anotações que fiz nele enquanto o leio no meu laptop, enquanto o outro tem anotações que fiz em um tablet. Agora quero mesclar essas anotações no mesmo arquivo.

Eu sei que o Adobe Acrobat permite que eu faça isso (veja, por exemplo, esta resposta em Pergunte diferente ). Existe algum software que eu possa usar no Ubuntu que me permita fazer isso?

Para o que vale a pena, estou usando o Xodo no tablet.

    
por becko 28.08.2017 / 09:15

1 resposta

1

Pelo menos okular armazena comentários como objetos de /Type/Annot , veja estes exemplos para a sintaxe:

17 0 obj
<<
/Type/Annot
/Rect[67.023 756.168 85.203 774.333]
/Subtype/Text
/M(D:20170828091301)
/T(■ somebody)
/Contents(■ text)
/NM(okular-{8ff65cc1-7b89-45c6-8adf-1aa6cec06cd0})
/F 4
/C[1 1 0]
/CA 0.5
/Border[0 0 1]
/P 20 0 R
>>
endobj
18 0 obj
<<
/Type/Annot
/Rect[37.7 597.841 236.675 615.979]
/Subtype/FreeText
/DA(/Invalid_font 10 Tf)
/M(D:20170828091316)
/T(■ somebody)
/Contents(■ text)
/NM(okular-{50420111-1c05-4e07-8db5-08deffb0ec7e})
/F 20
/C[1 1 0]
/CA 0.5
/Border[0 0 1]
/Q 0
/IT/FreeText
/P 20 0 R
>>
endobj

Esses objetos são vinculados a páginas usando um comando como /Annots 14 0 R , que é como esse script exclui todos os comentários em um dado arquivo pdf , ele simplesmente exclui todas as /Annots linhas:

pdftk original.pdf output uncompressed.pdf uncompress
LANG=C sed -n '/^\/Annots/!p' uncompressed.pdf > stripped.pdf
pdftk stripped.pdf output final.pdf compress

Se você mergulhar fundo na estrutura dos seus documentos pdf específicos - basta abri-los com um editor de texto -, você poderá entender o que está acontecendo e gerenciar manipular seus documentos com e. g. sed , no entanto duvido seriamente que exista uma solução que se encaixe em todos os tipos de pdf documento aqui. Por que vale a pena (pelo menos para o meu arquivo de teste) o seguinte oneliner dá-lhe os comentários de input.pdf em um terminal:

pdftk input.pdf output - uncompress | sed '/^\/Contents (/!d'

Adicione >> comments ao final dessa linha para armazenar a saída em um arquivo chamado comments .

    
por dessert 28.08.2017 / 12:02