当前位置: 首页 > news >正文

xhtml2pdf中文屏幕溢出问题

背景

使用xhtml2pdf转pdf的时候发现中文超长会出现屏幕溢出的问题
在这里插入图片描述

解决过程

官网

首先去官网看看有没有想关的解决方案:官方文档
但是看了一遍发现并没有相关描述,可能是bug。

思考

测试了英文是没问题的,于是思考,是否是由于中文分隔符无法识别的问题。
于是上测试代码测试,发现xhtml2pdf 无法使用标点符号进行分隔,只能用空格分隔。


# 测试边距
from xhtml2pdf import pisadef html_to_pdf(html: str, output_path: str):full_html = """
<html>
<head>
<style>table { -pdf-keep-with-next: true; }p { margin: 0; -pdf-keep-with-next: true; }
</style>
</head><body><p>Keepthesesetsof linesKeep these sets of linesKeep these sets of linesKeep these sets of linesKeep these sets of linesKeep these sets of linesKeep these sets of linesKeep these sets of linesKeep these sets of linesKeep these sets of lines</p><p>随着硬件技术的发展和算法的不断进步,大模型的应用前景非常广阔。在未来,大模型有望在更多的领域得到应用,如自动驾驶、医疗诊断等。同时,研究人员也在探索如何降低大模型的计算资源需求,提高其训练效率,以及如何使其更加易于解释和调试。</p><p>may appear in a different frame</p><p class="separator">&nbsp;<p>
</body>
</html>    
"""with open(output_path, "wb") as f:pisa.CreatePDF(full_html, dest=f, encoding="UTF-8")print(f"PDF saved to: {output_path}")if __name__ == "__main__":html_to_pdf("html", "output/output.pdf")# html_to_docx(html, "output/output.docx")

解决办法

提前处理html内容(推荐)

为每一个标点符号后面添加一个空格作为分隔符

# 增加分割符、防止屏幕溢出
chinese_punctuation = r'[,。!?;:、]'
clean_html = re.sub(f"({chinese_punctuation})(?![\s\n<])", r"\1 ", html_content)

源码解决

这个源码太复杂了,修改难度过高,不推荐

http://www.xdnf.cn/news/999055.html

相关文章:

  • SpringBoot后端开发知识点总结(持续更新)
  • 《棒球万事通》棒球战术介绍·棒球1号位
  • 在rust中执行命令行输出中文乱码解决办法
  • android:foregroundServiceType详解
  • 亚马逊云服务器(AWS)会限制用户使用吗?深度解读AWS资源政策
  • 用idea进行数据同步
  • List ToMap优化优化再优化到极致
  • 成功解决 ValueError: Unable to find resource t64.exe in package pip._vendor.distlib
  • 51la无法统计IP?悟空统计精准IP归属地
  • 模板字符串使用点击事件【VUE3】
  • 使用Ollama+open-webui搭建本地AI模型
  • 榕壹云信用租赁系统:免押金全品类租赁解决方案,区块链+多因子认证赋能
  • 财政部长斯科特·贝森特预测,美元支持的稳定币将达到 2 万亿美元
  • [C++11] : 谈谈包装器和lambda表达式,仿函数,bind的坑
  • 分布式MQTT客户端看门狗机制设计与实现
  • ShardingSphere解析:分布式数据库中间件的分片设计与事务管理实践
  • react实现axios 的简单封装
  • 单链表经典算法
  • 【鸿蒙开发】组件动态创建
  • Linux检验库是否安装成功
  • 多线程(4)
  • 【大模型】实践之1:macOS一键部署本地大模型
  • std::make_shared简化智能指针 `std::shared_ptr` 的创建过程,并提高性能(减少内存分配次数,提高缓存命中率)
  • Tomcat 和 Spring MVC
  • SQL进阶之旅 Day 29:NoSQL结合使用策略
  • docker-自动启动java 包
  • 使用VSCode开发FastAPI指南
  • Python 实现 Web 请求与响应
  • VSCode - Trae 插件关闭弹出框代码补全
  • 【C++学习笔记】 std::atomic 拷贝构造错误解析