renderPM Не могу найти .pfb для лица "Times-Roman" - PullRequest
1 голос
/ 01 мая 2020

Полный журнал ошибок:

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

1 Ответ

0 голосов
/ 05 мая 2020

В этом руководстве пользователя вы найдете все, что ищете (особенно страницы 48-52).

В основном вам необходимо включить файлы описания шрифта в Формат Adobe .afm («Метрики шрифтов Adobe») и .pfb («Двоичные шрифты принтеров»).

Итак, вот пример для 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).

Если это не помогло, см. Объяснение Поддержка шрифтов TrueType на стр. 51.

Надеюсь, это поможет!

...