easyofd icon indicating copy to clipboard operation
easyofd copied to clipboard

ofd 转换为pdf 报错 字体相关

Open kaisersama112 opened this issue 10 months ago • 4 comments

Image 本地环境存在宋体字体,如上。 在执行ofd 转换为pdf 的时候报错(环境:linux,在本地windows 测试没有这个问题)

Image 以下为完整报错信息: saving xml /home/kaiser/app/pdf2html/temp/temp_0h271svy_xml 2025-02-21 14:59:00.570 | INFO | easyofd.ofd:to_pdf:72 - to_pdf page_size_details [[0.0, 0.0, 209.9028, 296.6861], [0.0, 0.0, 209.9028, 296.6861]] page_id: 0 page_size_details: [[0.0, 0.0, 209.9028, 296.6861], [0.0, 0.0, 209.9028, 296.6861]] 2025-02-21 14:59:00.574 | ERROR | easyofd.draw.draw_pdf:call:699 - '宋体' 2025-02-21 14:59:00.574 | ERROR | easyofd.draw.draw_pdf:call:700 - ofd解析失败 Traceback (most recent call last): File "/root/miniconda3/envs/pdf2html/lib/python3.9/site-packages/reportlab/pdfbase/pdfmetrics.py", line 698, in getFont return _fonts[fontName] KeyError: '宋体'

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/root/miniconda3/envs/pdf2html/lib/python3.9/site-packages/easyofd/draw/draw_pdf.py", line 696, in call self.draw_pdf() File "/root/miniconda3/envs/pdf2html/lib/python3.9/site-packages/easyofd/draw/draw_pdf.py", line 674, in draw_pdf self.draw_chars(c, text_list, fonts, page_size) File "/root/miniconda3/envs/pdf2html/lib/python3.9/site-packages/easyofd/draw/draw_pdf.py", line 145, in draw_chars c.setFont(font, line_dict["size"] * self.OP) File "/root/miniconda3/envs/pdf2html/lib/python3.9/site-packages/reportlab/pdfgen/canvas.py", line 1747, in setFont font = pdfmetrics.getFont(self._fontname) File "/root/miniconda3/envs/pdf2html/lib/python3.9/site-packages/reportlab/pdfbase/pdfmetrics.py", line 700, in getFont return findFontAndRegister(fontName) File "/root/miniconda3/envs/pdf2html/lib/python3.9/site-packages/reportlab/pdfbase/pdfmetrics.py", line 682, in findFontAndRegister face = getTypeFace(fontName) File "/root/miniconda3/envs/pdf2html/lib/python3.9/site-packages/reportlab/pdfbase/pdfmetrics.py", line 639, in getTypeFace return _typefaces[faceName] KeyError: '宋体' '宋体' Package not found at '/home/kaiser/app/pdf2html/temp/temp_0h271svy.docx'

kaisersama112 avatar Feb 21 '25 07:02 kaisersama112

看上去就是缺少字体,检查下是不是权限问题?

renoyuan avatar Feb 21 '25 08:02 renoyuan

在debian 12系统 同样的错误; 字体目录已经赋予777 权限了。

lijieyuan avatar Mar 05 '25 10:03 lijieyuan

已解决, 将字体复制到这个目录,且名称需要修改成 simsun.ttc 因为windows 是大写的, /opt/conda/envs/odf2pdf/lib/python3.11/site-packages/reportlab/fonts

lijieyuan avatar Mar 06 '25 01:03 lijieyuan

已解决, 将字体复制到这个目录,且名称需要修改成 simsun.ttc 因为windows 是大写的, /opt/conda/envs/odf2pdf/lib/python3.11/site-packages/reportlab/fonts

debian 12系统 是吗? 你把文件发我看看,我找个机器试试?

renoyuan avatar Mar 06 '25 07:03 renoyuan