Como editar metadados pdf a partir da linha de comando?

83

Eu preciso de uma ferramenta de linha de comando para editar metadados de arquivos PDF.

Estou usando um tablet Aiptek MyNote Premium para escrever minhas anotações e minutos neste dispositivo, importá-las mais tarde e convertê-las em pdf automaticamente com um script simples usando inkscape e ghostscript.

Existe alguma ferramenta de linha de comando para adicionar algumas categorias aos metadados do pdf, para que eu possa encontrar o pdf posteriormente (por exemplo, com o gnome-do) por categorias?

Atualização: Tentei a solução com o pdftk e funciona, mas parece que o gnome-do não cuida dos metadados do pdf. Existe uma maneira de fazer o gnome fazer isso?

bdr529
fonte

Respostas:

101

Experimente o exiftool, ele está disponível no pacote libimage-exiftool-perl nos repositórios.

Como exemplo, se você possui um arquivo pdf chamado drawing.pdf e deseja atualizar seus metadados, use o utilitário exiftool, desta maneira:

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

Por alguma razão, o Assunto inserido termina no campo de palavras-chave dos metadados no arquivo pdf. não é um problema em alguns casos, e mesmo desejável, no entanto, isso pode ser problemático, porque o visualizador de metadados do nautilus não mostra isso, mas o visualizador do Adobe Acrobat e do PDF-XChange o fazem.

O programa criará um backup do arquivo original se você não usar o; -overwrite_originalswitch, isso significa que haverá uma duplicata na pasta onde está o pdf atualizado. Do exemplo acima; um arquivo chamado; drawing.pdf_original será criado.

use a opção de substituição por sua conta e risco, minha sugestão é não usá-la e criar um script para mover esse arquivo para um local melhor, apenas por precaução.

Sabacon
fonte
16
Observe que: " Todas as edições de metadados são reversíveis . Embora isso normalmente seja considerado uma vantagem, é um problema de segurança em potencial porque as informações antigas nunca são realmente excluídas do arquivo".
noz sobre natty
5
@nuttyaboutnatty se você quiser limpar todas as entradas de metadados remanescentes e não usadas, poderá linearizar o arquivo PDF logo após processá-lo com exiftool. Isso é descrito em mais detalhes nesta essência do Github .
Glutanimate
9
@nuttyaboutnatty Bem, é claro que não é uma fonte autorizada, mas é apenas porque ninguém nunca teve tempo para escrever uma. No entanto, posso garantir que o método descrito pelo autor funcione. Experimente você mesmo: 1.) Pegue um PDF com algumas tags e "exclua" todos os metadados exiftool -overwrite_original -all:all="" file.pdf; 2.) Use exiftool -PDF-update:all= file.pdfpara confirmar que ainda existem metadados antigos; 3.) linearize o arquivo com qpdf --linearize file.pdf; 4.) Verifique novamente, como você fez em 2.); todos os metadados devem ter desaparecido;
precisa saber é o seguinte
4
5.) confirmar que o arquivo foi purgado de todos os metadados, olhando para o dicionário PDF ( pdfinfo -meta file.pdf)
Glutanimate
1
Funciona perfeitamente. Quero copiar regularmente os metadados de um PDF para outro. Nesse caso, exiftool -overwrite_original -tagsFromFile <srcfile> <destfile>é o que eu preciso (a opção -overwrite_originalsubstitui o original <destfile>).
AstroFloyd 22/04
15

Você pode editar os metadados usando pdftk. Confira o update_infoparâmetro. Quanto ao arquivo de dados, abaixo está um exemplo:

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

( Fonte )

Olli
fonte
1
Ok, isso significa que eu tenho que exportar os metadados para um arquivo de texto, editá-los e reimportar o arquivo de texto. Existe uma maneira de definir diretamente um único metadado na linha de comando?
bdr529
Pode haver, mas não consegui encontrar.
Olli
pdftkparece caracteres Unicode nos metadados.
Caracol mecânico
1
Eu tive algum problema ao usar pdftkem novos PDFs (as versões mais recentes são criptografadas via AESV2). Parece que foi descontinuado. exiftoolestava funcionando melhor.
S1lv3r
2
usar pdftk, o que você precisa fazer é: 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 o Ghostview

Crie um arquivo chamado "pdfmarks" com este conteúdo:

[ /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

em seguida, combine esse pdfmarksarquivo com um arquivo de entrada PDF, PS ou EPS:

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

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

Serge Stroobandt
fonte
0

Para elaborar o pdftkmétodo, o que é interessante porque mostra tudo o que está sendo definido, ao mesmo tempo em que permite alterar o que você quiser, aqui está um script (para o seu .bashrcou outro arquivo de aliases) para fazê-lo com um único comando. Isso cria uma nova versão do arquivo que você deseja editar, abre seu editor favorito com o arquivo de metadados e, em seguida, implementa suas alterações e define o tempo de criação / modificação no arquivo PDF modificado para que seja o mesmo que o original. Para usá-lo, depois de fornecer novamente o .bashrcarquivo, digite

editPDFmetadata myfile.pdf

Aqui está o 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}
}

Simplesmente coloque a definição acima no .bashrcarquivo em sua pasta pessoal, abra um novo terminal e ele estará pronto para uso.

CPBL
fonte