Python 为什么ReportLab不在我想要的地方画线?

Python 为什么ReportLab不在我想要的地方画线?,python,pdf,reportlab,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 =

对不起,这个标题。我不太确定问题出在哪里,所以我无法更准确地表达出来

我试图在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()
当我打印这个文件(无缩放)并测量它时,线不是它应该在的位置。水平向右侧偏移约5mm,垂直向顶部偏移约3mm

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


我知道我可以通过在代码中添加偏移量来适应这个错误,但这已经是一项乏味的任务,我想确保我没有遗漏ReportLab或PDF生成的一些固有问题。

如您所述,在A4页面或页面大小中绘制标尺,您可以在页面中看到这些坐标,然后您可以根据绘制的坐标在页面中的任何需要绘制线条坐标 def drawMyRuler(c): c、 抽绳(100810,'x100') c、 抽绳(200810,'x200') c、 抽绳(300810,'x300') c、 抽绳(400810,'x400') c、 抽绳(500810,'x500')


如您所述,在A4页面或pagesize页面中绘制标尺,您可以在页面中看到这些坐标,然后您可以根据绘制的坐标在页面中需要的任何位置绘制线条 def drawMyRuler(c): c、 抽绳(100810,'x100') c、 抽绳(200810,'x200') c、 抽绳(300810,'x300') c、 抽绳(400810,'x400') c、 抽绳(500810,'x500')


你的打印机有多精确?我首先看一下PDF里面,看看是否所有东西都在它的位置上。Acrobat Pro有必要的测量工具。您是否要将文件打印到A4纸张上?如果是这样的话,你从纸的哪个角开始测量?横向放置时,它应该位于页面的左下角(水平线靠近左下角)。打印机的精度如何?我首先看一下PDF里面,看看是否所有东西都在它的位置上。Acrobat Pro有必要的测量工具。您是否要将文件打印到A4纸张上?如果是这样的话,你从纸的哪个角开始测量?当它横向放置时(水平线在左下角附近),它应该位于页面的左下角。这对OP或有同样困境的过路人都没有帮助。请你对你的解决方案做一点解释,让它对用户友好。这对OP或有同样困境的路人都没有帮助。请您对您的解决方案添加一些解释,使其对用户友好。
    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...