Python|Python + pdflatex 给PDF文件添加页眉页脚(制作论文集)

一批pdf文件需要加上页脚和页码等(论文,做成论文集)
原料:LaTex模板、PDFs
要求:无所谓程序效率,自动化取代人力
1. 先放LaTeX模板
懒得再读文件了,直接用多行字符串。 其中中文自行替换。
其中__page_cnt__rawpdf分别用于后面替换为记录 页码原PDF文件名字 的变量。

texfile = """ \\documentclass[12pt]{article} \\usepackage[utf8]{inputenc} \\usepackage[a4paper, margin=2cm]{geometry} \\usepackage{fancyhdr} \\usepackage{pdfpages} \\usepackage{afterpage} \\usepackage{ifthen} \\usepackage{intcalc}\\newcommand\\blankpage{% \\null \\thispagestyle{empty}% \\addtocounter{page}{-1}% \\newpage}\\fancypagestyle{mypagestyle1}{% The first page \\fancyhf{}% Clear header/footer \\fancyhead[L]{\\scriptsize 会议XXX, 地点, 日期月日, 年}% \\fancyfoot[L]{\\footnotesize ISBN书号\\$31.00 ?2019 IEEE} \\fancyfoot[C]{\\footnotesize \\thepage} \\renewcommand{\\headrulewidth}{0pt} }\\fancypagestyle{mypagestyle2}{% The other pages \\fancyhf{}% Clear header/footer \\fancyfoot[C]{\\footnotesize会议名称 (会议缩写) } \\fancyfoot[R]{\\footnotesize \\thepage} \\renewcommand{\\headrulewidth}{0pt} }%%%%%%%%%%\\begin{document}\\setcounter{page}{__page_cnt} \\pagestyle{mypagestyle1} \\includepdf[pages=1,pagecommand={\\pagestyle{mypagestyle1}}]{__rawpdf} \\pagestyle{mypagestyle2} \\includepdf[pages=2-,pagecommand={\\pagestyle{mypagestyle2}}]{__rawpdf} %\\afterpage{\\blankpage} \\end{document}"""

2.使用PyPDF2获取PDF文件的页码->生成tex文件-> pdflatex编译
import os, sys import subprocess from PyPDF2 import PdfFileReaderdef gen_new_texfile(page, paper): global texfile paper_id = paper.split('.')[0]new_texfile = texfile.replace("__page_cnt", f"{page}").replace("__rawpdf", f"../raw_pdfs/{paper}")new_texfile_path = f"./texes/XXXX2019_{paper_id}.tex" with open(new_texfile_path, 'w', encoding="utf8") as f: f.write(new_texfile)return new_texfile_pathdef build_tex(tex_path): # print(os.getcwd()) cur_path = os.getcwd() os.chdir("./texes") tex_path = tex_path[8:] # 改变了工作目录,需修改路径 os.system(f"pdflatex {tex_path}")os.chdir(cur_path)def get_pdfpagenum(path): reader = PdfFileReader(path) return reader.getNumPages()# 这个是文章标题入口 def process(): raw_pdf_path = "./raw_pdfs" # print(os.listdir(raw_pdf_path)) pdfs = os.listdir(raw_pdf_path) page = 1 for paper in pdfs: tex_path = gen_new_texfile(page, paper) page += get_pdfpagenum(raw_pdf_path+"/"+paper) build_tex(tex_path) # if page > 20: #print("debug ....") #break print("Done")def rename_raw_pdf(): raw_pdf_path = "./raw_pdfs" # print(os.listdir(raw_pdf_path)) pdfs = os.listdir(raw_pdf_path)cur_path = os.getcwd() os.chdir(raw_pdf_path)for pdf in pdfs: pid, _ = pdf.split('.') new_name = f"{int(pid):03d}.pdf" # print(new_name) os.rename(pdf,new_name)os.chdir(cur_path)# 整个文件夹的所有文件批量改名 def rename_processed_pdfs(path=None): pdf_path = path pdfs = os.listdir(pdf_path)os.chdir(pdf_path)for pdf in pdfs: new_name = pdf.split("_")[-1] os.rename(pdf, new_name) print("Done")if __name__ == "__main__": # build_tex(gen_new_texfile(1, "2.pdf")) # process() # rename_raw_pdf() rename_processed_pdfs("./Papers_with_headerfooter")

【Python|Python + pdflatex 给PDF文件添加页眉页脚(制作论文集)】2019-11-24

    推荐阅读