Konwertujesz PDF na PDF / A?

11

Biorąc pod uwagę plik PDF losowego pochodzenia, jak to zrobić w systemie Linux:

  • potwierdzić, czy jest już w formacie PDF / A ?
  • jeśli nie jest w formacie PDF / A, przekonwertować go do formatu PDF / A przy minimalnej utracie wierności?

Wiem, że konwersja może spowodować utratę egzotycznych elementów dokumentu, ale załóżmy, że zdolność do otwarcia dokumentu w ogóle w stosunkowo odległej przyszłości jest ważniejsza niż takie sprytne funkcje (które mogą nie być dostępne / czytelne w takich przypadkach i tak czas). Wolę wizualnie potwierdzić dokładność konwersji, gdy mogę w trywialny sposób przeglądać dokumenty obok siebie, niż ryzykować, że nie będę mógł otworzyć oryginalnego pliku.

CVn
źródło

Odpowiedzi:

9

Identyfikacja

Znalazłem to narzędzie, które wygląda na to, czego możesz użyć do identyfikacji plików PDF / A. Nazywa się DROID (Digital Record and Object Identification) . Jest oparty na Javie i może być uruchamiany z GUI lub wiersza poleceń.

fragment

DROID to narzędzie opracowane przez The National Archives do automatycznej identyfikacji partii formatów plików. Opracowany przez Departament Ochrony Cyfrowej w ramach szeroko zakrojonych działań związanych z ochroną cyfrową, DROID został zaprojektowany, aby spełnić podstawowe wymaganie każdego cyfrowego repozytorium, aby móc dokładnie określić format wszystkich przechowywanych obiektów cyfrowych i połączyć tę identyfikację z centralnym rejestrem informacji technicznych na temat tego formatu i jego zależności.

Biorąc pod uwagę, że jest sponsorowany przez Archiwa Narodowe, zakładam, że jest to właściwe narzędzie do tego celu, biorąc pod uwagę zamierzony cel formatu PDF / A. Również projekt jest open source, a kod jest dostępny na Github, a także spakowany w formie binarnej ze strony National Archives .

Walidacja i konwersja

Jeśli szukasz narzędzia do sprawdzania poprawności i konwersji, wierzę, że PDFBox może to zrobić. PDFBox zawiera listę walidacji PDF / A na pierwszej stronie swojej witryny. To kolejna aplikacja Java 8-).

fragment strony internetowej

Walidacja PDF / A Sprawdzaj poprawność
plików PDF w stosunku do standardu ISO PDF / A.

W sekcji narzędzi wiersza poleceń po lewej stronie ich strony głównej pokazano następujące użycie narzędzia:

$ java -jar pdfbox-app-x.y.z.jar org.apache.pdfbox.ConvertColorspace [OPTIONS] <inputfile> <outputfile>

veraPDF to kolejne narzędzie do sprawdzania poprawności plików PDF / A; jest częścią zestawu narzędzi referencyjnych Open Preservation Foundation. To także aplikacja Java.

Konwersja

Do samej konwersji znalazłem tę metodę z postu na blogu zatytułowanego: Darmowy sposób konwersji istniejącego pliku PDF na PDF / A , który wykorzystuje następujące narzędzia:

  • Tylko Ghostscript 8.64.
  • PDFBox 0.7.3
  • znaczniki pdf (plik do dostarczenia dodatkowych metadanych)
  • PDFA_def.ps
  • USWebCoatedSWOP.icc

Po zastosowaniu powyższego polecenia użyj następującego polecenia:

$ gs -sDEVICE=pdfwrite -q -dNOPAUSE -dBATCH -dNOSAFER     \
-dPDFA -dUseCIEColor -sProcessColorModel=DeviceCMYK       \
-sOutputFile=Out_PDFA.pdf PDFA_def.ps pdfmarks IN_PDF.pdf

Nie jest bez brodawek. W artykule omówiono jeden z nich, naprawiając flagi drukowania na hiperłączach jako jednym z nich. Artykuł zawiera aplikację Java, której można użyć do naprawy tych:

$ java FixPrintFlag Out_PDFA.pdf New_verifiablePDFA.pdf

Nie jest ładny, ale wydaje się wykonalny. Zobacz artykuł, aby uzyskać więcej informacji.

Bibliografia

slm
źródło
Będę musiał spróbować - wygląda strasznie obiecująco. Przy odrobinie majstrowania może być nawet możliwe zintegrowanie tego z drukarką CUPS-PDF; w /etc/cups/cups-pdf.conf są ustawienia, które wyglądają obiecująco w tym celu. Dzięki za poświęcenie czasu! Nie bardzo teraz testuję, ale wrócę do tego (mam nadzieję, że jutro).
CVn
@ MichaelKjörling - dzięki za pytanie. Nigdy wcześniej nie słyszałem o formacie PDF / A i potrzebujemy tego dokładnie w pracy. Więc pomogłeś mi wyglądać jak geniusz, że wiem o tym teraz 8-).
slm
Co jest pdfmarks?
Andrew
1

W celu identyfikacji pliku polecenie filejest często pomocne. Przeszukuje twój plik w poszukiwaniu magicznych liczb, identyfikatorów plików, informacji o kodowaniu itp., Aby podać wszelkie przydatne informacje, jakie może.

W szczególnym przypadku plików PDF narzędzie pdfinfojest szczególnie przydatne. W moim przypadku jest to dystrybucja Gentoo, popplerbiblioteka do renderowania plików PDF.

lgeorget
źródło
1
pdfinfo -metai patrząc na to xmpmeta/RDF/Description/conformancewydaje się mówić, czy PDF jest PDF / A (ten węzeł jest A), czy nie (węzeł nie istnieje lub ma inną wartość). To poczatek!
CVn
0

Oto skrypt wiersza poleceń bash, który właśnie to robi:

#!/bin/bash

pdf_input=$1
ps_output=${pdf_input%.*}.ps
pdfa_output=${pdf_input%.*}_a.pdf
pdftops $input $ps_output

gs -dPDFA -dBATCH -dNOPAUSE -dNOOUTERSAVE -dUseCIEColor -sProcessColorModel=DeviceCMYK -sDEVICE=pdfwrite -sPDFACompatibilityPolicy=1 -sOutputFile=$pdfa_output $ps_output

Zapisz go w pliku o nazwie pdf2pdfa.sh, który znajduje się na twojej ścieżce, a następnie wywołaj go w następujący sposób:

pdf2pdfa.sh input.pdf

Utworzy input_a.pdf.

daruma
źródło
2
(1) Proszę wyjaśnić, co to robi. (2) Co to jest input? Rozumiem pdf_input, ale co to jest input? (3) Zawsze powinieneś cytować zmienne powłoki, chyba że masz dobry powód, aby tego nie robić i jesteś pewien, że wiesz, co robisz. Proszę nie odpowiadać w komentarzach; edytuj  swoją odpowiedź, aby była jaśniejsza i bardziej kompletna.
G-Man mówi „Przywróć Monikę”