reportlab - 无法在物理打印页面中将上边距设置为零

时间:2014-11-05 16:28:01

标签: python layout reportlab

我正在使用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,顶部有很大的差距。通过播放音阶设置,可以调整一些边距,但不太好。

1 个答案:

答案 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之间有区别?