{"id":1827,"date":"2011-08-15T17:06:19","date_gmt":"2011-08-15T21:06:19","guid":{"rendered":"http:\/\/2d823b65bb.nxcli.io\/?p=1827"},"modified":"2011-08-15T17:06:19","modified_gmt":"2011-08-15T21:06:19","slug":"apache-odf-toolkit","status":"publish","type":"post","link":"https:\/\/www.robweir.com\/blog\/2011\/08\/apache-odf-toolkit.html","title":{"rendered":"An Invitation to the Apache ODF Toolkit"},"content":{"rendered":"<p>Perhaps overlooked in all the excitement generated by the <a href=\"https:\/\/2d823b65bb.nxcli.io\/blog\/2011\/06\/apache-openoffice.html\">move of OpenOffice.org to Apache<\/a> was the fact that a parallel move is occurring with the ODF Toolkit.\u00a0 A few weeks ago we submitted a <a href=\"http:\/\/wiki.apache.org\/incubator\/ODFToolkitProposal\">proposal <\/a> to Apache to start a new project based on the Java components that were until then hosted by the <a href=\"http:\/\/odftoolkit.org\/\">ODF Toolkit Union<\/a>.\u00a0\u00a0 This was done after consulting with ODF Toolkit community and getting approval from the ODF Toolkit Union&#8217;s Steering Committee.\u00a0 This proposal was recently reviewed, voted on and approved by Apache.\u00a0\u00a0 So now we have the Apache ODF Toolkit project in the Apache Incubator.<\/p>\n<p>So what is this project and what is it good for?<\/p>\n<p>This project consists of Java libraries and tools for working with ODF documents.\u00a0 Not editors, not viewers, not anything with a user interface.\u00a0 These are not end-user tools.\u00a0 These are tools for developers who need to write programs that read, write or manipulate ODF documents.\u00a0 These tools do not require that you have any ODF editor installed.\u00a0 They operate directly on the files.\u00a0 So they are ideal for running on a server, for things like report generation, information extraction, document validation, conversion,\u00a0 etc.\u00a0\u00a0 We have a <a href=\"http:\/\/simple.odftoolkit.org\/demo\/index.html\">page of demos<\/a> that gives a good idea of the range of things possible with the ODF Toolkit.<\/p>\n<p>The ODF Toolkit is important because it enables innovation on top of ODF.\u00a0 By analogy, look at HTML.\u00a0 At one point, the web consisted mainly of hand-authored documents at a handful of academic and government websites.\u00a0 If that was all there was to the web, it would not have been very interesting.\u00a0 What made the web the platform it is today has been the technologies that enable server-side generation of web pages from database queries, or services that analyze web pages and extract and aggregate information.\u00a0 Google was made possible because HTML was an open standard that could be programmatically understood.\u00a0 PHP was possible because HTML was an open standard that could be written.<\/p>\n<p>ODF, unlike the previous generation of binary document formats, is also an open standard.\u00a0 You can read and write ODF documents freely.\u00a0 But writing the code to understand the nitty-gritty of the ODF format is a considerable task.\u00a0 The ODF Toolkit makes this easy for Java programmers.\u00a0 How easy?\u00a0 Here is a &#8220;hello world&#8221; text document:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nTextDocument doc=TextDocument.newTextDocument();\r\ndoc.addParagraph(&quot;Hello world!&quot;);\r\ndoc.save(&quot;hello.odt&quot;);\r\n<\/pre>\n<p>Other tasks, like change styles, combining presentations slide decks, searching and replacing text in a document, extracting text from a document are also simple.\u00a0 More examples that give a flavor of the ODF Toolkit are in the &#8220;<a href=\"http:\/\/simple.odftoolkit.org\/cookbook\/index.html\">cookbook<\/a>&#8220;.<\/p>\n<p>But along with the &#8220;Simple API&#8221; the ODF Toolkit has the ODFDOM layer.\u00a0 This layer allows you to get to every part of an ODF document, at the finest grain level. \u00a0\u00a0 Some tools out there give you only a high level API but then leave you hanging if you want to do something more complicated.\u00a0 Not so with the ODF Toolkit.\u00a0 If you want to drill down and adjust the line spacing of a bullet list in a footnote,\u00a0 then you can do it.<\/p>\n<p>These components enable innovation on top of ODF, innovation that thinks &#8220;outside the editors&#8221; and &#8220;beyond office&#8221;.<\/p>\n<p>So how do you get involved?\u00a0 If you want to help with the project then I invite you to sign up on the project&#8217;s <a href=\"mailto:odf-dev@incubator.apache.org \">development mailing list<\/a>.\u00a0 And if you have questions about using the ODF Toolkit,\u00a0 but don&#8217;t want the additional email traffic from the dev list, then you can sign up for the <a href=\"mailto:odf-users@incubator.apache.org \">users list<\/a>.\u00a0 Of course, I&#8217;ve signed up for both lists.\u00a0 I hope I&#8217;ll see you there!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Perhaps overlooked in all the excitement generated by the move of OpenOffice.org to Apache was the fact that a parallel move is occurring with the ODF Toolkit.\u00a0 A few weeks ago we submitted a proposal to Apache to start a new project based on the Java components that were until then hosted by the ODF [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[211,9,64],"tags":[],"class_list":{"0":"post-1827","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-apache","7":"category-odf","8":"category-open-source","9":"entry"},"_links":{"self":[{"href":"https:\/\/www.robweir.com\/blog\/wp-json\/wp\/v2\/posts\/1827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.robweir.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.robweir.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.robweir.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.robweir.com\/blog\/wp-json\/wp\/v2\/comments?post=1827"}],"version-history":[{"count":14,"href":"https:\/\/www.robweir.com\/blog\/wp-json\/wp\/v2\/posts\/1827\/revisions"}],"predecessor-version":[{"id":1842,"href":"https:\/\/www.robweir.com\/blog\/wp-json\/wp\/v2\/posts\/1827\/revisions\/1842"}],"wp:attachment":[{"href":"https:\/\/www.robweir.com\/blog\/wp-json\/wp\/v2\/media?parent=1827"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.robweir.com\/blog\/wp-json\/wp\/v2\/categories?post=1827"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.robweir.com\/blog\/wp-json\/wp\/v2\/tags?post=1827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}