renderPM 找不到面部的 .pfb 'Times-Roman'

renderPM Can't find .pfb for face 'Times-Roman'

完整错误日志:

Warn: Can't find .pfb for face 'Times-Roman'
Traceback (most recent call last):
  File "lib\site-packages\reportlab\graphics\renderPM.py", line 242, in _setFont
ValueError: _renderPM.gstate_setFont: Can't find font!

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "lib\site-packages\reportlab\graphics\renderPM.py", line 248, in _setFont
TypeError: makeT1Font() argument 2 must be str, not None

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "main.py", line 69, in run
  File "lib\site-packages\reportlab\graphics\renderPM.py", line 680, in drawToFile
  File "lib\site-packages\reportlab\graphics\renderPM.py", line 666, in drawToPMCanvas
  File "lib\site-packages\reportlab\graphics\renderPM.py", line 51, in draw
  File "lib\site-packages\reportlab\graphics\renderbase.py", line 204, in draw
  File "lib\site-packages\reportlab\graphics\renderPM.py", line 98, in initState
  File "lib\site-packages\reportlab\graphics\renderPM.py", line 92, in applyState
  File "lib\site-packages\reportlab\graphics\renderPM.py", line 399, in setFont
  File "lib\site-packages\reportlab\graphics\renderPM.py", line 251, in _setFont
reportlab.graphics.renderPM.RenderPMError: Can't setFont(Times-Roman) missing the T1 files?
Originally <class 'TypeError'>: makeT1Font() argument 2 must be str, not None

我试过 的答案,但没有解决任何问题。

我已将文件提取到建议的字体文件夹中 ,但没有任何效果。

如果这可能是问题之一,我正在使用虚拟环境。

我试过添加名称为 Times-Roman 的字体,但效果不佳。

请注意我使用的是 windows 操作系统,当我使用 Pyinstaller 构建我的应用程序时会出现此错误。

这是我的目录的样子:

dxf2png/Lib/site-packages/reportlab/fonts

00readme.txt
bitstream-vera-license.txt
callig15.afm
callig15.pfb
cobo____.pfb
cob_____.pfb
com_____.pfb
coo_____.pfb
DarkGarden-changelog.txt
DarkGarden-copying-gpl.txt
DarkGarden-copying.txt
DarkGarden-readme.txt
DarkGarden.sfd
DarkGardenMK.afm
DarkGardenMK.pfb
sy______.pfb
Vera.ttf
VeraBd.ttf
VeraBI.ttf
VeraIt.ttf
zd______.pfb
zx______.pfb
zy______.pfb
_abi____.pfb
_ab_____.pfb
_ai_____.pfb
_a______.pfb
_ebi____.pfb
_eb_____.pfb
_ei_____.pfb
_er_____.pfb

this user guide 中,您会找到所需的一切(尤其是第 48-52 页)。

基本上,您需要包含 Adob​​e .afm ('Adobe Font Metrics') 和 .pfb('Printer Font Binary') 格式的字体描述文件。

这里是 DarkGardenMK 的示例,取自那里:

import os
import reportlab
folder = os.path.dirname(reportlab.__file__) + os.sep + 'fonts'
afmFile = os.path.join(folder, 'DarkGardenMK.afm')
pfbFile = os.path.join(folder, 'DarkGardenMK.pfb')

from reportlab.pdfbase import pdfmetrics
justFace = pdfmetrics.EmbeddedType1Face(afmFile, pfbFile)
faceName = 'DarkGardenMK' # pulled from AFM file
pdfmetrics.registerTypeFace(justFace)
justFont = pdfmetrics.Font('DarkGardenMK', faceName, 'WinAnsiEncoding')
pdfmetrics.registerFont(justFont)
canvas.setFont('DarkGardenMK', 32)
canvas.drawString(10, 150, 'This should be in')
canvas.drawString(10, 100, 'DarkGardenMK')

因此,测试它是否有效 - 您可以直接指向该字体并绘制它,如果它确实对 Times-Roman 字体(具有相应的 .afm、.pfb 文件)执行相同的操作。

如果失败,请参阅第 51 页的 TrueType 字体支持 的说明。

希望对您有所帮助!

我解决此问题的方法是在另一台 PC 上重新安装所有内容...idk 如果真的有必要,但它有效而且我没有收到任何进一步的错误。

(我在 windows 7 而不是 10 上重新安装了所有东西)