Làm cách nào để chỉnh sửa siêu dữ liệu pdf từ dòng lệnh?


83

Tôi cần một công cụ dòng lệnh để chỉnh sửa siêu dữ liệu của các tệp pdf.

Tôi đang sử dụng máy tính bảng Aiptek MyNote Premium để viết ghi chú và phút trên thiết bị này, nhập chúng sau và tự động chuyển chúng sang pdf với một tập lệnh đơn giản sử dụng inkscape và ghostscript.

Có công cụ dòng lệnh nào để thêm một số danh mục vào siêu dữ liệu của pdf không, vì vậy tôi có thể tìm pdf sau (ví dụ với gnome-do) theo danh mục?

Cập nhật: Tôi đã thử giải pháp với pdftk và nó hoạt động, nhưng có vẻ như gnome-do không quan tâm đến siêu dữ liệu pdf. Có cách nào để gnome-do làm điều đó không?

Câu trả lời:


101

Hãy dùng thử exiftool, nó có sẵn từ gói libimage-exiftool-perl trong kho.

Ví dụ: Nếu bạn có tệp pdf có tên draw.pdf và bạn muốn cập nhật siêu dữ liệu của nó, hãy sử dụng tiện ích, exiftool, theo cách này:

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

Vì một số lý do, Chủ đề được nhập kết thúc trong trường từ khóa của siêu dữ liệu trong tệp pdf. không phải là vấn đề trong một số trường hợp, thậm chí là mong muốn, tuy nhiên, điều này có thể có vấn đề, chứng minh và trình xem trước siêu dữ liệu nautilus không hiển thị điều này nhưng trình xem Adobe Acrobat và trình xem PDF-XChange thì có.

Chương trình sẽ tạo một bản sao lưu của tệp gốc nếu bạn không sử dụng; -overwrite_originalchuyển đổi, điều này có nghĩa là một bản sao sẽ tồn tại trong thư mục chứa pdf được cập nhật. Từ ví dụ trên; một tập tin có tên; draw.pdf_origen sẽ được tạo.

sử dụng công tắc ghi đè có nguy cơ của riêng bạn, đề nghị của tôi là không sử dụng nó và kịch bản một cái gì đó để di chuyển tệp này đến một vị trí tốt hơn chỉ trong trường hợp.


16
Lưu ý rằng: " Tất cả các chỉnh sửa siêu dữ liệu đều có thể đảo ngược . Mặc dù điều này thường được coi là một lợi thế, nhưng đây là một vấn đề bảo mật tiềm ẩn vì thông tin cũ không bao giờ thực sự bị xóa khỏi tệp."
hấp dẫn về natty

5
@nuttyaboutnatty nếu bạn muốn xóa tất cả các mục siêu dữ liệu còn sót lại và chưa sử dụng, bạn có thể tuyến tính hóa tệp PDF ngay sau khi xử lý nó bằng exiftool. Điều này được mô tả chi tiết hơn trong ý chính Github này .
Glutimate

9
@nuttyaboutnatty Chà, tất nhiên đó không phải là một nguồn có thẩm quyền mà chỉ vì không ai từng dành thời gian để viết. Tuy nhiên, tôi có thể đảm bảo rằng phương pháp được mô tả bởi tác giả. Hãy tự mình thử: 1.) Lấy một tệp PDF có một số thẻ và "xóa" tất cả siêu dữ liệu với exiftool -overwrite_original -all:all="" file.pdf; 2.) Sử dụng exiftool -PDF-update:all= file.pdfđể xác nhận rằng vẫn còn siêu dữ liệu cũ; 3.) tuyến tính hóa tập tin với qpdf --linearize file.pdf; 4.) Kiểm tra lại, giống như bạn đã làm trong 2.); tất cả siêu dữ liệu nên biến mất;
Glutimate

4
5.) xác nhận rằng tệp đã bị xóa tất cả siêu dữ liệu bằng cách xem từ điển PDF ( pdfinfo -meta file.pdf)
Glutimate

1
Hoạt động hoàn hảo. Tôi thường xuyên muốn sao chép siêu dữ liệu từ tệp PDF này sang tệp PDF khác, trong trường hợp đó exiftool -overwrite_original -tagsFromFile <srcfile> <destfile>là thứ tôi cần (tùy chọn -overwrite_originalghi đè lên bản gốc <destfile>).
AstroFloyd

15

Bạn có thể chỉnh sửa siêu dữ liệu bằng cách sử dụng pdftk. Kiểm tra update_infotham số. Đối với tệp dữ liệu, dưới đây là một ví dụ:

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

( Nguồn )


1
Ok, điều này có nghĩa là tôi phải xuất siêu dữ liệu sang tệp văn bản, chỉnh sửa chúng và nhập lại tệp văn bản. Có cách nào để đặt trực tiếp một siêu dữ liệu từ dòng lệnh không?
bdr529

Có thể có, nhưng tôi không thể tìm thấy nó.
Olli

pdftkdường như các ký tự Unicode trong siêu dữ liệu.
Ốc cơ khí

1
Tôi gặp một số vấn đề khi sử dụng pdftktrên các tệp pdf mới (các phiên bản mới hơn được mã hóa qua AESV2). Có vẻ như nó đã ngừng. exiftoolđã làm việc tốt hơn
s1lv3r

2
để sử dụng pdftk, điều bạn cần làm là: 1) pdftk book.pdf dump_data output report.txt2) chỉnh sửa pdftk book.pdf update_info report.txt output bookcopy.pdf
báo cáo.txt

6

Sử dụng Ghostview

Tạo một tệp có tên là pdf pdfmark với nội dung này:

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

sau đó kết hợp pdfmarkstệp này với tệp đầu vào PDF, PS hoặc EPS:

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

Nguồn: http://milan.kupcevic.net/ghostscript-ps-pdf/


0

Để giải thích pdftkphương pháp này rất hay vì nó hiển thị cho bạn mọi thứ đang được đặt, đồng thời cho phép bạn thay đổi bất cứ điều gì bạn thích, đây là một tập lệnh (cho .bashrctệp bí danh của bạn hoặc các bí danh khác) để thực hiện bằng một lệnh. Điều này tạo ra một phiên bản mới của tệp bạn muốn chỉnh sửa, mở trình soạn thảo yêu thích của bạn bằng metadatafile, sau đó thực hiện các thay đổi của bạn và đặt thời gian tạo / sửa đổi tệp trên tệp PDF đã sửa đổi giống như bản gốc. Để sử dụng nó, sau khi cung cấp lại .bashrctệp của bạn , chỉ cần gõ

editPDFmetadata myfile.pdf

Đây là bí danh:

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

Chỉ cần đặt định nghĩa ở trên vào .bashrctệp trong thư mục nhà của bạn, sau đó mở một thiết bị đầu cuối mới và nó sẽ sẵn sàng để sử dụng.

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.