python 网页转pdf

本文详细介绍了如何在CentOS环境下使用wkhtmltopdf和其Python封装pdfkit来将HTML、URL和文本转换成PDF文件。包括安装步骤、基本用法、高级选项配置及如何处理多个输入源。

主要使用的是wkhtmltopdf的Python封装——pdfkit

centos环境

安装:Install python-pdfkit

pip install pdfkit

安装:Install wkhtmltopdf

yum intsall wkhtmltopdf

windows环境下安装wkhtmltopdf参考这篇文章:

http://blog.youkuaiyun.com/qq_14873105/article/details/51394026


Linux环境下安装wkhtmltopdf参考这篇文章:
http://blog.youkuaiyun.com/mr_zing/article/details/52833461


使用:
import   pdfkit
pdfkit.from_string('hello,python','out.pdf') #通过文本直接进行转换
pdfkit.from_url('http://baidu.com','out.pdf') #通过网址进行转换
pdfkit.from_file('test.html', 'out.pdf') #通过html文件进行转换

我们也可以传递一个url或者文件名列表:

pdfkit.from_url(['google.com', 'yandex.ru', 'engadget.com'], 'out.pdf') pdfkit.from_file(['file1.html', 'file2.html'], 'out.pdf')

也可以传递一个打开的文件:

with open('file.html') as f:
    pdfkit.from_file(f,'out.pdf') 

如果想对生成的PDF作进一步处理,我们可以将其读取到一个变量中:

#设置输出文件为False,将结果赋给一个变量
pdf = pdfkit.form_url('http://google.com', False)

我们可以制定所有的 wkhtmltopdf 选项 http://wkhtmltopdf.org/usage/wkhtmltopdf.txt. 我们可以移除选项名字前面的 '--' .如果选项没有值, 使用None, Falseor * 作为字典值:

options = {
 'page-size': 'Letter',
 'margin-top': '0.75in',
 'margin-right': '0.75in',
 'margin-bottom': '0.75in',
 'margin-left': '0.75in',
 'encoding': "UTF-8",
 'no-outline': None
 } 
pdfkit.from_url('http://google.com', 'out.pdf', options=options)

默认情况下, PDFKit 将会显示所有的 wkhtmltopdf 输出. 如果不想看到这些信息,你需要传递一个 quiet 选项:

options = {
 'quiet': ''
 } 
 pdfkit.from_url('google.com', 'out.pdf', options=options)

 

由于wkhtmltopdf的命令语法 , TOC 和 Cover 选项必须分开指定:

toc = {
 'xsl-style-sheet': 'toc.xsl'
 } 
cover = 'cover.html' 
pdfkit.from_file('file.html', options=options, toc=toc, cover=cover)

当我们转换文件、或字符串的时候,可以通过css选项指定扩展的 CSS 文件。

# 单个 CSS 文件 
css = 'example.css' 
pdfkit.from_file('file.html', options=options, css=css) 
# Multiple CSS files 
css = ['example.css', 'example2.css'] 
pdfkit.from_file('file.html', options=options, css=css)

也可以通过HTML中的meta tags传递任意选项:

body = """
        <html>
          <head>
            <meta name="pdfkit-page-size" content="Legal"/>
            <meta name="pdfkit-orientation" content="Landscape"/>
          </head>
          Hello World!
          </html>
        """ 
pdfkit.from_string(body, 'out.pdf') #with --page-size=Legal and --orientation=Landscape

 


转载地址:https://www.jianshu.com/p/44ec7a83adcb


转载于:https://www.cnblogs.com/yc-c/p/10415058.html

### 将HTML文件或网页换为PDFPython方法 #### 使用 `pdfkit` 换URL到PDF 可以利用 `pdfkit` 库将指定的URL直接换成PDF文件。此库依赖于 `wkhtmltopdf` 工具,因此需要先安装该工具并确保其路径已配置至环境变量中[^1]。 ```bash pip install pdfkit ``` 以下是通过 `pdfkit` 实现的具体代码: ```python import pdfkit # 从URL生成PDF pdfkit.from_url('https://www.google.co.in/', 'output.pdf') ``` 上述代码会访问给定的URL并将页面内容渲染为名为`output.pdf`的PDF文档。 --- #### 使用 `pdfkit` 换HTML字符串到PDF 如果目标是从内存中的HTML字符串而非URL创建PDF,则可以通过以下方式实现[^2]: ```python import pdfkit html_string = """ <html> <body> <h1>这是一个测试</h1> <p>Hello world!</p> </body> </html> """ options = { 'encoding': "UTF-8", } pdfkit.from_string(html_string, 'output_from_string.pdf', options=options) ``` 在此示例中,定义了一个简单的HTML字符串并通过 `from_string()` 方法将其化为PDF文件。 --- #### 利用 `spire.doc` 进行HTML文件到PDF换 对于更复杂的场景,比如处理本地存储的HTML文件而不是单纯的字符串或在线资源时,可以选择使用 `spire.doc` 库来完成这一任务。 首先需安装Spire.Doc for Python模块: ```bash pip install Spire.Doc ``` 接着按照如下脚本操作即可完成换过程: ```python from spire.doc import * from spire.doc.common import * doc = Document() # 加载HTML文件 (假设文件位于当前目录下命名为example.html) doc.LoadFromFile("example.html", FileFormat.Html) # 设置输出PDF文件名 doc.SaveToFile("converted_output.pdf", FileFormat.PDF) # 清理对象释放资源 doc.Close() ``` 以上代码片段展示了如何加载一个现有的HTML文件,并最终导出为PDF格式。 --- #### 总结 三种主要途径可用于解决Python环境下由HTML向PDF化的需求:一是借助外部命令行程序如`wkhtmltopdf`配合轻量级封装层`pdfkit`;二是针对简单需求采用纯Python解决方案;三是当面对复杂布局或者特定功能支持不足的情况考虑商业产品例如`spire.doc`.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值