Ideas List for Docx4all
Background
Docx4j is a wordprocessor written in Java which uses the OpenXML format implemented in Microsoft Word 2007 as its native file format. This permits 100% fidelity round tripping with Word.
Docx4j is available under GPL 3.
Visit http://dev.plutext.org/docx4all/docx4all.html to launch it now.
Working on docx4all will:
- Give you the opportunity to learn more about Swing, the Swing Application Framework, JavaFX, and JAXB
- give you the satisfaction of adding features to a cross platform word processor which uses Microsoft’s OpenXML as its native format
- Enable you to be authoritative about parts of the OpenXML specification (and inform your opinion about whether it should be made an international standard!)
It is easy to get started developing docx4all, using our Vmware appliance.
Without further ado, here are some ideas for how you can contribute.
Paragraph numbering
Interpret numbering (see http://openiso.org/Ecma/376/Part4/2.9), and number paragraphs in Swing panel as appropriate. Implement a dialog for configuring numbering. Extend the XSL transform to include paragraph numbering in HTML and PDF output.
Skills: Swing
Difficulty: medium
Rationale: basic feature required by end users
Table support
At present, docx4all does not display any tables present in the document. Your task is to display the tables, and make it possible to edit them. See http://openiso.org/Ecma/376/Part4/2.4
Skills: Swing
Difficulty: medium+
Rationale: basic feature required by end users
Style definition dialog
Currently, docx4all will display a paragraph or run using any style attached to it. You can also apply a pre-existing style. What you can’t do is define a new style, or edit the definition of an existing style.
Skills: Swing
Difficulty: easy
Rationale: basic feature required by end users
Document comparison (XML diff)
XML differencing is quite a hard problem. What we’d like to do is emulate the behaviour of Word’s document compare. This is important, because it is used when there is a conflicing updates collision during a plutext collaboration session. See http://blogs.msdn.com/brian_jones/archive/2006/12/11/what-s-up-with-all-those-rsids.aspx Of course, if we are to use rsids, then docx4all will have to write them. The alternative is to do a more traditional XML diff – see http://weblogs.goshaky.com/weblogs/lars/entry/xml_differencing_overview
Skills: algorithm design
Difficulty: hard
Rationale: Required for collaboration (ie use as a plutext client)
Scripting language(Groovy)
Add support for Groovy, so users can write scripts which interact with the document (as it is represented via docx4j’s content model).
Skills: API design
Difficulty: medium
Rationale: It would be cool
Integrate docx4all with Alfresco
Alfresco is a highly regarded document management system which is available under the GPL. Docx4all can launch via Java Web Start (JNLP). It could be made to launch if you click on a docx document in Alfresco’s web interface. If a user clicked on a doc or rtf file, Alfresco could convert it to a docx on the fly (using OxygenOffice? - http://www.oooninja.com/2008/02/word-2007-docx-converter-oxygenoffice.html) , for consumption by docx4all.
This project is a piece of integration work. It would help to know JSF – MyFaces?. An Alfresco development environment is included in http://dev.plutext.org/trac/umbrella/wiki/VirtualAppliance
Skills: API design
Difficulty: medium
Rationale: Alfresco is an environment we’d like to see docx4all working well in
Find/replace
Add find/replace functionality to docx4all.
Skills: Swing
Difficulty: medium
Rationale: basic feature required by end users
