Docx4j - Getting Started 
This guide is for docx4j 2.7.1. 
The latest version of this document can always be found in docx4j svn in /docs
(in Flat OPC XML format 
for Word 2007, HTML
, and PDF
). 
The most up to date copy of this document is in English.  From time to time, it is machine translated into 
other languages.   
What is docx4j? 
docx4j is a library for unzipping a docx "package", and parsing the WordprocessingML XML to create an 
in-memory representation in Java.  Recent versions of docx4j also support Powerpoint pptx files and 
Excel xlsx files. 
It is similar in concept to Microsoft's  OpenXML SDK, which is for .NET. 
docx4j is open source, available under the Apache License (v2).  As an open source project, contributions 
are welcome.  Please see the docx4j forum at http://dev.plutext.org/forums/
for details. 
The Docx4j social contract
docx4j is currently available under the Apache Software license.  This gives you freedom to do pretty 
much anything you like with it.  It also means you don't have to pay for it (there is no incentive to take 
up a commercial license, so we don't offer one). 
The quid pro quo is that if docx4j helps you out, you should please "give something back", by way of 
code, community support, by "spreading the word" (promotion), or by buying commerical support. Your 
choice.  docx4j needs you help to make it easier for people to find it.  
If you choose promotion, your options include: 
emailing to jharrop@plutext.com a testimonial which we can put on our website (preferably 
with your organization name, but without is worthwhile as well),  
a blog post, a tweet, or a helpful (non-spammy) comment in an online forum, 
sharing the content on our blog, following jasonharrop on Twitter, or connecting on LinkedIn. 
Your promotion/support will help grow the docx4j community and thus its strength, to the benefit of 
all.  
Pdf rotate page - rotate PDF page permanently in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Users to Change the Rotation Angle of PDF File Page Using C#
saving rotated pdf pages; rotate all pages in pdf and save
Pdf rotate page - VB.NET PDF Page Rotate Library: rotate PDF page permanently in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
PDF Document Page Rotation in Visual Basic .NET Class Application
rotate pdf page few degrees; rotate pages in pdf
Please complete our very short new user survey at 
http://www.plutext.com/limesurvey/index.php?sid=78372
. It 
includes a question on the above.  Thanks. 
Docx4j relies heavily on JAXB, the JCP standard for Java - XML binding.  You can think of docx4j as a JAXB 
implementation of (amongst others): 
Open Packaging Conventions 
WordProcessingML (docx) part of Open XML 
Presentation ML (pptx) part of OpenXML  
SpreadsheetML (xlsx) part of Open XML. 
The library is designed to round trip docx files with 100% fidelity, and supports all 2007 WordML.  
Support for new Word 2010 features will be added soon. 
The docx4j project is sponsored by Plutext (www.plutext.com
). 
Is docx4j for you? 
Docx4j is for processing docx documents (and pptx presentations and xlsx spreadsheets) in Java. 
It isn't for old binary (.doc) files.  If you wish to invest your effort around docx (as is wise), but you also 
need to be able to handle old doc files, see further below for your options.  
Nor is it for RTF files. 
If you want to process docx documents on the .NET platform, you should look at Microsoft's  OpenXML 
SDK instead. 
An alternative to docx4j is Apache POI.  I'd particularly recommend that if you are only processing Excel 
documents, and need support for the old binary xls format.  Since POI uses XmlBeans (not JAXB) it may 
be a better choice if you want to use XmlBeans. 
What sorts of things can you do with docx4j? 
Open existing docx (from filesystem, SMB/CIFS, WebDAV using VFS), pptx, xlsx 
Create new docx, pptx, xlsx 
Programmatically manipulate the above (of course) 
Specific to docx4j (as opposed to pptx4j, xlsx4j): 
Template substitution; CustomXML binding 
Produce/consume Word 2007's xmlPackage (pkg) format 
Save docx to filesystem as a docx (ie zipped), or to JCR (unzipped) 
C# TIFF: How to Rotate TIFF Using C# Code in .NET Imaging
Convert Tiff to Jpeg Images. Convert Word, Excel, PowerPoint to Tiff. Convert PDF to Tiff. Move Tiff Page Position. Rotate a Tiff Page. Extract Tiff Pages. Tiff
pdf page order reverse; pdf rotate just one page
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
XDoc.PDF ›› VB.NET PDF: Delete PDF Page. using RasterEdge.Imaging.Basic; using RasterEdge.XDoc.PDF; How to VB.NET: Delete a Single PDF Page from PDF File.
pdf rotate pages separately; how to rotate one pdf page
Apply transforms, including common filters 
Export as HTML or PDF 
Diff/compare documents, paragraphs or sdt (content controls) 
Font support (font substitution, and use of any fonts embedded in the document) 
This document focuses primarily on docx4j, but the general principles are equally applicable to pptx4j 
and xlsx4j. 
docx4all  is an example of an application based on docx4j; its a Swing-based wordprocessor for docx 
documents.  You can try it or download its source code at dev.plutext.org 
What Word documents does it support? 
Docx4j can read/write docx documents created by or for Word 2007, or earlier versions which have the 
compatibility pack installed. 
The relevant parts of docx4j are generated from the ECMA schemas. 
It can't read/write Word 2003 XML documents.  The main problem with those is that the XML 
namespace is different. 
Docx4j 2.7.1 handles Word 2010 specific features, by gracefully degrading to the specified 2007  
For more information, please see Specification versions below. 
Handling legacy binary .doc files 
Apache POI's HWPF can read .doc files, and docx4j could use this for basic conversion of .doc to .docx.  
The problem with this approach is that POI's HWPF code fails on many .doc files. 
An effective approach is to use OpenOffice (via jodconverter) to convert the doc to docx, which docx4j 
can then process.  If you need to return a binary .doc, OpenOffice/jodconverter can convert the docx 
back to .doc. 
There is also http://b2xtranslator.sourceforge.net/ .  If a pure Java approach were required, this could 
be converted. 
Using docx4j binaries 
You can download the latest version of docx4j from http://dev.plutext.org/docx4j/
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Insert PDF Page. Professional .NET PDF control for inserting PDF page in Visual Basic .NET class application.
pdf reverse page order online; reverse pdf page order online
C# PDF Page Insert Library: insert pages into PDF file in C#.net
page processing functions, such as how to merge PDF document files by C# code, how to rotate PDF document page, how to delete PDF page using C# .NET, how to
pdf rotate all pages; how to rotate page in pdf and save
In general, we suggest you develop against a currently nightly build, since the latest formal release can 
often be several months old. 
Supporting jars can be found in the .tar.gz version, or in the relevant subdirectory.   
Command Line Samples 
With docx4j version 2.6.0, there are several samples you can run right away from the command line. 
The two to try (both discussed in detail further below) are: 
OpenMainDocumentAndTraverse 
PartsList 
Invoke with a command like: 
java -cp docx4j.jar:log4j-1.2.15.jar org.docx4j.samples.OpenMainDocumentAndTraverse [input.docx]
If there are any images in the docx, you'd also need: 
xmlgraphics-commons-1.4.jar 
commons-logging-1.1.1.jar
on your classpath. 
docx4j dependencies 
log4j 
To do anything with docx4j, you need log4j on your classpath. 
To actually enable logging, you need a log4.properties or log4j.xml on your class path.  See for example 
http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/src/main/resources/log4j.xml
If you don't 
configure log4j like that, docx4j will auto configure logging at INFO level. 
If you are using Eclipse to run things, in the run configuration: 
add VM argument  
-Dlog4j.configuration=log4j.xml 
to the classpath, add a user entry (click "advanced..") for 
src/main/resources 
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Pages. |. Home ›› XDoc.PDF ›› C# PDF: Delete PDF Page. Demo Code: How to Delete a Single PDF Page from PDF File in C#.NET. How
rotate pdf page and save; rotate pages in pdf expert
VB.NET PDF - View PDF with WPF PDF Viewer for VB.NET
1. Anticlockwise rotation. Rotate PDF page 90 degree in anticlockwise. 2. Clockwise rotation. Rotate PDF page 90 degree in clockwise. 3. Zoom in.
rotate pdf pages by degrees; pdf rotate page and save
images 
If there are any images in the docx, you'll also need: 
xmlgraphics-commons-1.4.jar 
which in turn requires commons-logging-1.1.1.jar
other dependencies  
Depending what you want to do, the other dependencies will be required. The following table explains 
the other dependencies: 
Functionality 
Jar 
which also requires 
HTML export 
Xalan 
PDF export 
Xalan, 
FOP 
commons-io 
avalon-framework api & impl 
OLE, binary import 
POI, commons-codec 
Differencing 
commons-lang,  
stax (for Java 1.5 only) 
wmf2svg 
Saving/loading via WebDAV etc 
External graphics  
commons-vfs 
jdom 
As noted above, docx4j dependencies (with the exception of stax) can be found in the .tar.gz version, or 
in the relevant subdirectory of  http://dev.plutext.org/docx4j/
You can also get them via Maven (see next section). 
Using docx4j via Maven 
Maven POM can be found at 
http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/m2/org/docx4j/docx4j
As from version 2.7.1, docx4j is in Maven Central. 
JDK versions 
You need to be using Java 1.5+. 
C# WPF PDF Viewer SDK to view PDF document in C#.NET
1. Anticlockwise rotation. Rotate PDF page 90 degree in anticlockwise. 2. Clockwise rotation. Rotate PDF page 90 degree in clockwise. 3. Zoom in.
rotate pdf pages individually; rotate pages in pdf online
VB.NET PDF - WPF PDF Viewer for VB.NET Program
Existing PDF Pages. Page: Replace PDF Pages. Page: Move Page Position. Page: Copy, Paste PDF Pages. Page: Rotate a PDF Page. PDF Read. Text
how to save a pdf after rotating pages; rotate individual pdf pages reader
This is because of JAXB
1
.  If you must use  1.4, retrotranslator can reportedly make it work. 
If you are using 1.5 only, and want to do differencing, you will need stax (uncomment it in pom.xml). 
A word about Jaxb 
docx4j uses JAXB to marshall and unmarshall the key parts in a WordprocessingML document, including 
the main document part, the styles part, the theme part, and the properties parts. 
JAXB is included in Sun's Java 6 distributions, but not 1.5.  So if you are using the 1.5 JDK, you will need 
JAXB 2.1.x on your class path.   
Bits of docx4j, such as org.docx4j.wml
and  org.docx4j.dml
were generated using JAXB's XJC. We 
modified the wml.xsd schema in particular, so that the key resulting classes are a bit more human 
friendly (ie don't all start with CT_ and ST_).  
Javadoc 
Javadoc for browsing online or download, can be found in the directory http://dev.plutext.org/docx4j/
Docx4j source code 
To obtain a copy of the current source code: 
svn co http://dev.plutext.org/svn/docx4j/trunk/docx4j docx4j 
Alternatively, you can browse it online, at: 
http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/ 
Building docx4j from source  
To obtain a copy of the current source code: 
svn co http://www.docx4java.org/svn/docx4j/trunk/docx4j docx4j 
Alternatively, you can browse it online, at: 
http:// www.docx4java.org/trac/docx4j/browser/trunk/docx4j/ 
1
http://forums.java.net/jive/thread.jspa?threadID=411
Building docx4j from source  
Command line -via Maven 
Create a directory called workspace, and cd into it. 
svn co http://
www.docx4java.org/svn/docx4j/trunk/docx4j docx4j 
export MAVEN_OPTS=-Xmx512m 
mvn install  
Command line - via Ant 
Before you can build via ant, you need to obtain docx4j's dependencies.  You can get them from the 
binary distribution, or via maven.   
Once you have done that, create a directory called workspace, and cd into it. 
svn co http://
www.docx4java.org/svn/docx4j/trunk/docx4j docx4j 
Edit build.xml, so the pathelements point to where you placed the dependencies. 
Then 
ant dist
or on Linux 
ANT_OPTS="-Xmx512m -XX:MaxPermSize=256m" ant dist
That ant command will create the docx4j.jar and place it and all its dependencies in the dist dir. 
Eclipse 
Prerequisites
Eclipse installed 
Install an Eclipse subversion plugin eg http://subclipse.tigris.org/update_1.2.x 
Install Maven and the Eclipse plugin
And, as discussed above: 
Java 1.5 or 6 
JAXB: either the JAXB implementation included in Java 6, or the 2.x reference implementation.  
Instructions
File > New "Project .." > SVN > Checkout Projects from SVN 
Create a new repository location; Url is http://dev.plutext.org/svn/docx4j 
Click folder "trunk", and select docx4j; click next 
You want to check it out as a project configured using the New Project Wizard 
Then select Java > Java Project; click Next 
Choose a project name (eg docx4j) then click Next 
Click Finish (we'll define the Java build settings in a later step) 
After a couple of other dialog boxes, you should have the new project in your workspace. 
Enable Maven (make sure you have Maven and its plugin installed - see Prerequisites above): 
with Eclipse Indigo 
o
Right click on the project 
o
Click "Configure > Convert to Maven Project" 
with earlier versions of Eclipse 
o
Run mvn install in the docx4j dir from a command prompt (just in case) 
o
Right click on project > Maven 2 > EnableDependency Management 
Set compiler version & system library: 
Right click on the project (or Alt-Enter) 
Choose "Java Compiler", then set JDK compliance to 1.6 
Choose "Java Build Path", and check you are using 1.6 "JRE System Library". If not, remove, then 
click "Add Library" 
Now, we need to check the class path etc within Eclipse so that it can build. 
Build Path > Configure Build Path > Java Build Path > Source tab 
Verify it contains: 
o
src/diffx 
o
src/glox4j 
o
src/main/java 
o
src/pptx4j/java (remove "Excluded: **" if present!) 
o
src/svg 
o
src/xslx4j/java 
o
src/xslfo 
The project should now be working in Eclipse without errors
2
.  
Open an existing docx/pptx/xlsx document 
org.docx4j.openpackaging.packages.WordprocessingMLPackage represents a docx 
document. 
To load a document, all you have to do is: 
WordprocessingMLPackage wordMLPackage =  
WordprocessingMLPackage.load(new java.io.File(inputfilepath)); 
That method can also load ͞Flat OP ͟ XML files. 
You can then get the main document part (word/document.xml): 
MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart(); 
After that, you can manipulate its contents.  
WordprocessingMLPackage.load uses  
LoadFromZipNG loader = new LoadFromZipNG(); 
If you need to load a docx from an input stream, you can do something like: 
WordprocessingMLPackage pkg = (WordprocessingMLPackage)loader.get(stream); 
A similar approach works for pptx files: 
PresentationMLPackage presentationMLPackage =  
(PresentationMLPackage)OpcPackage.load(new java.io.File(inputfilepath)); 
And similarly for xlsx files. 
WordML concepts 
To do anything much beyond this, you need to have an understanding of basic WordML concepts. 
According to the Microsoft Open Packaging spec, each docx document is made up of a number of ͞Part͟ 
files, zipped up.  A Part is usually XML, but might not be (an image part, for example, isn't). 
2
If you get the error 'Access restriction: The type is not accessible due to restriction on required library rt.jar' 
(perhaps using some combination of Eclipse 3.4 and/or JDK 6 update 10?), you need to go into the Build Path for 
the project, Libraries tab, select the JRE System Library, and add an access rule, "Accessible, **".  
10 
The parts form a tree. If a part has child parts, it must have a relationships part which identifies these. 
The part which contains the main text of the document is the Main Document Part.  Each Part has a 
name.  The name of the Main Document Part is usually "/word/document.xml". 
If the document has a header, then the main document part woud have a header child part, and this 
would be described in the main document part's relationships (part). 
Similarly for any images.  To see the structure of any given document, see "Parts List" further below. 
An introduction to WordML is beyond the scope of this document.  You can find a very readable 
introduction in 1
st
edition Part 3 (Primer) at http://www.ecma-
international.org/publications/standards/Ecma-376.htm
or http://www.ecma-
international.org/news/TC45_current_work/TC45_available_docs.htm
(a better link for the 1st edition 
(Dec 2006), since its not zipped up).  
Specification versions  
From Wikipedia: 
The Office Open XML
file formats were standardised between December 2006 and November 2008,  
first by the Ecma International
consortium (where they became ECMA-376),  
and subsequently .. by the ISO
/IEC
's Joint Technical Committee 1
(where they became ISO/IEC 29500:2008). 
The Ecma-376.htm link also contains the 2nd edition documents (of Dec 2008), which are 
"technically 
aligned with ISO/IEC 29500". 
Office 2007 SP2 implements ECMA-376 1st Edition
3
; this is what docx4j implements. 
ISO/IEC 29500 (
ECMA-376 2nd Edition) has
Strict and Transitional conformance classes.  Office 2010 supports
4
transitional, and also has read only support for strict. 
Architecture 
Docx4j has 3 layers: 
1.
org.docx4j.openpackaging 
OpenPackaging handles things at the Open Packaging Conventions level:  unzipping a docx into 
WordprocessingMLPackage and a set of objects inheriting from Part;  allowing parts to be 
added/deleted; saving the docx 
3
http://blogs.msdn.com/b/dmahugh/archive/2009/01/16/ecma-376-implementation-notes-for-office-2007-sp2.aspx
4
http://blogs.msdn.com/b/dmahugh/archive/2010/04/06/office-s-support-for-iso-iec-29500-strict.aspx
Documents you may be interested
Documents you may be interested