PDF 示例: “Smith#00$Consolidated_Performance.pdf”
目标是根据文件名将书签添加到每个 PDF 的第 1 页。
(示例中的书签名称为“Consolidated Performance”)
import os
from openpyxl import load_workbook
from PyPDF2 import PdfFileMerger
cdir = "Directory of PDF" # Current directory
pdfcdir = [filename for filename in os.listdir(cdir) if filename.endswith(".pdf")]
def addbookmark(f):
output = PdfFileMerger()
name = os.path.splitext(os.path.basename(f))[0] # Split filename from .pdf extension
dp = name.index("$") + 1 # Find position of $ sign
bookmarkname = name[dp:].replace("_", " ") # replace underscores with spaces
output.addBookmark(bookmarkname, 0, parent=None) # Add bookmark
output.append(open(f, 'rb'))
output.write(open(f, 'wb'))
for f in pdfcdir:
addbookmark(f)
UDF 在应用于单个 PDF 时工作正常,但在放入代码底部的循环时不会添加书签。关于如何使 UDF 循环遍历 pdfcdir 中的所有 PDF 的任何想法?