2010-04-16 64 views
11

Tôi đang cố gắng thêm phông chữ vào báo cáo Python để tôi có thể sử dụng nó cho một hàm. Hàm này đang sử dụng canvas.Canvas để vẽ một chuỗi văn bản trong một tệp PDF, không có gì phức tạp, nhưng tôi cần thêm phông chữ có chiều rộng cố định cho các vấn đề bố cục.Thêm phông chữ để sử dụng trong ReportLab

Khi tôi cố gắng đăng ký phông chữ bằng cách sử dụng thông tin nhỏ mà tôi có thể tìm thấy, điều đó dường như hoạt động. Nhưng khi tôi cố gắng gọi .addFont ('fontname') từ đối tượng Canvas của tôi, tôi tiếp tục nhận được

"dụ PDFDocument đã không có thuộc tính 'addFont"

là chức năng chỉ không được thực hiện? Làm cách nào để tôi có quyền truy cập vào các phông chữ khác với 10 phông chữ mặc định được liệt kê trong .getAvailableFonts? Cảm ơn.

Một số mã ví dụ về những gì tôi đang cố gắng để làm cho xảy ra:

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() 

Để đăng ký các phông chữ, tôi đã cố gắng

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

pdfmetrics.registerFont(TTFont('TestFont', 'ghettomarquee.ttf')) 
addMapping('TestFont', 0, 0, 'TestFont') 

nơi 'ghettomarquee.ttf' chỉ là một phông chữ ngẫu nhiên tôi đã nằm xung quanh.

Trả lời

7
c.setFont('TestFont') 
c.drawString(1,1,'test data here') 

setFont để đặt tên phông chữ bạn sẽ sử dụng và drawString.

Báo cáoLab sẽ tự động nhúng phông chữ nếu bạn sử dụng nó trong tài liệu, bạn không phải thêm phông chữ theo cách thủ công sau khi bạn đã đăng ký phông chữ trên toàn cầu dưới tên.

+1

ý của bạn là 'c.setFont ('TestFont')' trong dòng đầu tiên? – drevicko

Các vấn đề liên quan