我正在使用odfpy
使用Python生成OpenDocument文本文件。
LibreOffice之类的程序让我设置页面参数(高度,宽度,页边空白数)。我还可以创建几种样式,并将不同的页面设置为具有不同的样式(有些包含一列,另一些包含两列等等)。
我无法从odfpy
中弄清楚该如何做。该文档不完整,因此,这是我在尝试并引用this blog post(约Draw
个文件,而非Text
)后想到的:
from odf.opendocument import OpenDocumentText
from odf.style import (
Style,
TextProperties,
ParagraphProperties,
MasterPage,
PageLayout,
PageLayoutProperties,
)
from odf.text import (
H,
P,
Span,
Page,
)
doc = OpenDocumentText()
# Styles
s = doc.styles
h1style = Style(name="Heading 1", family="paragraph")
h1style.addElement(TextProperties(attributes={'fontsize':"24pt", 'fontweight':"bold" }))
s.addElement(h1style)
# Page style
layout = PageLayout(name="PM1")
layout.addElement(PageLayoutProperties(
margin="0cm",
pageheight="100mm",
pagewidth="260mm",
printorientation="portrait"))
doc.automaticstyles.addElement(layout)
masterpage = MasterPage(name='Default',
pagelayoutname=layout)
doc.masterstyles.addElement(masterpage)
# Page
page1 = Page(masterpagename=masterpage)
# Text
h = H(outlinelevel=1, stylename=h1style, text="Test Page")
doc.text.addElement(h)
p = P(text="I am a paragraph")
doc.text.addElement(p)
if __name__ == "__main__":
doc.save("output.odt")
这将创建文档,但没有任何自定义样式。
当我尝试将Page
添加到文档中时...
doc.text.addElement(page1)
...。然后我收到此错误:
Traceback (most recent call last):
File "layout-test.py", line 48, in <module>
doc.text.addElement(page1)
File "[...]/lib/python3.6/site-packages/odf/element.py", line 427, in addElement
raise IllegalChild( "<%s> is not allowed in <%s>" % ( element.tagName, self.tagName))
odf.element.IllegalChild: <text:page> is not allowed in <office:text>
我要去哪里错了?如何添加具有不同自定义样式的页面?