xhtml2pdf库之中文换行
xhtml2pdf
是一个 Python 库,用于将 HTML 和 CSS 文件转换为 PDF。它主要用于生成包含复杂布局和样式的 PDF 文档。以下是 xhtml2pdf
的一些关键特点和使用方法:
特点
- 支持 HTML 和 CSS:
xhtml2pdf
能够解析和渲染大部分的 HTML 和 CSS,使得生成的 PDF 文档可以保持与网页相似的外观。 - 集成易用:可以与 Django 和 Flask 等流行的 Python Web 框架轻松集成,适用于生成报告、发票、证书等需要定制布局的 PDF 文件。
- 可扩展性强:支持自定义字体、图片、表格等元素,适合复杂文档的生成需求。
- 开源免费:
xhtml2pdf
是一个开源项目,可以自由使用和修改。
开发时遇到的问题
这么好用简便并且开源的库,自然也少不了其问题所在。由于其对中文的比较糟糕的支持,导致其无法通过改变css样式比如:
1 | word-wrap: break-word; |
上面这种常用的换行样式在这个库中对于中文就无法正常换行。
在网上搜了一圈找到的办法同样没啥用,网上“通用“的做法是在.py文件中引用以下几句代码:
1 | from reportlab.pdfbase import pdfmetrics |
是的,我没看懂并且没用。
解决方法
于是我就只能遇事不决暴力出奇迹,直接对需要传进去的html字符串做一个预处理。
对于xhtml2pdf
库中A4大小的纸张,通常为43个中文字符需要换一次行,所以直接遍历html字符串,每当中文符超过43个,就打上一个<br>
标签!
代码如下:
1 | def insert_manual_line_breaks(html: str) -> str: |
预处理之后总算是稍微能看了,没办法,只能看这个库的作者愿不愿意维护更新一下多语种支持了。
- 本文作者: Phquathi
- 本文链接: http://phquathi.github.io/pHq-blog/2024/06/14/xhtml2pdf库之中文换行/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!