我正在尝试使用Node.js生成ODT文档,但是我对如何使用模板或模板是否是合适的选择感到有些困惑。
我要创建的文档很简单:目录,标题1和每个标题后的段落。
我的书只用以下程序表示:
const chapters = [
{
title: "It Begins", paragraphs: [
"On the first day...",
"Things were looking good...",
"Blah blah blah..."
]
},
{
title: "Second Chapter", paragraphs: [
"Blah blah blah..."
]
}
];
理想情况下,我会喜欢
const doc = new ODTFile();
chapters.forEach(chapter => {
doc.insert('Heading 1', chapter.title);
chapter.paragraphs.forEach(para => doc.insert('paragraph', para));
});
doc.generateTableOfContents();
doc.writeFile('foo.odt');
不幸的是,似乎没有太多可用于JS的LibreOffice / ODT库,并且没有一个可以请求目录的文件。
所以我的第二个想法是创建一个ODT模板,然后传入值以填充模板所需的值。但是寻找有关如何执行此操作的文档非常棘手,特别是在LibreOffice网站broken in terms of rendering and partly unreadable中。我尚不清楚模板是否可以处理传递任意数量的值或以这种方式嵌套/配对的值。
答案 0 :(得分:0)
如果使用Pandoc,该怎么办?您可以轻松构建Markdown文件,然后使用Pandoc将其转换为ODT。 NPM中甚至还有pandoc wrapper(还有another one)。
在您的示例中,您只需要编写如下文件:
# It Begins
On the first day...
Things were looking good...
Blah blah blah...
# Second Chapter
Blah blah blah...
Pandoc甚至允许使用reference document(用于更改默认样式)和templates(用于将Markdown元数据值用作文档中的变量)。