-1

我正在尝试批量标记许多 pdf 文件,我在 github 上发现了一些非常相似的东西,但是您必须在脚本中命名每个文件以与实际的 pdf 文件匹配才能正常工作。

https://github.com/iprapas/pythonpdf

def stamp_pdf(input_path, stamp_path, output_path, add_frame=False):
    output = PdfFileWriter()
    create_pdf_stamp(stamp_path, add_frame=add_frame)
    pdf_in = PdfFileReader(open(input_path, 'rb'))
    pdf_stamp = PdfFileReader(open(stamp_path, 'rb'))
    stamp = pdf_stamp.getPage(0)

    for i in xrange(pdf_in.getNumPages()):
        page = pdf_in.getPage(i)
        page.mergePage(stamp)
        output.addPage(page)

    with open(output_path, 'wb') as f:
        output.write(f)

def main():
    stamp_pdf('../input/input1.pdf', '../temp/tmp_stamp.pdf', '../output/stamped1.pdf')
    stamp_pdf('../input/input1.pdf', '../temp/tmp_stamp.pdf', '../output/stamped1_with_frame.pdf', add_frame=True)
    stamp_pdf('../input/input2.pdf', '../temp/tmp_stamp.pdf', '../output/stamped2.pdf')
    stamp_pdf('../input/input2.pdf', '../temp/tmp_stamp.pdf', '../output/stamped2_with_frame.pdf', add_frame=True)

if __name__ == "__main__":

main()

我确信有一种方法可以替换单个文件链接,以便它直接指向目录并保留文件名。任何让我开始的指针将不胜感激,因为我一直在尝试各种代码,但运气不佳。

4

1 回答 1

1

使用pathlib轻松访问和管理路径和文件名


例子:

from pathlib import Path

p = Path.cwd()
print(p)
>>> WindowsPath('E:/PythonProjects/DataCamp')

pdf_files = list(p.glob('*.pdf'))
print(pdf_files)
>>> [WindowsPath('E:/PythonProjects/DataCamp/aapl.pdf')]

pdf_name = pdf_files[0].name
print(pdf_name)
>>> 'aapl.pdf'
  • 使用glob方法查找所有pdf文件,包括子目录,带**通配符
    • p.glob('**/*.pdf')
  • 用于name获取和轻松跟踪文件名

输出文件:

out_dir = p / 'output'
print(out_dir)
>>> WindowsPath('E:/PythonProjects/DataCamp/output')

out_pdf = out_dir / f'stamped_{pdf_name}'
print(out_pdf)
>>> WindowsPath('E:/PythonProjects/DataCamp/output/stamped_aapl.pdf')

pythonpdf库可能不适用于pathlib对象:

  • 轻松将pathlib对象转换回str
print(type(stamp_path))
>>> pathlib.WindowsPath

print(type(str(stamp_path))
>>> str

create_pdf_stamp(str(stamp_path), add_frame=add_frame)

迭代.glob

  • .glob对象是一个生成器函数
p = Path('e:/PythonProjects')
files = p.glob('**/*.pdf')

for file in files:
    print(file)
    ...
    # do other stuff
于 2019-08-23T04:36:38.540 回答