我正在使用reportlab 3.0来生成付款表单,其中严格定义每个项目的位置。即使我设置了topMargin = 0,我也有问题使用reportlab制作强制性topMargin。我可以调整底部边距,但是如果将代码设置为零,则上边距(或我无法打印的区域)大约为12 mm。如果我设置上边距为负,则文本开始消失。我想知道,我错过了什么。我会发布图片,但发布了一些帖子,我无法做到。我有使用SimpleDocTemplate的问题,只是使用canvas或从BaseDocTemplate创建文档。我最近试图使最高保证金更正:
from reportlab.lib.pagesizes import A4
from reportlab.platypus import BaseDocTemplate,PageTemplate, Frame
doc = BaseDocTemplate("pdf_file",showBoundary=1,leftMargin=0, rightMargin=0, topMargin=0, bottomMargin=0, pagesize=A4)
frameT = Frame(self.doc.leftMargin, self.doc.bottomMargin, self.doc.width, self.doc.height, topPadding=0, id='normal')
time = Paragraph('16:37',self.styles["normal"])
doc.build([time])
事情变得有趣,因为我能够将底部边距设置为零并打印到边框,但在顶部有不可打印的区域,这确实会造成麻烦
更新 在使用多台打印机对此进行测试后,我发现打印机驱动程序会根据自己的标准强制设置边距。例如,对于HP Deskjet,顶部有很大的差距。通过播放音阶设置,可以调整一些边距,但不太好。
答案 0 :(得分:1)
也许是打印驱动程序...我有一个报告,我将我的TopMargin从0.4 *英寸更改为0.0 *英寸,它排在最右边。
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, Preformatted, XPreformatted
from reportlab.rl_config import defaultPageSize
from reportlab.lib.units import inch
PAGE_HEIGHT = defaultPageSize[1]; PAGE_WIDTH = defaultPageSize[0]
BottomMargin = 0.4 * inch
TopMargin = 0.4 * inch
LeftMargin = .1 * inch
RightMargin = .1 * inch
ContentBottomMargin = TopMargin + 0.25 * inch
ContentTopMargin = BottomMargin + 0.35 * inch
ContentLeftMargin = LeftMargin
ContentRightMargin = RightMargin
正如你所看到的那些是我的常规默认值,但我更改了TopMargin = 0.0 * inch并且它有效。
也许我在为PAGE_HEIGHT导入defaultPageSize [1]和为页面大小导入A4之间有区别?