2016-12-15 120 views
0

我在python中使用weasyprint库来呈现各种房地产广告的PDF单张。但是,渲染文件中的一些文本缺少整个句子的部分。weasyprint呈现包含不完整文本的PDF文件

该文本是捷克语。例如,输入文本:“Zrekonstruovanýajižněorientovanýbyt ve 3.nadzemnímpodlažíbytovéhodomu svýtahem。”。

呈现在PDF中的文本:“Zrekonstruovaný,jižněvýtahem。”。所以,它错过了句子的中间部分。

移除特殊字符(ěščřžýáíé)后,该特定句子呈现OK,但这不是一个通用规则,因为即使使用这些字符,其他文本也可以呈现正常。

我无法找到发生这种情况的任何规则。另外,这只发生在运行在Debian上的我们的生产服务器上。在我的本地Kubuntu上渲染运行得很好。

使用weasyprint v 0.31和0.33进行测试,在仅安装weasyprint及其依赖关系的虚拟环境中运行。

我很乐意提供任何提示,谢谢。

+0

它在Kubuntu和Debian之间的C库版本中可能存在差异是罪魁祸首。特别是pango,cairo和它使用的各种字体和X库。 – Cfreak

回答

0

可能的解决方法是在服务器上安装LibreOffice,它可以在没有GUI的情况下运行,并且非常适合将文档转换为pdf。你可以安装最小版本,看它是否工作 - 如果它不适用于最小安装,那么你可以安装一些额外的推荐软件包甚至完整版本。以下命令将安装最小版本:

apt-get --no-install-recommends install libreoffice 

如果您已经安装LibreOffice的,那么你可以创建这个命令的PDF:

libreoffice --invisible --convert-to pdf /folder/document.docx --outdir /destination/folder/ 

我希望帮助!