【问题标题】:Where is my font getting reset?我的字体在哪里重置?
【发布时间】:2014-03-10 02:18:05
【问题描述】:

我正在编写一个小程序来制作一堆 BINGO 卡片。

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import landscape, letter
from reportlab.lib.units import inch
import random


def set_ranges():
    r = {
        "b": [1, 15, 0],
        "i": [16, 30, 0],
        "n": [31, 45, 0],
        "g": [46, 60, 0],
        "o": [61, 75, 0]
    }
    return r

def set_canvas():
    c = canvas.Canvas("bingo.pdf")
    c.setPageRotation(90)
    c.setFont('Helvetica-Bold', 14)
    print type(c)
    return c

def print_card(ranges, canvas):
    # Set a page gutter
    gutter = 1 * inch
    x = gutter
    y = 8.5 * inch - 2 * gutter
    # First draw the letters themselves
    for letter in "bingo":
        canvas.drawString(x, y, letter)
        # Print X and Y to troubleshoot
        # print('%s, %d, %d' % (letter, x, y))
        # Add the X value for each letter to the dictionary
        ranges[letter][2] = x
        x = x + 1 * inch
    y_reset = y - 1 * inch
    # Then pull the numbers for each square
    for letter in "bingo":
        row = random.sample(range(ranges[letter][0], ranges[letter][1] + 1), 5)
        if letter == "n":
            row[2] = "FREE"            
        x = ranges[letter][2]
        y = y_reset
        for col in row:
            # Print X and Y to troubleshoot
            # print('%d, %d, %d' % (col, x, y))
            canvas.drawString(x, y, str(col))
            y = y - 1 * inch
    canvas.save()

我还有一些工作要做(“FREE”应该居中!我需要画线)但这基本上是可行的。我用r = set_ranges() 和c = set_canvas() 然后for i in range (1,25): print_card(r,c) 来创建一个包含基本卡片的PDF。

但是在第一页之后,字体不再是粗体。它会在哪里重置?

【问题讨论】:

标签: python pdf-generation reportlab


【解决方案1】:

您使用的是哪个版本的 ReportLab?版本 1.1.0 (2012-12-18) 有一个错误,有时会在渲染之前重置字体...

【讨论】:

  • 我有 2.6,但我会选择“有一个错误”,因为这是唯一的上帝解释。
【解决方案2】:

来自报告实验室参考:

def save(self): 保存并关闭文件中的 PDF 文档。如果有 是 ShowPage 自动执行的当前数据。在这之后 操作画布不得进一步使用。

所以你的代码工作起来很奇怪。您可以只生成所有表,然后调用canvas.save()。

【讨论】:

    猜你喜欢
    • 2013-05-22
    • 1970-01-01
    • 2021-05-27
    • 2019-11-04
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    相关资源
    最近更新 更多