我正在编写一个脚本,它将 PDF 元数据添加到 PDF 列表中。
我的问题是处理名称中包含某些字符的 PDF——在我尝试的示例中,名称中有一个“短划线”,但我确定将来(我不控制这些文件名) 还会有其他类似的问题。
我正在使用pdfrw
Python 2.7。目前我有:
from pdfrw import PdfReader,PdfWriter
from os import listdir
def get_files(pwy):
tr_files=listdir(pwy)
tr_files2=[]
for t in tr_files:
tr_files2.append(pwy+'/'+t)
return tr_files2
def add_keywords(filename,keywords):
writer=PdfWriter()
trailer=PdfReader(filename)
trailer.Info.Keywords=keywords
writer.trailer=trailer
writer.write(filename)
file_list=get_files('C:/example_folder')
for f in file_list:
add_keywords(f,'some exciting metadata!')
这适用于没有“破折号”的文件。带有“破折号”的文件显示它在我运行它时已被修改,但是当我在 Adobe Acrobat 中检查元数据时,那里什么也没有。
我很确定这是某种编码问题。由于它将“破折号”显示为x\96
,因此它必须使用 cp1252。我正在使用 Spyder 2.3.1,并且在我的脚本顶部有 # - - coding: utf-8 - -。
我通读了The Absolute Minimum Every Softward Developer Absolutely, Positively Must Know About Unicode and Character Sets and Pragmatic Unicode,我知道,一般来说,我想解码输入,运行其余代码(上面没有打印,但我使用从数据库中提取信息的文件名,然后格式化该信息并希望将结果字符串放入元数据中),然后再次对其进行编码。但我一直无法弄清楚任何有效的方法。
我认为解决方案将是以下之一:
[最佳] 正确处理编码问题。
在子文件夹上运行某种批处理文件,将文件重命名为脚本可以处理的名称,然后在最后反转名称(它们需要以原始文件名结尾)。
我很感激任何帮助!我一直找不到任何有效的方法。