首先把链接URL爬取出来,然后get流下载pdf文件,再用pdf模块来读取它。
Ⅱ 《html转pdf-----wkhtmltopdf踩坑总结》
最近公司给了个任务,差不多的流程就是接受json数据,然后最后生成图片。我想的办法是根据json数据生成html然后转成pdf。使用的语言是python。然后具体来说使用的工具就是使用python名为pdfkit的库去调用基于webkit的wkhtmltopdf。
目前来说html转pdf最主流的程序就是wkhtmltopdf,但是坑还是挺多的而且网上资源不是很丰富,所以写一篇踩坑总结。
##1. 无法读取本地文件
显示在html上好好的本地图片,到了pdf上就读取不出来,但是来源于网络(给一个url)的图片却能完美读出来。
后来发现,原来在上一个版本0.12.5是可以读取的,到了0.12.6不能读取了是因为其中的一个参数--enable-local-file-access变为了非默认。在python中改这个参数的方法是
然后再在后续调用wkhtmltopdf中加载这个option(我一开始想的是把value改成True,结果一直报错,吐了)
##2. 无法解析latex格式的公式
在html使用了MathJax提供的js去解析latex格式的数学公式,在html界面可以完美显示,但是到了pdf中就解析不了,然后我以为是没有添加'enable-javascript'的问题。结果加上之后还是不行。然后我发现又有一个参数叫做'no-stop-slow-scripts'的参数,可以等到js运行完毕之后再进行pdf的转化。结果还是不行。
然后我就在想会不会js在运行的时候出了什么问题,加上了'debug-javascripts'的参数。果然发现在调用MathJax提供的链接的时候发现这个链接已经过期了(我也不知道为啥过期了在html界面还能完美展示。。。),把js里的链接换成了
https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-AMS-MML_HTMLorMML
完美解决
##3. 部分css失效
css3中的flex全部失效,所以大家得换一下!
当时遇到了一个讲的很好的博客,给大家分享一下,然后再放一个官方文档的链接
博客:https://www.jianshu.com/p/4d65857ffe5e
官方文档:https://wkhtmltopdf.org/usage/wkhtmltopdf.txt
Ⅲ python自动化-pdf文档操作
使用第三方库
官方文档:pymupdf.readthedocs.io/en/latest/
提取图片的整体逻辑如下:
将每一页转换为一张张图片
安装pdf2image, github:github.com/Belval/pdf2…
安装:
使用库: github.com/2Dou/waterm…
步骤:
1.获得一个带水印pdf文件
1.1在图片添加水印,图片插入到word,word保存为pdf
1.2python处理:参考
github.com/2Dou/waterm…
mp.weixin.qq.com/s/_oJA6lbsd…
2.将水印pdf文件合并到源目标pdf文件的每一页
法1,直接在word,插入文本框,旋转,设置无边框,注意设置背景透明,然后复制多个。导出为pdf。
法2,word本身自己的增加水印,设计-水印-自定义文字或图片。缺点是只能是单个水印。
缺点是水印在内容pdf上方,如果设置过大,颜色不太透明,会遮挡内容。
解密:并不是破解,而是在已知密码的情况下解密
作者:秦与商
链接:https://juejin.cn/post/7069582991982329893
Ⅳ Python可以用来自动化办公 实现批量Word转pdf吗
这里需要导入几个模块
from win32com.client import Dispatch # 没有的话输入pip install pywin32命令 即可安装
from os import walk
import os
os是用于文件处理常用的模块,至于Dispatch,它是提供了一个接口, win32提供了多种word转换为其他文件的接口,其中FileFormat=17是转换为pdf格式.
之后转换文件逻辑也很简单,首先需要提取出文件名,word文件的后缀是doc或docx,那么将后缀名替换为pdf即可转换,这里用到replace方法,即replace(‘docx’,‘pdf’).replace(‘doc’,‘pdf’)因为有可能后缀是doc,所以需要2次判断。
值得注意的是,转换的文件夹事先要存在,否则会报错误。
下面是项目的源代码
复制代码
from win32com.client import Dispatch # pip install pywin32
from os import walk
import os
wdFormatPDF = 17 # win32提供了多种word转换为其他文件的接口,其中FileFormat=17是转换为pdf
def doc2pdf(input_file, input_file_name, output_dir):
try:
word = Dispatch('Word.Application')
doc = word.Documents.Open(input_file)
except Exception as e:
print("word无法打开, 发生如下错误:\n{}".format(e))
try:
pdf_file_name = input_file_name.replace(".docx", ".pdf").replace(".doc", ".pdf")
pdf_file = os.path.join(output_dir, pdf_file_name)
doc.SaveAs(pdf_file, FileFormat=wdFormatPDF)
doc.Close()
word.Quit()
print("成功转换\"{}\"".format(input_file_name))
print()
except Exception as e:
print("文件保存失败, 发生如下错误:\n{}".format(e))
if __name__ == "__main__":
path_in=input("请输入word文件夹的路径(绝对路径) 要保证存在 建议复制粘贴")
path_out=input("请输入pdf文件夹的路径(绝对路径) 要保证存在 建议复制粘贴")
doc_files = []
directory = path_in# word文件夹
output_dir =path_out # pdf文件夹
for root, _, filenames in walk(directory): # 第2个返回值是dirs, 用不上使用_占位
for file in filenames:
if file.endswith(".doc") or file.endswith(".docx"):
print("转换{}中......".format(file))
doc2pdf(os.path.join(root, file), file, output_dir)
复制代码
Ⅳ py vsd 转pdf
vsd转pdf需要使用到的库是comtypes。
这里借助Python的docx2pdf去完成转换操作,该库的安装命令,目标:读取文件夹下的全部word文件,然后进行转换,最后保存到对应的文件夹中。
里面不仅有文字,同时包含有图片,其中word_path是存放word文件的文件夹,word_to_pdf是转换后的pdf存放文件夹,这样就可以完成转化了。
Ⅵ Python 操作PDF库介绍之PDFMiner
Python 操作PDF库介绍之PDFMiner
PDFMiner是一种从PDF文档中提取信息的工具。与其他PDF相关工具不同,它完全专注于获取和分析文本数据。
PDFMiner允许人们获取页面中文本的确切位置,以及字体或线条等其他信息。
它包括一个PDF转换器,可以将PDF文件转换为其他文本格式(如HTML)。它具有可扩展的PDF解析器,可用于除文本分析之外的其他目的。
github:
https://github.com/euske/pdfminer/
Ⅶ python如何检测是不是需要旋转pdf
是的,1.导入PyPDF2模块之后使用open()方法打开pdf文件并且调用Reader方法直接将这个pdf文件之中的所有页面都给读取出来,读取出来之后返回的是一个可迭代对象。然后使用getPage()方法获取其中的某一个页面,代码如下所示:
import PyPDF2
reader = PyPDF2.PdfFileReader(open('a.pdf','rb'))
page = reader.getPage(0)
2.以上代码之中的page所返回的就是pdf文件第一页,使用它去调用rotateClockwise()方法就能够将其90度旋转,示例如下:
page.rotateClockwise(180)
这个方法一次只能够对一个页面进行修改操作,并且参数必须为90度及其倍数。也就是只能选择90、180、270、360这四个度数,而且选择是顺时针选择的,旋转之后的页面会自动调整格式。
3.页面旋转完毕之后还需要实例化出来一个文件写入对象,然后使用这个对象将修改旋转后的页面添加到原pdf文件之中。再打开一个新的pdf文件用来保存,然后使用write()方法将页面写入之后将其关闭掉就好了,代码示例如下:
output = PyPDF2.PdfFileWriter()
outputStream = open ("b.pdf","wb")
output.write(outputStream)
outputStream.close()
Ⅷ python在ftp下载文件保存成pdf
1.python图片保存为pdf格式的功能需要使用到os模块以及img2pdf模块,其中img2pdf模块是第三方的。win+r打开运行窗口之后输入cmd并回车就能够启动命令行提示符,执行如下命令即可安装:
pip3 install img2pdf
如果是linux系统或者是mac系统的话,就需要打开终端然后在命令前加上sudo参数表示管理员权限去下载安装这个库。
2.安装完成之后新建一个python脚本来编写代码,首先就是将这两个模块都给导入进来,示例如下:
import os
import img2pdf
3.然后使用with关键字创建出一个上下文管理器结构并且打开一个pdf文件,使用它的原因就在于可以在代码执行完毕之后自动的释放资源并关闭文件,示例如下:
with open("Output.pdf", "wb") as file:
有没有这个pdf文件都可以,如果没有的话会在文件路径内自动去创建。
4.最后就是需要调用该文件对象的write()方法来将图片数据写入进去了,在这个方法里面会调用convert()将一个文件路径内后缀名为jpg的图片全部以二进制流的方式读取出来,示例如下:
file.write(img2pdf.convert([i for i in os.listdir('文件路径') if i.endswith(".jpg")]))
以上就是关于“Python怎么将图片保存为pdf格式?Python图片合成为pdf的代码如何写”的全部内容了,希望对你有所帮助。
Ⅸ Python office 文件转 pdf 有没有什么好的方案
用什么 w32com啊。用python的一个开源包。或者是用apache的tika(java)版本。或者是你用openoffice。
用了python就和winows再见吧。因为只有linux上才是最好用的。然后就和开源结亲了。各种包,基本上应有尽有。
你的这个问题其实挺简单的。很可能是编码的问题。建议你先将txt转换成doc,再将doc转换成pdf。这样就绕过去了。问题不一定要强行解决。学着绕过去。