为什么ReportLab不会在我想要的地方绘制我的行?

时间:2015-10-31 18:55:20

标签: python pdf reportlab

抱歉标题。我不太清楚问题是什么,所以我无法更准确地表达它。

我试图在ReportLab中使用Python复制现有表单(仅在纸上提供)。

我测量现有表单并使用值来使用ReportLab进行绘制。这是一个例子:

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4, landscape
from reportlab.lib.units import mm

def test():
    c = canvas.Canvas('test.pdf', pagesize=landscape(A4))
    h, w = A4

    c.line(21*mm, 37*mm, 278*mm, 37*mm) 

    c.showPage()
    c.save()

当我打印此文件(没有缩放)并测量它时,该行不是它应该的位置。它向右水平偏移约5毫米,垂直偏向顶部约3毫米。

为什么?画布/页面周围是否有一些未在手册中记录的边框?线条是否比其视觉表现更宽?

我知道我可以通过在代码中添加偏移来容纳此错误,但这是一项已经很乏味的任务,我想确保我不会错过ReportLab或PDF生成中固有的一些问题。

1 个答案:

答案 0 :(得分:0)

在页面A4或页面尺寸中画出标尺,您可以在页面中看到这些坐标,然后可以根据绘制的坐标在页面中需要的地方画线 def drawMyRuler(c): c.drawString(100,810,'x100') c.drawString(200,810,'x200') c.drawString(300,810,'x300') c.drawString(400,810,'x400') c.drawString(500,810,'x500')

    c.drawString(10,100, 'y100')
    c.drawString(10,200, 'y200')
    c.drawString(10,300, 'y300')
    c.drawString(10,400, 'y400')
    c.drawString(10,500, 'y500')
    c.drawString(10,600, 'y600')
    c.drawString(10,700, 'y700')
    c.drawString(10,800, 'y800')
def test():
    c = canvas.Canvas('test.pdf', pagesize=landscape(A4))
    h, w = A4
    drawMyRuler(c)
    #remaining code as per drawMyRuler coordinates...