小编Jim*_*thy的帖子

添加在ReportLab中使用的字体

我正在尝试在python ReportLab中添加一个字体,以便我可以将它用于函数.该函数使用canvas.Canvas在PDF中绘制一堆文本,没什么复杂的,但我需要为布局问题添加固定宽度的字体.

当我尝试使用我能找到的小信息来注册字体时,这似乎有效.但是当我试图从我的Canvas对象中调用.addFont('fontname')时,我一直在努力

"PDFDocument实例没有属性'addFont'"

该功能是否未实施?如何访问除.getAvailableFonts中列出的10个左右的默认字体以外的字体?谢谢.

我正在尝试制作的一些示例代码:

from reportlab.pdfgen import canvas
c = canvas.Canvas('label.pdf')
c.addFont('TestFont') #This throws the error listed above, regardless of what argument I use (whether it refers to a font or not).
c.drawString(1,1,'test data here')
c.showPage()
c.save()
Run Code Online (Sandbox Code Playgroud)

要注册字体,我试过了

from reportlab.lib.fonts import addMapping
from reportlab.pdfbase import pdfmetrics

pdfmetrics.registerFont(TTFont('TestFont', 'ghettomarquee.ttf'))
addMapping('TestFont', 0, 0, 'TestFont')
Run Code Online (Sandbox Code Playgroud)

其中'ghettomarquee.ttf'只是一个随意的字体.

python fonts reportlab

11
推荐指数
1
解决办法
6176
查看次数

QuerySelectField在一台服务器上运行,在另一台服务器上使用相同的代码中断

我正在设置当前Python/Django项目的测试安装.我的开发服务器上的一切都运行良好,但我们最近为测试和项目的最终生产副本设置了一个新VM.我正在使用Python,Django,SqlAlchemy(带有MSSQL后端)和WTForms作为我的主要包.

我遇到问题,我的测试服务器运行不正常.我没有亲自在任何一台服务器上设置或安装这些软件包(这是由现在已经离开的人完成的),所以我真的不知道所有这一切,但我知道在我的测试服务器上我一直都是我在开发服务器上没有很多问题.例如,当我在模板中使用它们时,Django没有正确地解析方法(它会返回'绑定方法UserForm.action of ... etc'而不是返回值),现在它似乎将一些东西转换为类型当它们从未被宣布为整数时.所有服务器上的python,django,wtforms,sqlalchemy的版本都是相同的.这是在开发服务器上正常工作的示例代码,但在测试服务器上中断(以及错误消息):

forms.py:

class NewPracticeForm(wtforms.Form):
    Name = wtforms.TextField("Practice Name", [wtforms.validators.Required()])
    OrgID = safields.QuerySelectField("Organization", pk_attr='OrgID')
    action = '/Admin/H/newpractice/'
Run Code Online (Sandbox Code Playgroud)

pulsedb.py(sqlalch表定义):

#engine created here, can include that if necessary but its just a standard engine=create_engine() using pymssql
Base = declarative_base()
metadata = Base.metadata

class Practice(Base):
    __tablename__ = 'Practice'
    Name        = Column(String(256) , nullable=False)
    OrgID       = Column(String(30) , ForeignKey('dbo.Orglist.OrgID') , nullable=False)
Run Code Online (Sandbox Code Playgroud)

views.py:

def partNewPractice(request):
    context = Context()
    frm = forms.NewPracticeForm()
    frm.OrgID.query = pwdb.session.query(pwdb.OrglistMap)
    context['form'] = frm
    #Return the response here using …
Run Code Online (Sandbox Code Playgroud)

python django sqlalchemy

10
推荐指数
1
解决办法
558
查看次数

标签 统计

python ×2

django ×1

fonts ×1

reportlab ×1

sqlalchemy ×1