Cách tạo ghostscript không xóa siêu dữ liệu PDF


10

Ghostscript xóa sạch siêu dữ liệu PDF như author, title, subjectv.v ... Làm thế nào tôi có thể bảo ghostscript không chạm vào siêu dữ liệu? Tôi gọi nó như sau:

gs \
  -dBATCH                    \
  -dNOPAUSE                  \
  -sOutputFile=<output_file> \
  -sDEVICE=pdfwrite          \
  -dPDFSETTINGS=/ebook       \
  <input_file>

Tại sao bạn sử dụng Ghostscript? Có lẽ có một cách khác để làm bất cứ điều gì bạn đang làm. Việc sử dụng Ghostscript là không phổ biến khi đầu vào không phải là tệp Postcript.
Gilles 'SO- ngừng trở nên xấu xa'

3
@Gilles Để lấy mẫu hình ảnh trong PDF và do đó giảm kích thước. Tôi không nghĩ việc sử dụng PDF làm đầu vào là không phổ biến. Công cụ này pdf2psví dụ sử dụng ghostscript để chuyển đổi và được vận chuyển cùng với gs.
Marco

Ok, Ghostscript dường như là cách thông thường để hạ thấp hình ảnh trong tệp PDF, các công cụ thao tác PDF gốc nguồn mở dường như thiếu về vấn đề đó. Đó hoặc ImageMagick, chỉ nhìn vào hình ảnh và không quan tâm đến siêu dữ liệu PDF.
Gilles 'SO- ngừng trở nên xấu xa'

2
ImageMagick sử dụng ghostscript để xử lý các tệp PDF.
Marco

@Gilles: "Không phổ biến khi sử dụng Ghostscript khi đầu vào không phải là tệp Postcript." - Không hề, Gilles! Tôi sử dụng nó mọi lúc, mỗi ngày để làm PDF-> xử lý PDF.
Kurt Pfeifle

Câu trả lời:


6

Rõ ràng không thể giữ siêu dữ liệu PDF khi sử dụng ghostscript. Đây là một cách giải quyết đầu tiên lưu siêu dữ liệu vào một tệp bằng cách sử dụng pdftk, sau đó nén tệp ghostscript và cuối cùng ghi lại siêu dữ liệu cũng sử dụng 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"

Chỉnh sửa: Đây là một lỗi trong ghostscript, xem báo cáo Lỗixác nhận rằng điều này không được phép xảy ra .


pdftks dump_data (_utf8) thực sự xuất nhãn Trung Quốc. Tôi cũng không thể tìm thấy một diễn đàn cho pdftk :(
Stefan K.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.