Tôi đang cố gắng để viết metadata vào một tập tin pdf sử dụng mã python sau:Viết siêu dữ liệu để một pdf sử dụng PyObjC
from Foundation import *
from Quartz import *
url = NSURL.fileURLWithPath_("test.pdf")
pdfdoc = PDFDocument.alloc().initWithURL_(url)
assert pdfdoc, "failed to create document"
print "reading pdf file"
attrs = {}
attrs[PDFDocumentTitleAttribute] = "THIS IS THE TITLE"
attrs[PDFDocumentAuthorAttribute] = "A. Author and B. Author"
PDFDocumentTitleAttribute = "test"
pdfdoc.setDocumentAttributes_(attrs)
pdfdoc.writeToFile_("mynewfile.pdf")
print "pdf made"
Điều này dường như làm việc tốt (không có lỗi đến an ủi), tuy nhiên khi tôi kiểm tra các siêu dữ liệu của tập tin nó là như sau:
PdfID0:
242b7e252f1d3fdd89b35751b3f72d3
PdfID1:
242b7e252f1d3fdd89b35751b3f72d3
NumberOfPages: 4
và các tập tin ban đầu đã có siêu dữ liệu sau:
InfoKey: Creator
InfoValue: PScript5.dll Version 5.2.2
InfoKey: Title
InfoValue: Microsoft Word - PROGRESS ON THE GABION HOUSE Compressed.doc
InfoKey: Producer
InfoValue: GPL Ghostscript 8.15
InfoKey: Author
InfoValue: PWK
InfoKey: ModDate
InfoValue: D:20101021193627-05'00'
InfoKey: CreationDate
InfoValue: D:20101008152350Z
PdfID0: d5fd6d3960122ba72117db6c4d46cefa
PdfID1: 24bade63285c641b11a8248ada9f19
NumberOfPages: 4
Vì vậy, vấn đề là, nó không phụ thêm siêu dữ liệu, và nó đang xóa cấu trúc siêu dữ liệu trước đó. Tôi cần làm gì để làm việc này? Mục tiêu của tôi là thêm siêu dữ liệu tham chiếu đến các hệ thống quản lý có thể nhập.
Cảm ơn câu trả lời, Tamás. Chỉ một câu hỏi, tôi có thể tìm thấy các thuộc tính khác ở đâu? Tôi đang cố gắng mã hóa siêu dữ liệu từ tệp .bib với các tệp PDF và tôi không biết liệu có bất kỳ giới hạn nào về những gì tôi có thể lưu trữ hay không. – djq
Chỉ cần tra cứu chúng trong tài liệu của PDFKit trên trang chủ của Apple; danh sách các hằng số bạn đang tìm kiếm ở đây (xin lỗi vì liên kết dài): http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/QuartzFramework/Classes/PDFDocument_Class/Reference/Reference.html % 23 // apple_ref/doc/uid/TP40003873. Tìm phần Constants và "Document Attribute Keys" bên trong nó. –
Tôi đã hơi chậm khi thử mã này - nhưng tôi không thể chạy nó vượt quá dòng. Có phiên bản nào cụ thể về không? –
djq