如何使用java以编程方式创建odt文件?

发布于 2024-10-13 12:40:19 字数 113 浏览 4 评论 0原文

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

How can I create an odt (LibreOffice/OpenOffice Writer) file with Java programmatically? A "hello world" example will be sufficient. I looked at the OpenOffice website but the documentation wasn't clear.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

梦行七里 2024-10-20 12:40:19

查看ODFDOM - OpenDocument API

ODFDOM 是一种免费的 OpenDocument 格式
(ODF) 库。其目的是
提供一种简单的通用方法来创建,
访问和操作 ODF 文件,
不需要详细的知识
ODF 规范。这是
旨在为ODF开发人员提供
轻松轻松的社区
编程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 年 2 月),我们被告知这些类已被弃用......很大的时间,以及 OdfTextDocument API文档告诉你:

从版本 0.8.8 开始,被 org.odftoolkit.simple.TextDocument 取代
简单的 API。

这意味着您的项目中仍然包含相同的活动 .jar 文件,simple-odf-0.8.1-incubating-jar-with-dependency.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 应该是显而易见的。

Take a look at ODFDOM - the OpenDocument API

ODFDOM is a free OpenDocument Format
(ODF) library. Its purpose is to
provide an easy common way to create,
access and manipulate ODF files,
without requiring detailed knowledge
of the ODF specification. It is
designed to provide the ODF developer
community with an easy lightwork
programming API portable to any
object-oriented language.

The current reference implementation
is written in 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");

later

As of this writing (2016-02), we are told that these classes are deprecated... big time, and the OdfTextDocument API documentation tells you:

As of release 0.8.8, replaced by org.odftoolkit.simple.TextDocument in
Simple API.

This means you still include the same active .jar file in your project, simple-odf-0.8.1-incubating-jar-with-dependencies.jar, but you want to be unpacking the following .jar to get the documentation: simple-odf-0.8.1-incubating-javadoc.jar, rather than odfdom-java-0.8.10-incubating-javadoc.jar.

Incidentally, the documentation link downloads a bunch of jar files inside a .zip which says "0.6.1"... but most of the stuff inside appears to be more like 0.8.1. I have no idea why they say "as of 0.8.8" in the documentation for the "deprecated" classes: just about everything is already marked deprecated.

The equivalent simple code to the above is then:

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

PS am using Jython, but the Java should be obvious.

无戏配角 2024-10-20 12:40:19

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

I have not tried it, but using JOpenDocument may be an option. (It seems to be a pure Java library to generate OpenDocument files.)

耳根太软 2024-10-20 12:40:19

先前给出的解决方案的补充是 JODReports,它允许以 ODT 格式创建 Office 文档和报告(从模板,使用 LibreOffice/OpenOffice.org Writer 字处理器编写)。

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"));

或者,可以使用 JODConverter 将文档转换为 PDF、Word、RTF 等。

编辑/更新

在 GitHub 上, ansgarkonermann/jodreports-examples 是一个使用 JODReports 的示例项目(不包含- 简单的格式化案例)。

A complement of previously given solutions would be JODReports, which allows creating office documents and reports in ODT format (from templates, composed using the LibreOffice/OpenOffice.org Writer word processor).

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"));

Optionally the documents can then be converted to PDF, Word, RTF, etc. with JODConverter.

Edit/update

On GitHub, ansgarkonermann/jodreports-examples is a sample project using JODReports (with non-trivial formatting cases).

山田美奈子 2024-10-20 12:40:19

我编写了一个 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

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

I have written a jruby DSL for programmatically manipulating ODF documents.

https://github.com/noah/ocelot

It's not strictly java, but it aims to be much simpler to use than the ODFDOM.

Creating a hello world document is as easy as:

% cat examples/hello.rb
include OCELOT

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

There are a few more examples (including a spreadsheet example or two) here.

晚风撩人 2024-10-20 12:40:19

ODF Toolkit 项目(代码托管于 Github) 是前 ODFDOM 项目的新家,直到 2018 年 11 月 27 日为止 Apache 孵化器项目

The ODF Toolkit project (code hosted at Github) is the new home of the former ODFDOM project, which was until 2018-11-27 a Apache Incubator project.

热风软妹 2024-10-20 12:40:19

我一直在为自己寻找这个问题的答案。我正在开发一个用于生成不同格式文档的项目,并且我非常需要库来生成 ODT 文件。
我终于可以说,带有最新版本 simple-odf 库的 ODFToolkit 是生成文本文档的答案。
您可以在这里找到官方页面:
Apache ODF 工具包(孵化)- 简单 API
这是 一个页面下载0.8.1版本(Simple API的最新版本),因为我在官方页面没有找到最新版本,只有0.6.1版本

,在这里你可以找到Apache ODF 工具包(孵化)食谱

I have been searching for an answer about this question for myself. I am working on a project for generating documents with different formats and I was in a bad need for library to generate ODT files.
I finally can say the that ODFToolkit with the latest version of the simple-odf library is the answer for generating text documents.
You can find the the official page here :
Apache ODF Toolkit(Incubating) - Simple API
Here is a page to download version 0.8.1 (the latest version of Simple API) as I didn't find the latest version at the official page, only version 0.6.1

And here you can find Apache ODF Toolkit (incubating) cookbook

帅哥哥的热头脑 2024-10-20 12:40:19

您可以尝试使用 JasperReports 生成报告,然后将其导出到 ODS。这种方法的好处是

  1. 您可以获得对所有 JasperReports 输出格式的广泛支持,例如 PDF、XLS、HTML 等。
  2. Jasper Studio 使您可以轻松设计报告

You can try using JasperReports to generate your reports, then export it to ODS. The nice thing about this approach is

  1. you get broad support for all JasperReports output formats, e.g. PDF, XLS, HTML, etc.
  2. Jasper Studio makes it easy to design your reports
夜无邪 2024-10-20 12:40:19

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

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 解决方案。

the solution may be JODF Java API Independentsoft company.
For example, if we want to create an Open Document file using this Java API we could do the following:

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();
        }
    }
}

There are also .NET solutions for this API.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文