我已经问过这个问题但是还没有答案,所以我想看一下似乎积极开发并比fpdf python库更好的Reportlab.
我已经看过这个问题给出的答案似乎与这篇博文大致相同.无论如何,显示的剧本充满了错误,但我不想投票,OP接受它,似乎解决了他的问题,我是谁争辩,我宁愿问另一个问题.
首先,您需要导入
from reportlab.pdfgen.canvas import Canvas
Run Code Online (Sandbox Code Playgroud)
它不是canvas它Canvas,然后你不能这样做
Canvas.restoreState() 要么 Canvas.saveState()
也许有更多的错误,我宁愿使用另一个例子.昨天我花了整整一夜试图让那个片段工作而不能.
是否有另一种创建页脚的方法?我想问的一个具体方法就是这个,那个人做了一个for循环,row[0]他写了row[1]一些东西
我指望一个LibreOffice文件,它是A4,使用Liberation Serif12,有49行.假设平均有45行,根据字体大小,页脚字体大小为8,不能只是插入这样的页脚x=row[45],然后根据页码增加x?这不是一个更容易解决的问题吗?
如果我能检测到文件的结尾或插入文本的最后一行,那么我认为我可以做到.
如果您参考我的其他问题,您会注意到我将powerpoint,excel和word转换为pdf然后插入页脚.
如果有一个可以在linux上工作的库和windows隐藏powerpoint并且excel到word,那么添加页脚然后转换为pdf,这将是很棒的,因为我认为使用文档然后PDF更容易
我试图将页眉和页脚包含在单个页面上。我在reportlab中引用了A multiline(paragraph) footer and header,并使用了Jochen和NateB80所述的方法。但只生成页眉,而不生成页脚。
def header(canvas, doc, content):
canvas.saveState()
w, h = content.wrap(doc.width, doc.topMargin)
content.drawOn(canvas, doc.leftMargin, doc.height + doc.topMargin - h)
canvas.restoreState()
def footer(canvas, doc, content):
canvas.saveState()
w, h = content.wrap(doc.width, doc.bottomMargin)
content.drawOn(canvas, doc.leftMargin, h)
canvas.restoreState()
styles = getSampleStyleSheet()
PAGESIZE = pagesizes.portrait(pagesizes.A4)
# PAGESIZE = letter
pdf = SimpleDocTemplate(filename, pagesize=PAGESIZE, leftMargin=2.2*cm, rightMargin=2.2*cm,
topMargin=1.5*cm,bottomMargin=2.5*cm)
frameh = Frame(pdf.leftMargin, pdf.bottomMargin, pdf.width, pdf.height - 2 * cm, id='normal')
header_content = Paragraph("This is a header. testing testing testing ", styles['Normal'])
templateh = …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个文档,该文档的页码格式为“Page x of y”。我已经尝试过 NumberedCanvas 方法(http://code.activestate.com/recipes/576832/以及论坛https://groups.google.com/forum/#!topic/reportlab-users/9RJWbrgrklI)但是与我的可点击目录 ( https://www.reportlab.com/snippets/13/ )冲突。
我从这篇文章http://two.pairlist.net/pipermail/reportlab-users/2002-May/000020.html 中了解到,使用表单是可能的,但是这方面的例子非常稀少且没有信息量。有没有人知道如何使用表单来实现这一点(或修复 NumberedCanvas 方法?)