使⽤Python转换PDF,WordExcelPPTmdHTML都能转!
今天讲的是各位⼀定会接触到的PDF转换,关于各种格式的⽂件转换为PDF有很多第三⽅⼯具与⽹站可以实现,但是使⽤Python的好处不仅可以批量转换,同时⼀旦脚本写完了以后就可以⼀键执⾏,彻底解放双⼿,那么本⽂就来盘⼀盘如何使⽤Python来将
Word/Excel/PPT/Markdown/Html等各种格式的⽂件转换为PDF!
Word转PDF
Word转PDF应该是最常见的需求了,毕竟使⽤PDF格式可以更⽅便展⽰⽂档,虽然在Word中可以直接导出为PDF格式,但是使⽤Python 可以批量转换,更加⾼效。
⽬前在Python中针对Word转换为PDF的库有很多,⽐如win32就可以调⽤word底层vba,将word转成pdf,或者comtypes等,但是这些常⽤的库仅能在Windows机器上运⾏,所以为了照顾mac⽤户本⽂使⽤⼀个⽐较⼩众的库docx2pdf,看名字就能知道这是专门⽤于word转pdf,安装很简单
pip install docx2pdf
使⽤也⽐win32等库更简洁,⼀⾏代码导⼊⼀⾏代码转换即可
from docx2pdf import convert
convert("input.docx", "output.pdf")
但是有⼈就会说虽然简单,但是这个操作word本⾝就可以完成,好的接下来放⼤招,我们可以使⽤下⾯的代码到当前或者指定⽂件夹下的全部word⽂件
#查当前⽬录下的全部word⽂件
import os
import glob
from pathlib import Path
path = os.getcwd() + '/'
p = Path(path) #初始化构造Path对象
FileList=list(p.glob("**/*.docx"))
接下来只要写⼀个循环就可以将该⽬录下的全部word⼀次性转换为PDF
for file in FileList:
convert(file,f"{file}.pdf")
就这样,不到10⾏代码,只要⼀秒,指定⽂件夹中5份Word就轻松转换为PDF,现在还能使⽤我们之前⾃动化系列⽂章写过的批量合并PDF结合⼀键合并这5份PDF!
Excel转PDF
Excel转PDF可能平时⽤的不多,但是作为Office全家桶中的重要⼯具,并且转换完的表格可以复制所以我们也讲⼀下。使⽤到的⼯具既不是常⽤的openpyxl也不是pandas,⽽是另⼀个专门⽤于处理PDF的库fpdf
import pandas as pd
import numpy as np
df_1 = pd.DataFrame(np.random.randn(10, 2), columns=list('AB'))
为了⽅便讲解我们使⽤Pandas和NumPy来创建⼀个⽰例数据⽂件,当然也可以使⽤从本地读取
现在可以使⽤下⾯的代码将这个表格转换为PDF
from fpdf import FPDF
pdf = FPDF()
pdf.add_page()
pdf.set_xy(0, 0)
pdf.set_font('arial', 'B', 14)
pdf.set_font('arial', '', 12)
for i in range(0, len(df_1)):
col_ind = str(i)
col_a = str(df_1.A.iloc[i])
col_b = str(df_1.B.iloc[i])
pdf.output('Excel2PDF.pdf', 'F')
,其实思路和openpyxl类似,遍历每⼀个单元格并写⼊数据,只不过现在是往PDF⽂件中写⼊。
PPT转PDF
本节介绍⼀下PPT如何转换为PDF,但是我搜了⼀⼤圈都没有MAC⽤户可以实现的⽅法,所以只能针对Windows去操作,使⽤到的就是在word2pdf中讲到的comtypes
import sys
import os
import comtypes.client
#设置路径
input_file_path = sys.argv[1]
python怎么读入exceloutput_file_path = sys.argv[2]
input_file_path = os.path.abspath(input_file_path)
output_file_path = os.path.abspath(output_file_path)
#创建PDF
powerpoint = comtypes.client.CreateObject("Powerpoint.Application")
powerpoint.Visible = 1
slides = powerpoint.Presentations.Open(input_file_path)
#保存PDF
slides.SaveAs(output_file_path, 32)
slides.Close()
相关参数与细节可以查阅comtypes官⽅⽂档,因为我是mac所以没有过多研究,在成功转换之后就可以和我们之前的批量操作与合并进⾏结合实现⾃动化了!
md转pdf
关于markdown转pdf,⼏乎所有markdown编辑器都⽀持导出为pdf格式,本以为这个需求并不⾼,但是研究了⼀圈发现很多⽼外造了很多md转pdf的轮⼦,⽐如md2pdf、markdown2pdf、md2pdf-client
等。因为⼤多数博客使⽤的是markdown格式,使⽤这些库可以很好的将博客⽂章批量转换为PDF⽂档存储。
早起都试了⼀圈,到⼀个语法最简单的markdown2pdf3,直接pip安装即可,使⽤两⾏代码即可将⼀个md⽂件转换为pdf
from markdown2pdf3 import *
convert_markdown_to_pdf('test.md') #你的markdown⽂件路径
但是要注意的是如果有中⽂,还需要进⾏⼀些额外的设置,可以查阅官⽅⽂档,不过现在就能和之前讲的Word转PDF结合,批量转换指定路径下的全部markdown⽂件为pdf,⽐如可以使⽤下⾯的代码到当前⽂件夹下的全部md⽂件
import os
import glob
from pathlib import Path
path = os.getcwd() + '/'
p = Path(path) #初始化构造Path对象
FileList=list(p.glob("**/*.md"))
html转pdf
关于html也就是⽹页转为PDF是来问我最多的问题,其实很简单,之前在这篇⽂章中就提到使⽤PDFKIT即可,但是并不是直接pip安装pdfkit就⾏,我们需要提前进⼊下⾯的⽹站选择⾃⼰电脑系统对应的wkhtmltopdf下载安装
/downloads.html
安装完使⽤pip安装pdfkit
pip install pdfkit
现在我们就能使⽤两⾏代码转换指定⽹页为PDF格式,⽐如将我的第⼀篇⾃动化⽂章转为PDF
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论