Jak edytować metadane pdf z wiersza poleceń?

82

Potrzebuję narzędzia wiersza polecenia do edycji metadanych plików pdf.

Używam tabletu Aiptek MyNote Premium do pisania notatek i minut na tym urządzeniu, importowania ich później i konwertowania do formatu pdf automatycznie za pomocą prostego skryptu za pomocą programu inkscape i ghostscript.

Czy jest jakieś narzędzie wiersza polecenia do dodawania niektórych kategorii do metadanych pdf, więc mogę znaleźć pdf później (np. Z gnome-do) według kategorii?

Aktualizacja: Wypróbowałem rozwiązanie z pdftk i działa, ale wygląda na to, że gnome-do nie zajmuje się metadanymi pdf. Czy istnieje sposób, aby nakłonić gnoma do zrobienia tego?

bdr529
źródło

Odpowiedzi:

100

Wypróbuj exiftool, jest on dostępny w pakiecie libimage-exiftool-perl w repozytoriach.

Na przykład, jeśli masz plik pdf o nazwie drawing.pdf i chcesz zaktualizować jego metadane, użyj narzędzia exiftool w następujący sposób:

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

Z jakiegoś powodu wprowadzony Temat kończy się w polu słów kluczowych metadanych w pliku pdf. w niektórych przypadkach nie jest to problemem, nawet pożądanym, jednak może to być problematyczne, ewince i przeglądarka metadanych nautilus nie pokazują tego, ale przeglądarka Adobe Acrobat i przeglądarka PDF-XChange to robią.

Program utworzy kopię zapasową oryginalnego pliku, jeśli nie korzystasz z; -overwrite_originalprzełącznik oznacza, że ​​duplikat będzie istniał w folderze, w którym znajduje się zaktualizowany plik pdf. Z powyższego przykładu; plik o nazwie; drawing.pdf_original zostanie utworzony.

użyj przełącznika nadpisywania na własne ryzyko, proponuję nie używać go i na wszelki wypadek skryptu, aby przenieść ten plik do lepszej lokalizacji.

Sabacon
źródło
16
Uwaga: Wszystkie zmiany metadanych są odwracalne . Chociaż normalnie byłoby to uważane za zaletę, jest to potencjalny problem bezpieczeństwa, ponieważ stare informacje nigdy nie są usuwane z pliku”.
orzechowy o natty
5
@nuttyaboutnatty, jeśli chcesz usunąć wszystkie pozostałe i nieużywane wpisy metadanych, możesz linearyzować plik PDF zaraz po przetworzeniu go za pomocą exiftool. Jest to opisane bardziej szczegółowo w tej treści Github .
Glutanimate,
9
@nuttyaboutnatty Cóż, oczywiście nie jest to wiarygodne źródło, ale tylko dlatego, że nikt nigdy nie miał czasu napisać takiego. Mogę jednak zapewnić, że metoda opisana przez autora działa. Wypróbuj to sam: 1.) Pobierz plik PDF, który zawiera niektóre tagi i „usuń” wszystkie metadane za pomocą exiftool -overwrite_original -all:all="" file.pdf; 2.) Użyj, exiftool -PDF-update:all= file.pdfaby potwierdzić, że nadal istnieją stare metadane; 3.) linearyzować plik za pomocą qpdf --linearize file.pdf; 4.) Sprawdź ponownie, tak jak w 2.); wszystkie metadane powinny zniknąć;
Glutanimate,
4
5.) Potwierdź, że plik został usunięty ze wszystkich metadanych, patrząc na słownik PDF ( pdfinfo -meta file.pdf)
Glutanimate
1
Działa świetnie. Chcę regularnie kopiować metadane z jednego pliku PDF do drugiego, w takim przypadku exiftool -overwrite_original -tagsFromFile <srcfile> <destfile>potrzebuję (opcja -overwrite_originalzastępuje oryginał <destfile>).
AstroFloyd
15

Możesz edytować metadane za pomocą pdftk. Sprawdź update_infoparametr. Jeśli chodzi o plik danych, poniżej znajduje się przykład:

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

( Źródło )

Olli
źródło
1
Ok, oznacza to, że muszę wyeksportować metadane do pliku tekstowego, edytować je i ponownie zaimportować plik tekstowy. Czy istnieje sposób bezpośredniego ustawienia pojedynczych metadanych z wiersza polecenia?
bdr529,
Być może, ale nie mogłem tego znaleźć.
Olli
pdftkwygląda na znaki Unicode w metadanych.
Ślimak mechaniczny
1
Miałem problem z użyciem pdftknowych plików PDF (nowsze wersje są szyfrowane przez AESV2). Wygląda na to, że zostało przerwane. exiftooldziałał lepiej.
s1lv3r
2
aby użyć pdftk, musisz: 1) pdftk book.pdf dump_data output report.txt2) edytować report.txt 3)pdftk book.pdf update_info report.txt output bookcopy.pdf
craq
6

Korzystanie z Widoku

Utwórz plik o nazwie „znaczniki pdf” z tą zawartością:

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

następnie połącz ten pdfmarksplik z plikiem wejściowym PDF, PS lub EPS:

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

Źródło: http://milan.kupcevic.net/ghostscript-ps-pdf/

Serge Stroobandt
źródło
0

Aby rozwinąć tę pdftkmetodę, co jest miłe, ponieważ pokazuje wszystko, co jest ustawione, a jednocześnie pozwala ci zmienić wszystko, co chcesz, oto skrypt (dla twojego .bashrclub innego pliku aliasów), aby to zrobić za pomocą jednego polecenia. Spowoduje to utworzenie nowej wersji pliku, który chcesz edytować, otworzy twój ulubiony edytor z plikiem metadanych, a następnie zaimplementuje zmiany i ustawi czas utworzenia / modyfikacji pliku w zmodyfikowanym pliku PDF na taki sam jak oryginał. Aby z niego skorzystać, po ponownym uruchomieniu .bashrcpliku, po prostu wpisz

editPDFmetadata myfile.pdf

Oto 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}
}

Po prostu umieść powyższą definicję w .bashrcpliku w folderze domowym, a następnie otwórz nowy terminal i będzie gotowy do użycia.

CPBL
źródło