我有一个包含多个部分的 tex 文件。所有部分都以新页面开始,我想为每个部分构建一个单独的文件。我可以使用 来做到这一点\jobname
,但如何从输出中删除未使用的部分,但保留实际需要的部分的部分计数器的副作用?我想要精确的结果,就像手动按部分拆分结果 pdf 文件一样。
答案1
用于\include
包含子文件并\includeonly
控制哪个子文件应显示在输出中。
另一个解决方案是给每个分割点添加书签,并使用以下代码进行分割:
from PyPDF2 import PdfReader, PdfWriter
filename = "main.pdf"
with open(filename, "rb") as f:
r = PdfReader(f)
bookmarks = list(map(lambda x: (x.title, r.get_destination_page_number(x)), r.outline))
print(bookmarks)
for i, b in enumerate(bookmarks):
begin = b[1]
end = bookmarks[i+1][1] if i < len(bookmarks) - 1 else len(r.pages)
# print(len(r.pages[begin:end]))
name = b[0] + ".pdf"
print(f"{name=}: {begin=}, {end=}")
with open(name, "wb") as f:
w = PdfWriter(f)
for p in r.pages[begin:end]:
w.add_page(p)
w.write(f)