我有一个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
字典,我看不到工作数据和非工作数据之间的结构差异。类型为string。其他键/对也包括在内,并在元数据中显示,不会出现问题。你知道吗
奇怪的是,这是固定的进一步文本处理。你知道吗
在字符串声明的末尾使用
capitalize()
方法是有效的。你知道吗或者,我也可以通过在声明
title
之后删除以os.path.splitext()
结尾的文件来获得相同的结果。你知道吗不知道原来的字符串出了什么问题,但是CoreGraphics的神现在满意了。你知道吗
相关问题 更多 >
编程相关推荐