Jak sprawić, aby ghostscript nie czyścił metadanych PDF

10

Ghostscript usuwa metadane w formacie PDF, author, title, subjectitp. Jak mogę powiedzieć ghostscriptowi, aby nie dotykał metadanych? Wzywam to w następujący sposób:

gs \
  -dBATCH                    \
  -dNOPAUSE                  \
  -sOutputFile=<output_file> \
  -sDEVICE=pdfwrite          \
  -dPDFSETTINGS=/ebook       \
  <input_file>
Marco
źródło
Dlaczego korzystasz z Ghostscript? Prawdopodobnie jest inny sposób na robienie tego, co robisz. Używanie Ghostscript jest rzadkością, gdy dane wejściowe nie są plikiem Postscript.
Gilles „SO- przestań być zły”
3
@Gilles Aby pobrać próbki obrazów w formacie PDF i zmniejszyć ich rozmiar. Nie wydaje mi się, aby używanie plików PDF jako danych wejściowych było rzadkością. Narzędzie pdf2pswykorzystuje np. Ghostscript do konwersji i jest wysyłany razem z gs.
Marco,
Ok, Ghostscript wydaje się być zwykłym sposobem na próbkowanie w dół obrazów w pliku PDF, wydaje się, że brakuje w tym zakresie natywnych narzędzi do manipulacji PDF. That lub ImageMagick, który patrzy tylko na obrazy i nie przejmuje się metadanymi PDF.
Gilles 'SO - przestań być zły'
2
ImageMagick używa ghostscript do przetwarzania plików PDF.
Marco,
@Gilles: „Rzadko używa się Ghostscript, gdy dane wejściowe nie są plikiem Postscript”. - Wcale nie, Gilles! Używam go cały czas, codziennie do przetwarzania PDF-> PDF.
Kurt Pfeifle

Odpowiedzi:

6

Najwyraźniej nie można zachować metadanych PDF podczas korzystania z ghostscript. Oto obejście, które najpierw zapisuje metadane do pliku za pomocą pdftk, a następnie kompresuje plik ghostscript i na koniec zapisuje metadane również za pomocą pdftk.

INPUTPDF=<input_file>
OUTPUTPDF=<output_file>
TMPPDF=$(mktemp)
METADATA=$(mktemp)

# save metadata
pdftk "$INPUTPDF" dump_data_utf8 > "$METADATA"

# compress
gs                       \
  -q                     \
  -sOutputFile="$TMPPDF" \
  -sDEVICE=pdfwrite      \
  -dNOPAUSE              \
  -dBATCH                \
  -dPDFSETTINGS=/ebook   \
  "$INPUTPDF"

# restore metadata
pdftk "$TMPPDF" update_info_utf8 "$METADATA" output "$OUTPUTPDF"

# clean up
rm -f "$TMPPDF" "$METADATA"

Edycja: To jest błąd w ghostscript, zobacz Raport o błędzie i potwierdzenie, że tak się nie stanie .

Marco
źródło
pdftks dump_data (_utf8) dosłownie wyświetla chińskie etykiety. Nie mogłem znaleźć forum dla pdftk :(
Stefan K.