当前位置: 首页 > 工具软件 > PDFKit > 使用案例 >

html转换成pdf工具-wkhtmltopdf、Python生成PDF(pdfkit库)

沈子昂
2023-12-01

一、html转换成pdf工具-wkhtmltopdf

官网:https://wkhtmltopdf.org/

1. 什么是wkhtmltopdf

wkhtmltopdf and wkhtmltoimage are open source (LGPLv3) command line tools to render HTML into PDF and various image formats using the Qt WebKit rendering engine. These run entirely “headless” and do not require a display or display service.

wkhtmltopdf 和 wkhtmltoimage 是开源 (LGPLv3) 命令行工具,可使用 Qt WebKit 渲染引擎将 HTML 渲染为 PDF 和各种图像格式。 这些完全“headless”运行,不需要界面或界面服务。

如果您喜欢,它还是一个 C 库。

wkhtmltopdf是 “命令行工具” ,支持多个平台,可在win,linux,os x 等系统下运行。

2. 如何使用它?

  1. 下载预编译的二进制文件或从源代码构建

  2. 创建要转换为 PDF(或图像)的 HTML 文档

  3. 通过该工具运行您的 HTML 文档。

3. 常见问题

error while loading shared libraries: libjpeg.so.62: cannot open shared object file: No such file or

问题描述:
执行 wkhtmltopdf -V 报错 error while loading shared libraries: libjpeg.so.62: cannot open shared object file: No such file or directory

解决方法:

apt-get install libjpeg62-dev

version `GLIBC_2.14’ not found

解决’GLIBC_2.14’ not found问题时遇到的坑
参考URL: https://blog.csdn.net/clirus/article/details/62425498

最近用到c++11需要升级glibc库。

网上有很多解决’GLIBC_2.14’ not found问题的帖子。

无非就是如下的一些操作命令:

  1. glibc下载
    从http://www.gnu.org/software/libc/ 下载源代码。我下载的版本是2.14,链接地址是http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz。
  2. 安装
    具体步骤如下:
    [root@localhost ~]# tar zxvf glibc-2.14.tar.gz -C /home/software/
    [root@localhost ~]# cd /home/software/glibc-2.14
    [root@localhost glibc-2.14]# mkdir /opt/build
    [root@localhost glibc-2.14]# cd build
    [root@localhost build]# …/configure --prefix=/opt/glibc-2.14
    [root@localhost build]# make -j4
    [root@localhost build]# make install
    如果没有碰到坑,那么恭喜你已经完成了安装,后续也就是库环境设置了。

下面先说一下遇到的坑:

1、在make过程中出现如下错误:

/usr/bin/install: include/limits.h' and/opt/glibc-2.14/include/limits.h’ are the same file

在经过google后,不太理解相关帖子的含义,后来自行修炼后,明白了。

原因就是楼主解压的glic-2.14.tar.gz源码和编译时定义的目录…/configure --prefix=/home/software/glibc-2.14放到了一起。

所以解决方法就是:
tar zxvf glibc-2.14.tar.gz -C /home/software/
…/configure --prefix=/opt/glibc-2.14
只要将编译定义目录和源码目录区分开就ok了。

2、在make install过程中出现如下错误:

Can’t open configuration file /opt/glibc-2.14/etc/ld.so.conf: No such file or directory

就是缺少了必要的编译文件ld.so.conf。通过find命令找到对应的文件位置。

[root@localhost build]# find / -name “ld.so.conf”
/etc/ld.so.conf

然后我们执行命令把此文件拷贝到对应的文件目录下去,然后继续编译。

[root@localhost build]# cp /etc/ld.so.conf /opt/glibc-2.14/etc/
[root@localhost build]# make install
Congratulations! 编译成功!

最后就是设置环境变量,因为glibc库使用广泛,为了避免污染当前系统环境,在使用时候定义一下环境变量。

执行命令

[root@localhost ~]# export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH
将库的位置临时定位在/opt/glibc-2.14/lib位置。

此时再执行相关程序即可顺利运行。

下载安装字体文件(缺少字体会导致生成的PDF文件里的中文都是方块)

①yum install -y fontconfig mkfontscale 或者
apt-get -y install fontconfig xfonts-utils

② 下载字体文件(TTF文件)放入/usr/share/fonts

③ 执行三个命令

mkfontscale
mkfontdir
fc-cache

二、Python生成PDF(pdfkit库)

  1. 使用pip安装pdfkit库
pip3 install pdfkit
  1. 安装wkhtmltopdf文件

注:pdfkit是基于wkhtmltopdf的python封装,所以需要安装wkhtmltopdf。wkhtmltopdf是轻量级软件,非常很容易安装。
下载地址: https://wkhtmltopdf.org/downloads.html

  1. 使用pdfkit库生成pdf文件
    pdfkit可以将网页、html文件、字符串生成pdf文件!

1. 网页生成 pdf【pdfkit.from_url()函数】

# 导入库
import pdfkit

'''将网页生成pdf文件'''
def url_to_pdf(url, to_file):
    # 将wkhtmltopdf.exe程序绝对路径传入config对象
    path_wkthmltopdf = r'D:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe'
    config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
    # 生成pdf文件,to_file为文件路径
    pdfkit.from_url(url, to_file, configuration=config)
    print('完成')

# 这里传入我知乎专栏文章url,转换为pdf
url_to_pdf(r'https://zhuanlan.zhihu.com/p/69869004', 'out_1.pdf')

2. html 文件生成 pdf【pdfkit.from_file()函数】

# 导入库
import pdfkit

'''将html文件生成pdf文件'''
def html_to_pdf(html, to_file):
    # 将wkhtmltopdf.exe程序绝对路径传入config对象
    path_wkthmltopdf = r'D:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe'
    config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
    # 生成pdf文件,to_file为文件路径
    pdfkit.from_file(html, to_file, configuration=config)
    print('完成')

html_to_pdf('sample.html','out_2.pdf')

3. 字符串生成 pdf【pdfkit.from_string()函数】


import pdfkit

def str_to_pdf(string, to_file):
    # 将wkhtmltopdf.exe程序绝对路径传入config对象
    path_wkthmltopdf = r'D:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe'
    config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
    # 生成pdf文件,to_file为文件路径
    pdfkit.from_string(string, to_file, configuration=config)
    print('完成')

if __name__ == '__main__':
    str_to_pdf('This is test!', 'out_str_to_pdf.pdf')

三、参考

Python生成PDF(pdfkit库)
参考URL: https://www.jianshu.com/p/489c3aff61bd/

 类似资料: