如何用java编程创建odt文件?

ig9co6j1  于 2023-02-02  发布在  Java
关注(0)|答案(8)|浏览(241)

如何用Java编程创建odt(LibreOffice/OpenOffice Writer)文件?一个“hello world”的例子就足够了。我看了OpenOffice网站,但文档不清楚。

tvz2xvvm

tvz2xvvm1#

看一看ODFDOM - the OpenDocument API
ODFDOM是一个免费的开放文档格式(ODF)库。它的目的是提供一个简单的通用方法来创建、访问和操作ODF文件,而不需要详细的ODF规范知识。它被设计为向ODF开发者社区提供一个简单的lightwork编程API,该API可移植到任何面向对象的语言。
当前的参考实现是用Java编写的。

// Create a text document from a standard template (empty documents within the JAR)
OdfTextDocument odt = OdfTextDocument.newTextDocument();

// Append text to the end of the document. 
odt.addText("This is my very first ODF test");

// Save document
odt.save("MyFilename.odt");

稍后

在撰写本文时(2016-02),我们被告知这些类已被弃用...很久了,并且OdfTextDocument API文档告诉您:
从0.8.8版开始,在简单API中被org.odftoolkit.simple.TextDocument取代。
这意味着您仍然在项目simple-odf-0.8.1-incubating-jar-with-dependencies.jar中包含相同的活动.jar文件,但您希望解压缩以下.jar文件以获取文档:simple-odf-0.8.1-incubating-javadoc.jar,而不是odfdom-java-0.8.10-incubating-javadoc.jar
顺便说一句,文档链接下载了一个.zip文件中的一堆jar文件,上面写着“0.6.1”...但里面的大部分内容看起来更像0.8.1。我不知道为什么在“弃用”类的文档中写着“截至0.8.8”:几乎所有的东西都已经被标记为已弃用。
与上述代码等效的简单代码如下:

odt_doc = org.odftoolkit.simple.TextDocument.newTextDocument()
para = odt_doc.getParagraphByIndex( 0, False )
para.appendTextContent( 'stuff and nonsense' )
odt_doc.save( 'mySpankingNewFile.odt' )

PS使用Jython,但Java应该是显而易见的。

1aaf6o9v

1aaf6o9v2#

我没有试过,但使用JOpenDocument可能是一个选择。(它似乎是一个纯Java库来生成OpenDocument文件。)

4si2a6ki

4si2a6ki3#

JODReports是对以前给出的解决方案的补充,它允许以ODT格式创建办公文档和报告(从模板,使用LibreOffice/OpenOffice.orgWriter字处理程序组成)。

DocumentTemplateFactory templateFactory = new DocumentTemplateFactory();
DocumentTemplate template = templateFactory .getTemplate(new File("template.odt"));
Map data = new HashMap();
data.put("title", "Title of my doc");
data.put("picture", new RenderedImageSource(ImageIO.read(new File("/tmp/lena.png"))));
data.put("answer", "42");
//...
template.createDocument(data, new FileOutputStream("output.odt"));

可选地,文档可以转换为PDF,Word,RTF等与JODConverter

编辑/更新

Here您可以找到一个使用JODReports的示例项目(带有非平凡的格式大小写)。

nlejzf6q

nlejzf6q4#

我编写了一个jruby DSL,用于以编程方式操作ODF文档。
https://github.com/noah/ocelot
它不是严格意义上的java,但它的目标是比ODFDOM更易于使用。
创建Hello World文档非常简单:

% cat examples/hello.rb
include OCELOT

Text::create "hello" do
  paragraph "Hello, world!"
end

还有一些示例(包括一两个电子表格示例)here

v7pvogib

v7pvogib5#

我一直在为自己寻找这个问题的答案。我正在做一个生成不同格式文档的项目,我非常需要库来生成ODT文件。我终于可以说ODFToolkit与最新版本的simple-odf库是生成文本文档的答案。你可以在这里找到官方页面:Apache ODF Toolkit(Incubating) - Simple API这里是a page to download version 0.8.1 (the latest version of Simple API),因为我没有找到最新的版本在官方页面,只有版本0.6.1
在这里你可以找到Apache ODF Toolkit (incubating) cookbook

iyr7buue

iyr7buue6#

您可以尝试使用**JasperReports**生成报告,然后使用export it to ODS
1.您可以获得对所有JasperReports输出格式的广泛支持,例如PDF、XLS、HTML等。
1.碧玉Studio使您可以轻松设计报告

hvvq6cgz

hvvq6cgz7#

The ODF Toolkit项目(代码托管在Github)是前ODFDOM项目的新家,该项目在2018年11月27日之前是Apache Incubator project

lyfkaqu1

lyfkaqu18#

解决方案可能是JODF Java API Independentsoft公司。例如,如果我们想使用此Java API创建一个开放文档文件,我们可以执行以下操作:

import com.independentsoft.office.odf.Paragraph;
import com.independentsoft.office.odf.TextDocument;

public class Example {

    public static void main(String[] args)
    {
        try
        {
            TextDocument doc = new TextDocument();

            Paragraph p1 = new Paragraph();
            p1.add("Hello World");

            doc.getBody().add(p1);

            doc.save("c:\\test\\output.odt", true);
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }
}

还有针对此API的.NET解决方案。

相关问题