Марк находится на правильном пути, но есть несколько особенностей, которые следует учитывать.
Во-первых, он прав, что pdfdoc.documentAttributes
- это NSDictionary
, который содержит метаданные документа.Вы хотели бы изменить это, но учтите, что documentAttributes
дает вам NSDictionary
, который является неизменным.Вы должны преобразовать его в NSMutableDictionary
следующим образом:
attrs = NSMutableDictionary.alloc().initWithDictionary_(pdfDoc.documentAttributes())
Теперь вы можете изменить attrs
, как вы сделали.Нет необходимости писать PDFDocument.PDFDocumentTitleAttribute
, как предположил Марк, что он не будет работать, PDFDocumentTitleAttribute
объявлен как константа уровня модуля, так что просто сделайте, как вы делали в своем собственном коде.
Здесьэто полный код, который работает для меня:
from Foundation import *
from Quartz import *
url = NSURL.fileURLWithPath_("test.pdf")
pdfdoc = PDFDocument.alloc().initWithURL_(url)
attrs = NSMutableDictionary.alloc().initWithDictionary_(pdfdoc.documentAttributes())
attrs[PDFDocumentTitleAttribute] = "THIS IS THE TITLE"
attrs[PDFDocumentAuthorAttribute] = "A. Author and B. Author"
pdfdoc.setDocumentAttributes_(attrs)
pdfdoc.writeToFile_("mynewfile.pdf")