用 Python 和 LaTeX 把图片转 pdf 再合并
脑洞大开录个视频,就是今天 Boss 让俺把公众号里面的图片做成 ppt 转 pdf ,懒得慢慢手点,就自己写了个代码,用 Python + LaTeX 批量完成呗。
就是里面有一堆图片呗,不过科研的 PPT 确实比较规整,生成的 pdf 大小比较均一,这些图这是从小甲鱼的公众号里面盗出来的。
其实就是读图片数目写一堆 *.tex
文件,然后用 latexmk -pdf
生成一下,然后,然后做一些简单的移动。一共16张图片。
import os
import shutil
import glob
from PyPDF2 import PdfFileMerger
首先把包给导好呗
def get_number_move(jpg_dir):
"""
参数:输入的是图片的目录
返回图片的数目
"""
jpg_files = os.listdir(jpg_dir)
jpg_files_number = len(jpg_files)
return jpg_files_number
def write_texfile(number):
"""
参数:输入的是图片的数目
写出图片数量的 tex 的文件,编译
"""
for i in range(1,number+1):
file_after_name = str(i) + '.tex'
file_name = os.path.join(tex_files_dir,file_after_name)
file = open(file_name,'w')
string5 = r'\includegraphics{'+ str(i) + '.jpg}'
true_string = [string1,string2,string3,string4,string5,string6]
for j in range(6):
file.writelines(true_string[j] + '\n')
然后上面的代码计算图片数目,写出 tex 文件。
def move_pdf_files(tex_dir,new_pdf_dir):
"""
参数:输入 tex 文件所在的目录,和新的文件夹所在的目录
把 pdf 移动到一个新的文件夹,之后用 combine_pdf_files 函数合并起来
"""
os.chdir(tex_dir)
f = glob.glob(r'./*.pdf')
for files in f:
new_dst = os.path.join('..',new_pdf_dir)
shutil.copy(files,new_dst)
os.chdir('../')
再把 LaTeX 编译生成的 pdf 移动到新的 pdf 文件中,然后合并一下。
# 合并 pdf
def combine_pdf_files(pdf_dir):
pdf_files = os.listdir(pdf_dir)
pdf_files.sort(key = lambda x: int(x[:-4]))
file_merger = PdfFileMerger()
for pdf in pdf_files:
pdf_name = os.path.join(pdf_dir,pdf)
file_merger.append(pdf_name) # 合并pdf文件
file_merger.write('../combine.pdf')
if __name__ == '__main__':
jpg_dir = './jpgfiles'
tex_files_dir = './texfiles'
new_pdf_dir = './all_pdf'
string1 = r'\documentclass{standalone}'
string2 = r'\usepackage{graphicx} '
string3 = r'\graphicspath{{D:/jpgfiles/}}'
string4 = r'\begin{document}'
string6 = r'\end{document}'
# 函数执行:
number = get_number_move(jpg_dir)
write_texfile(number)
#之后去终端执行 latexmk
生成了 16 个 tex 文件,用 latexmk -pdf
命令编译一下。
由于用的是 standalone
所以图片整张图占了整个页面。
已经生成了合并的 pdf 文件,然后去清理一下 LaTeX 的多余文件!
move_pdf_files(tex_files_dir,new_pdf_dir)
combine_pdf_files(new_pdf_dir)
不要和我说什么苹果可以直接图片转 pdf ,要合并起来。最主要的是!代码就是一次又一次的写才能熟练!
文章转载自狗头Rser,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




