前言

最近在用python处理将各种格式的文件转换成pdf文件,然后合并,最后统一打印。过程中遇到了一些列问题,现将相关经验汇总如下,共有需要的朋友使用。

image2pdf

# import之前需要pip install 相关的包
import img2pdf
from PIL import Image
import pythoncom
img_path = 'G:\project_2020\text.jpg'  # 需要转换的图片地址
pdf_path = 'G:\project_2020\tex.pdf'  # 转换成pdf的存储地址,需要提前生成一个空的pdf文件
with Image.open(img_path) as image:# 将图片转成二进制内容pdf_bytes = img2pdf.convert(image.filename)with open(p_path, "wb") as file:# 将二进制的图片内容写入pdf文件file.write(pdf_bytes)

docx2pdf(直接使用docx2pdf包)

# pip install docx2pdf
from docx2pdf import convert
docx_path = 'G:\project_2020\text.docx'  # 需要转换的文档地址
pdf_path = 'G:\project_2020\tex.pdf'  # 转换成pdf的存储地址,需要提前生成一个空的pdf文件
# 因为docx2pdf调用的是pywin32提供的接口,所以需要pythoncom.CoInitialize()初始化资源,否则无法运行
pythoncom.CoInitialize()
convert(docx_path, p_path)
# 抓换完成之后还需释放资源
pythoncom.CoUninitialize()

注意:

该包源码也是使用pywin32封装好的包,使用方便,但是仅可转换docx格式文档,无法处理doc文档

使用pywin32转换office文档格式

doc2pdf-docx2pdf(使用pywin32)

# import之前需要pip install 相关的包
from win32com import client
import pythoncom
word_path = 'G:\project_2020\text.doc'  # 需要转换的文档地址
pdf_path = 'G:\project_2020\tex.pdf'  # 转换成pdf的存储地址,需要提前生成一个空的pdf文件
# 初始化office环境
pythoncom.CoInitialize()
word = client.Dispatch("Word.Application")
doc = word.Documents.Open(word_path)
# pdf
doc.SaveAs(p_path, 17)
doc.Close()
word.Quit()
# 释放资源
pythoncom.CoUninitialize()

excel2pdf(xls、xlsx)

# import之前需要pip install 相关的包
from win32com import client
import pythoncom
excel_path = 'G:\project_2020\text.xls'  # 需要转换的文档地址
pdf_path = 'G:\project_2020\tex.pdf'  # 转换成pdf的存储地址,需要提前生成一个空的pdf文件
pythoncom.CoInitialize()
excel = client.Dispatch("Excel.Application")
excel.Visible = False
xls = excel.Workbooks.Open(excel_path)
# 获取工作sheet
n = xls.Worksheets.Count + 1
sheet_list = range(1, n)
# 选中全部active的sheet
xls.WorkSheets(sheet_list).Select()
# 导出pdf格式
xls.ActiveSheet.ExportAsFixedFormat(0, p_path)
xls.Close()
excel.Quit()
pythoncom.CoUninitialize()

txt2pdf

from fpdf import FPDFtxt_path = 'G:\project_2020\text.txt'  # 需要转换的文档地址
pdf_path = 'G:\project_2020\tex.pdf'  # 转换成pdf的存储地址,需要提前生成一个空的pdf文件
pdf = FPDF()
# 添加一页pdf "L"横向pdf
pdf.add_page("L")
# 使用fpdf需要自己添加中文字体否则会出现乱码现象 中文字字体百度自行下载解压后将xxx.ttf文件复制到项目指定静态文件夹
pdf.add_font('chinese', '', 'static/font/HuaWenXiHei-1.ttf', True)
pdf.set_font('chinese', size=12)
# create a cell
t = open(txt_path, 'r', encoding="utf-8")
for x in t:# 逐行写入数据pdf.cell(200, 10, txt=x, ln=1, align='L')pdf.output(p_path)

合并pdf

from PyPDF2 import PdfFileReader, PdfFileWriterpdf_path = 'G:\project_2020\tex.pdf'  # 合并的pdf的存储地址,需要提前生成一个空的pdf文件
p_path = 'G:\project_2020\pdf.pdf'  # 被copy的pdf的存储地址,需要提前生成一个空的pdf文件
# 清空pdf_path中内容
f = open(pdf_path, "wb+")
f.close()
# 获取一个 PdfFileWriter 对象
pdf_output = PdfFileWriter()
# 获取一个 PdfFileReader 对象
pdf_input = PdfFileReader(p_path)
# 获取 PDF 的页数
page_count = pdf_input.getNumPages()
# 返回一个 PageObject
for p in range(page_count):page = pdf_input.getPage(p)# 将一个 PageObject 加入到 PdfFileWriter 中pdf_output.addPage(page)# p_f.close()# 输出到文件中with open(pdf_path, 'ab') as p_d_f:pdf_output.write(p_d_f)

注意

本文总结的方法只适用windows系统并且已安装office办公软件,无法在linux系统中使用,因为pywin32会调用windows系统里的office软件,而linux系统不含有office软件,如果想要在linux系统实现该需求可以在linux中安装libreOffice,但是该方法比较麻烦,有兴趣的朋友可以自行研究。

使用python将windows下多种文件格式转换成PDF格式相关推荐

  1. Office下Word直接转换成Pdf格式!

    PDF文件格式可谓好处多多:首先,阅读器可以免费下载:再者,可以对文档进行加密,不允许编辑等:其最大的优点在于不挑操作系统,也就是说,不管是在Windows,Unix还是在苹果公司的Mac OS中皆可 ...

  2. windows下搭建stpiges转换成gltf格式环境

    前言 传统建模领域,有各种各样的格式文件,相对于three.js来说不一定友好,后者推荐的是gltf格式文件,笔者人为即json+obj资源文件的格式,优点是更小,层次更分明,所以在这个需求基础上,一 ...

  3. 将windows下文件编码格式转换成UTF-8 文件编码格式

    将windows下文件编码格式转换成UTF-8 文件编码格式 背景说明: 一个芯片厂商的SDK中的所有文件使用的GB2312的中文编码方式,所以在linux下开发的时候会发现中文的部分都是乱码. 因为 ...

  4. 用Python批处理将WORD文件转换成PDF格式(工具:win32com模块)

    用Python批处理将WORD文件转换成PDF格式 一.问题分析 key words:批处理.WORD转换PDF.办公自动化 二.材料准备 三.代码实现 ☆其他问题:日常遇到问题,整理笔记不易,欢迎交 ...

  5. python 怎么将数组转为列表_图片转换成pdf格式怎么操作?什么软件能将图片转为pdf?...

    伙伴们好,你们知道如何把图片转为pdf格式吗?前一阵子我参加了一个家居行业大会,在会议上拍摄了不少会议照片,包括主持人讲话.嘉宾出席.观众提问.产品推广等环节都拍摄了不同的角度.拍摄好后,需要传送给写 ...

  6. 如何把epub格式转换成pdf格式?或直接打开?

    epub是一种当下比较流行的开放的电子书格式,一般情况下电脑不能直接打开epub文件.这时我们有两种办法来解决,把epub格式转换成pdf格式打开,或者下载阅读器直接打开文件. 一,如何将epub格式 ...

  7. 免费jpg转换成pdf格式的软件

    很多朋友都迫切希望了解如何将JPG转换成PDF,在经过无数次的选择和下载安装试用之后.他们通常都会发现这样一个问题:绝大多数的JPG转换成PDF转换器的转换效果都令人失望.软件技术专家指出,缺乏高标准 ...

  8. 将txt转换成pdf格式的详细步骤

    现在网上很多小说.书籍都是TXT格式的,不少朋友想把它转换成高质量的PDF文件格式,然后在支持PDF的设备上读取和阅读.如果电脑上安装专业的TXT转PDF便捷工具,那么将TXT文本转换成PDF文档就是 ...

  9. json转为tfrecord格式文件怎么转_word怎么转换成pdf格式?这样转很方便

    原标题:word怎么转换成pdf格式?这样转很方便 平时,大家需要创建一份新的文件时,一般都会使用word.excel或者ppt等可编辑格式文档文稿.之后,当我们要把文件发送出去的时候,也会先把其他文 ...

  10. 图片怎么转换成pdf格式?这几个方法帮你一键转换

    现今电子书籍越来越受到欢迎,其中PDF格式也成为了一种常用的电子书籍格式.无论是工作还是学习,我们都可能会遇到需要将图片转换成PDF格式的情况,例如保存一些资料证明.公文公告.学习资料等.在这篇文章中 ...

最新文章

  1. 学科顶尖!这些高校,“双一流”潜力股!
  2. jquery的attr和prop区别之实例
  3. 数据库连接报错之IO异常(The Network Adapter could not establish the connection)
  4. 在统一软件开发过程中使用UML
  5. VisualStudio代码样式-我最喜欢的一种风格
  6. mySQL建表允许最多多少字段?
  7. 54 Django 模型层(1) 单表查询
  8. IT行业的你,在成本部门还是利润部门
  9. 网上讨论“电商平台打败了实体店”?
  10. 996是人类社会的倒退
  11. 在fedora15上编译安装vlc1.1.13
  12. 访问图像元素(imagedata widthstep)
  13. 如何在电脑上缓存哔哩哔哩的视频
  14. 项目开发日报表(第一天)
  15. java public interface_Java 接口interface的基础
  16. 脱壳进阶篇——IAT修复与解密
  17. K-means最优K值计算(利用SSE)
  18. 音乐播放器微信小程序
  19. 手把手带你学Docker:Docker容器日常管理(四)
  20. 海外专利紧缺 中国IT企业国际化维艰

热门文章

  1. JQuery中三元运算
  2. 快捷搭建kubeEdge集群
  3. 查看电脑系统基本信息
  4. 心灵捕手——走进内心世界
  5. python 爬虫3 新浪微博 爬虫 实战
  6. Minecraft Forge Mod 开发笔记
  7. Lua_第28章 资源管理(下)
  8. vue实用echart饼图legend显示百分比
  9. 51nod3155 跳房子
  10. 【AGC031E】Snuke the Phantom Thief(费用流)