Skip to main content
 首页 » 编程设计

python之为什么 z3c.RML 会忽略 template> 的 pageSize 属性

2025年05月04日26虾米姐

我正在尝试获取 A4-Landscape 输出文件。我正在修改的文档是 A4-Portrait,所以我认为简单的切换:pageSize="(21cm, 29.7cm)" 到 pageSize="(29.7 厘米,21 厘米)”,但什么也没发生。

然后我创建了一个属性:rotation="90"。屏幕上的页面仍然是 A4 纵向,但内容旋转了 90 度。在纸上会很好,但在屏幕上我必须将头转 90 度,不是很舒服。

在此之后我尝试了:pageSize="(10cm, 10cm)",认为这应该看起来很糟糕,但没有任何改变。

有没有可能,生成的 PDF 文件的大小是在 Python 代码中设置的,而不是由 RML 文件设置的?

这是 Python 代码:

#!venv/bin/python 
# -*- coding: utf-8 -*- 
from z3c.rml import pagetemplate 
rmlPageTemplate = pagetemplate.RMLPageTemplateFile("test.rml") 
open('test.pdf', 'wb').write(rmlPageTemplate()) 

我的 RML 文件锁如下:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE document SYSTEM "rml_1_0.dtd"> 
<document test.pdf"> 
    <docinit> 
        ... 
    </docinit> 
    <template   pageSize="(10cm, 10cm)" 
                rotation="90" 
                leftMargin="2.5cm" 
                rightMargin="2.5cm" 
                topMargin="2.5cm" 
                bottomMargin="2.5cm" 
                showBoundary="1" 
                > 
        <pageTemplate id="main"> 
            <frame id="first" x1="2.5cm" y1="2.5cm" width="24.7cm" height="16cm" showBoundary="1"/> 
        </pageTemplate> 
    </template> 
    <stylesheet> 
        ... 
    </stylesheet> 
    <story> 
        ... 
    </story> 
</document> 

非常感谢。

请您参考如下方法:

https://github.com/zopefoundation/z3c.rml/blob/master/RML-DIFFERENCES.rst

RML2PDF 和 z3c.rml 实现差异

本文档概述了 ReportLab Inc. 的 RML2PDF 库和 z3c.rml 之间的区别。

不兼容

pageSize:在此实现中称为 pagesize 以匹配 API。