У меня есть скрипт MacOS PyObjC, который получает имя файла PDF и добавляет его в качестве метаданных заголовка к самому PDF.
Я использую пару ключ / переменная kCGPDFContextTitle
и title
,который входит в словарь метаданных.
Если я определю title
как полный путь к файлу, взятый из sys.argv
, тогда это значение правильно появится в метаданных PDF.
Если я определю title
как данную строку,это работает.
Если я определю title
как os.path.basename(filename)
, то он не появится в метаданных.
Пробелы в имени файла не имеют значения.Соответствующий код:
def setMetadata(filename):
options = {}
title = os.path.basename(filename)
titleKey = Quartz.kCGPDFContextTitle
pdfURL = NSURL.fileURLWithPath_(filename)
pdfDoc = Quartz.PDFDocument.alloc().initWithURL_(pdfURL)
options[titleKey] = title
pdfDoc.writeToFile_withOptions_(filename, options)
if __name__ == "__main__":
for filename in sys.argv[1:]:
setMetadata(filename)
Если я print()
словарь options
, я не вижу структурных различий между рабочими данными и нерабочими данными.Тип является строкой.Другие ключи / пары включены и отображаются в метаданных без проблем.