source: trunk/docx4j/docs/Docx4j_GettingStarted_foreign.html @ 1112

Revision 1112, 188.2 KB checked in by jharrop, 2 years ago (diff)

Dodgy characters removed using the wonderful SC UniPad?

  • Property svn:mime-type set to text/html
Line 
1<?xml version="1.0" encoding="utf-8"?>
2<html xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
3    <head>
4        <style><!--
5
6                                                /*paged media */ 
7                                                div.header {display: none }
8                                                div.footer {display: none } 
9                                                /*@media print { */
10                                               
11                                                        div.footer {display: block; position: running(footer) }
12                                               
13
14                                                @page { size: A4; margin: 10%; @top-center {
15                                                content: element(header) } @bottom-center {
16                                                content: element(footer) } }
17
18
19                                                /*font definitions*/
20
21                                                /*element styles*/ del
22                                                {text-decoration:line-through;color:red;}
23                                               
24                                                                ins {text-decoration:none;}
25                                                       
26
27                                                /*class styles*/
28
29                                               
30                                               
31                                                /* Word style definitions */
32                                               
33 /* TABLE STYLES */ 
34.TableNormal {display:table;position: relative; margin-left: 0in;}
35.TableGrid {display:table;position: relative; margin-left: 0in;border-top-style: solid;border-top-width: 1px;border-top-color: #000000;border-bottom-style: solid;border-bottom-width: 1px;border-bottom-color: #000000;border-left-style: solid;border-left-width: 1px;border-left-color: #000000;border-right-style: solid;border-right-width: 1px;border-right-color: #000000;space-after: 0in;line-height: 100%;}
36
37 /* PARAGRAPH STYLES */ 
38.DocDefaults {display:block;space-after: 4mm;line-height: 115%;font-family: Calibri;font-size: 11.0pt;}
39.Normal {display:block;}
40.NormalWeb {display:block;space-before: 0.07in;space-after: 0.07in;line-height: 100%;font-family: Times New Roman;font-size: 12.0pt;}
41.Command {display:block;position: relative; margin-left: 0.5in;font-family: Consolas;font-size: 10.0pt;}
42.Heading1 {display:block;page-break-after: avoid;space-before: 0.33in;space-after: 4mm;font-weight: bold;color: #365F91;font-family: Calibri;font-size: 18.0pt;}
43.Footer {display:block;space-after: 0in;line-height: 100%;}
44.Title {display:block;space-after: 0.21in;line-height: 100%;color: #17365D;font-family: Calibri;font-size: 26.0pt;}
45.FootnoteText {display:block;space-after: 0in;line-height: 100%;font-size: 10.0pt;}
46.ListParagraph {display:block;position: relative; margin-left: 0.5in;}
47.Heading2 {display:block;space-before: 0.07in;space-after: 0.07in;line-height: 100%;font-weight: bold;font-style: italic;font-family: Calibri;font-size: 14.0pt;}
48.h3 {display:block;font-style: normal;font-size: 11.0pt;text-decoration: none;}
49
50 /* CHARACTER STYLES */ .DefaultParagraphFont {display:inline;}
51.Hyperlink {display:inline;color: #0000FF;text-decoration: none;}
52.icon {display:inline;}
53.FootnoteReference {display:inline;vertical-align: top;font-size: xx-small;}
54.xmlmarkupattributename {display:inline;}
55.apple-style-span {display:inline;}
56.xmlmarkuptagname {display:inline;}
57.apple-converted-space {display:inline;}
58.xmlmarkupattributevalue {display:inline;}
59.xmlmarkupbracket {display:inline;}
60.underline {display:inline;}
61
62
63                                                /* TABLE CELL STYLES */
64                                                #docx4j_tbl_0 td { border-top-style: solid;border-top-width: 1px;border-top-color: #000000;border-bottom-style: solid;border-bottom-width: 1px;border-bottom-color: #000000;border-right-style: solid;border-right-width: 1px;border-right-color: #000000;border-left-style: solid;border-left-width: 1px;border-left-color: #000000;height: 5mm;}
65--></style>
66    </head>
67    <body>
68        <div class="footer">
69
70            <p class="Title Normal DocDefaults "><span class="notranslate">docx4j</span> Getting Started</p>
71
72            <p class="Normal DocDefaults ">
73                <span style="white-space:pre-wrap;">The latest version of this document can always be found in </span>
74                <a class="notranslate" class="notranslate" href="http://dev.plutext.org/svn/docx4j/trunk/docx4j/docs/">
75                    <span class="Hyperlink DefaultParagraphFont ">docx4j svn in /docs</span>
76                </a>
77                <span style="white-space:pre-wrap;"> (in <span class="notranslate">Flat OPC XML</span> format for Word 2007, </span>
78                <a class="notranslate" class="notranslate" href="http://dev.plutext.org/svn/docx4j/trunk/docx4j/docs/Docx4j_GettingStarted.html">
79                    <span class="Hyperlink DefaultParagraphFont ">HTML</span>
80                </a>
81                <span style="white-space:pre-wrap;">, and </span>
82                <a class="notranslate" class="notranslate" href="http://dev.plutext.org/svn/docx4j/trunk/docx4j/docs/Docx4j_GettingStarted.pdf">
83                    <span class="Hyperlink DefaultParagraphFont ">PDF</span>
84                </a>).</p>
85
86            <p class="Normal DocDefaults ">This document was translated from English using Google Translate.  If you can improve the translation, please feel free to send in your improved version.  For the most recent, always refer to the English version. </p>
87
88            <p class="Heading1 Normal DocDefaults ">What is <span class="notranslate">docx4j</span>?</p>
89
90            <p class="Normal DocDefaults ">
91                <span style="white-space:pre-wrap;"><span class="notranslate">docx4j</span> is a library for unzipping a docx "package", and parsing the WordprocessingML XML to create an in-memory representation in </span>
92                <span style="font-weight: bold;" class="notranslate">Java</span>
93                <span style="white-space:pre-wrap;">.  Recent versions of <span class="notranslate">docx4j</span> also support Powerpoint pptx files.  </span>
94            </p>
95
96            <p class="Normal DocDefaults ">It is similar in concept to Microsoft's  OpenXML SDK, which is for .NET.</p>
97
98            <p class="Normal DocDefaults ">
99                <span style="white-space:pre-wrap;"><span class="notranslate">docx4j</span> is open source, available under the Apache License (v2).  As an open source project, contributions are welcome.  Please see the <span class="notranslate">docx4j</span> forum at </span>
100                <a class="notranslate" class="notranslate" href="http://dev.plutext.org/forums/">
101                    <span style="color: #0000FF;text-decoration: none;">http://dev.plutext.org/forums/</span>
102                </a>
103                <span style="white-space:pre-wrap;"> for details.</span>
104            </p>
105
106            <p class="Normal DocDefaults ">
107                <span style="white-space:pre-wrap;"><span class="notranslate">docx4j</span> relies heavily on </span>
108                <span style="font-weight: bold;" class="notranslate">JAXB</span>, the JCP standard for Java XML binding.  You can think of <span class="notranslate">docx4j</span> as a JAXB implementation of (amongst others):</p>
109
110            <p class="ListParagraph Normal DocDefaults ">
111                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Open Packaging Conventions</p>
112
113            <p class="ListParagraph Normal DocDefaults ">
114                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>WordProcessingML (docx) part of Open XML</p>
115
116            <p class="ListParagraph Normal DocDefaults ">
117                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>
118                <span style="white-space:pre-wrap;">Presentation ML (pptx) part of OpenXML </span>
119            </p>
120
121            <p class="Normal DocDefaults ">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.</p>
122
123            <p class="Normal DocDefaults ">The <span class="notranslate">docx4j</span> project is sponsored by <span class="notranslate">Plutext</span> (<a class="notranslate" class="notranslate" href="http://www.plutext.com"><span class="Hyperlink DefaultParagraphFont ">www.plutext.com</span>
124                </a>).</p>
125
126            <p class="Heading1 Normal DocDefaults ">Is <span class="notranslate">docx4j</span> for you?</p>
127
128            <p class="Normal DocDefaults "><span class="notranslate">docx4j</span> is for processing docx documents (and pptx presentations) in Java.</p>
129
130            <p class="Normal DocDefaults ">It isn't for old binary (.doc) files.  For those, look at Apache POI's HWPF. (In fact, <span class="notranslate">docx4j</span> uses HWPF for basic conversion of .doc to .docx)</p>
131
132            <p class="Normal DocDefaults ">Nor is it for RTF files.</p>
133
134            <p class="Normal DocDefaults ">If you want to process docx documents on the .NET platform, you should look at Microsoft's  OpenXML SDK instead.</p>
135
136            <p class="Normal DocDefaults ">An alternative to <span class="notranslate">docx4j</span> is Apache POI.  I'd particularly recommend that for processing Excel documents.  It can also be used to process Word documents, and since it uses XmlBeans (not JAXB) it may be a better choice if you want to use XmlBeans.</p>
137
138            <p class="Heading1 Normal DocDefaults ">What sorts of things can you do with <span class="notranslate">docx4j</span>?</p>
139
140            <p class="ListParagraph Normal DocDefaults ">
141                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Open existing docx (from filesystem, SMB/CIFS, WebDAV using VFS)</p>
142
143            <p class="ListParagraph Normal DocDefaults ">
144                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Create new docx</p>
145
146            <p class="ListParagraph Normal DocDefaults ">
147                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Programmatically manipulate the docx document (of course)</p>
148
149            <p class="ListParagraph Normal DocDefaults ">
150                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Template substitution; CustomXML binding</p>
151
152            <p class="ListParagraph Normal DocDefaults ">
153                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Import a binary doc (uses Apache POI's HWPF)</p>
154
155            <p class="ListParagraph Normal DocDefaults ">
156                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Produce/consume Word 2007's xmlPackage (pkg) format</p>
157
158            <p class="ListParagraph Normal DocDefaults ">
159                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Save docx to filesystem as a docx (ie zipped), or to JCR (unzipped)</p>
160
161            <p class="ListParagraph Normal DocDefaults ">
162                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Apply transforms, including common filters</p>
163
164            <p class="ListParagraph Normal DocDefaults ">
165                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Export as HTML or PDF</p>
166
167            <p class="ListParagraph Normal DocDefaults ">
168                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Diff/compare documents, paragraphs or sdt (content controls)</p>
169
170            <p class="ListParagraph Normal DocDefaults ">
171                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Font support (font substitution, and use of any fonts embedded in the document)</p>
172
173            <p class="Heading1 Normal DocDefaults ">Projects using <span class="notranslate">docx4j</span></p>
174
175            <p class="Normal DocDefaults ">Docx4all is a Swing-based word processor.</p>
176
177            <p class="Normal DocDefaults ">Plutext collaboration for Word 2007 uses <span class="notranslate">docx4j</span> on the server, to shred Word documents into smaller pieces which can be independently versioned.</p>
178
179            <p class="Normal DocDefaults ">Please contact Plutext if you would like your project to be listed here.</p>
180
181            <p class="Heading1 Normal DocDefaults ">What Word documents does it support?</p>
182
183            <p class="Normal DocDefaults "><span class="notranslate">docx4j</span> can read/write docx documents created by or for Word 2007, or earlier versions which have the compatibility pack installed.</p>
184
185            <p class="Normal DocDefaults ">The relevant parts of <span class="notranslate">docx4j</span> are generated from the ECMA schemas.</p>
186
187            <p class="Normal DocDefaults ">It can't read/write Word 2003 XML documents.  The main problem with those is that the XML namespace is different.</p>
188
189            <p class="Normal DocDefaults "><span class="notranslate">docx4j</span> will support Word 2010 docx files.</p>
190
191            <p class="Heading1 Normal DocDefaults ">Using <span class="notranslate">docx4j</span> binaries</p>
192
193            <p class="Normal DocDefaults ">
194                <span style="white-space:pre-wrap;">You can download the latest version of <span class="notranslate">docx4j</span> from </span>
195                <a class="notranslate" class="notranslate" href="http://dev.plutext.org/docx4j/">
196                    <span class="Hyperlink DefaultParagraphFont ">http://dev.plutext.org/docx4j/</span>
197                </a>
198            </p>
199
200            <p class="Normal DocDefaults ">In general, we suggest you develop against a currently nightly build, since the latest formal release can often be several months old.</p>
201
202            <p class="Normal DocDefaults ">
203                <span style="white-space:pre-wrap;">Supporting jars can be found in the .tar.gz version, or in the relevant subdirectory.  </span>
204            </p>
205
206            <p class="Heading1 Normal DocDefaults ">Using <span class="notranslate">docx4j</span> via <span class="notranslate">Maven</span></p>
207
208            <p class="Normal DocDefaults ">
209                <span style="white-space:pre-wrap;"><span class="notranslate">Maven POM</span> can be found at </span>
210                <a class="notranslate" class="notranslate" href="http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/m2/org/docx4j/docx4j">
211                    <span class="Hyperlink DefaultParagraphFont ">http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/m2/org/docx4j/docx4j</span>
212                </a>
213            </p>
214
215            <p class="Heading1 Normal DocDefaults ">JDK versions</p>
216
217            <p class="Normal DocDefaults ">
218                <span class="apple-style-span DefaultParagraphFont ">You need to be using <span class="notranslate">Java 1.5+</span>.</span>
219            </p>
220
221            <p class="Normal DocDefaults ">
222                <span class="apple-style-span DefaultParagraphFont ">This is because of JAXB</span>
223                <span class="FootnoteReference DefaultParagraphFont ">
224                    <span style="vertical-align: top; font-size: xx-small">
225                        <a class="notranslate" name="fs1">
226                            <a href="#fn1">1</a>
227                        </a>
228                    </span>
229                </span>
230                <span class="apple-style-span DefaultParagraphFont ">.  If you must use  1.4, retrotranslator can</span>
231                <span class="apple-converted-space DefaultParagraphFont ">
232                    <span style="white-space:pre-wrap;"></span>
233                </span>
234                <a href="http://forums.java.net/jive/message.jspa?messageID=212494">
235                    <span class="icon DefaultParagraphFont ">reportedly make</span>
236                </a>
237                <span class="apple-style-span DefaultParagraphFont ">
238                    <span style="white-space:pre-wrap;"> it work.</span>
239                </span>
240            </p>
241
242            <p class="Heading1 Normal DocDefaults ">A word about Jaxb</p>
243
244            <p class="Normal DocDefaults "><span class="notranslate">docx4j</span> 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.</p>
245
246            <p class="Normal DocDefaults ">
247                <span style="white-space:pre-wrap;">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.  </span>
248            </p>
249
250            <p class="Normal DocDefaults ">
251                <span style="white-space:pre-wrap;">Bits of <span class="notranslate">docx4j</span>, such as </span>
252                <a class="notranslate" class="notranslate" href="http://dev.plutext.org/trac/docx4j/trac/docx4j/browser/trunk/docx4j/src/main/java/org/docx4j/wml">
253                    <span class="Hyperlink DefaultParagraphFont ">org.docx4j.wml</span>
254                </a>
255                <span style="white-space:pre-wrap;"> and </span>
256                <span class="apple-converted-space DefaultParagraphFont " style="font-family: Calibri;"> </span>
257                <a class="notranslate" class="notranslate" href="http://dev.plutext.org/trac/docx4j/trac/docx4j/browser/trunk/docx4j/src/main/java/org/docx4j/dml">
258                    <span class="Hyperlink DefaultParagraphFont ">org.docx4j.dml</span>
259                </a>
260                <span style="white-space:pre-wrap;"> 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_). </span>
261            </p>
262
263            <p class="Heading1 Normal DocDefaults ">
264                <span style="font-family: Calibri;">Log4j</span>
265            </p>
266
267            <p class="Normal DocDefaults ">
268                <span class="underline DefaultParagraphFont ">
269                    <span style="white-space:pre-wrap;"><span class="notranslate">docx4j</span> uses log4j for logging.  To enable logging, you need a log4.properties or log4j.xml on your class path.  See for example </span>
270                </span>
271                <a class="notranslate" class="notranslate" href="http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/src/main/resources/log4j.xml">
272                    <span style="color: #0000FF;text-decoration: none;">http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/src/main/resources/log4j.xml</span>
273                </a>
274            </p>
275
276            <p class="Heading1 Normal DocDefaults notranslate">Javadoc</p>
277
278            <p class="Normal DocDefaults ">
279                <span style="white-space:pre-wrap;">Javadoc for browsing online or download, can be found in the directory </span>
280                <a class="notranslate" class="notranslate" href="http://dev.plutext.org/docx4j/">
281                    <span style="color: #0000FF;text-decoration: none;">http://dev.plutext.org/docx4j/</span>
282                </a>
283            </p>
284
285            <p class="Heading1 Normal DocDefaults "><span class="notranslate">docx4j</span> source code</p>
286
287            <p class="Normal DocDefaults ">To obtain a copy of the current source code:</p>
288
289            <p class="NormalWeb Normal DocDefaults notranslate">   <span style="font-family: Consolas;font-size: 10.0pt;">svn co</span>
290                <span class="apple-converted-space DefaultParagraphFont " style="font-family: Consolas;font-size: 10.0pt;"> </span>
291                <a class="notranslate" href="http://dev.plutext.org/svn/docx4j/trunk/docx4j">
292                    <span class="icon DefaultParagraphFont " style="font-family: Consolas;font-size: 10.0pt;">http://dev.plutext.org/svn/docx4j/trunk/docx4j</span>
293                </a>
294                <span class="apple-converted-space DefaultParagraphFont " style="font-family: Consolas;font-size: 10.0pt;"> </span>
295                <span style="font-family: Consolas;font-size: 10.0pt;">docx4j</span>
296            </p>
297
298            <p class="Normal DocDefaults ">Alternatively, you can browse it online, at:</p>
299
300            <p class="Normal DocDefaults notranslate">http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/</p>
301
302            <p class="Heading1 Normal DocDefaults ">
303                <span style="white-space:pre-wrap;">Building <span class="notranslate">docx4j</span> from source </span>
304            </p>
305
306            <p class="Heading2 Normal DocDefaults ">Command line - Quick Instructions</p>
307
308            <p class="Normal DocDefaults ">"Quick" that is, provided you have maven and ant installed.  Note that we only use maven to grab the dependencies, not to do the actual build.</p>
309
310            <p class="Normal DocDefaults ">Create a directory called workspace, and cd into it.</p>
311
312            <p class="NormalWeb Normal DocDefaults notranslate">   <span style="font-family: Consolas;font-size: 10.0pt;">svn co</span>
313                <span class="apple-converted-space DefaultParagraphFont " style="font-family: Consolas;font-size: 10.0pt;"> </span>
314                <a class="notranslate" href="http://dev.plutext.org/svn/docx4j/trunk/docx4j">
315                    <span class="icon DefaultParagraphFont " style="font-family: Consolas;font-size: 10.0pt;">http://dev.plutext.org/svn/docx4j/trunk/docx4j</span>
316                </a>
317                <span class="apple-converted-space DefaultParagraphFont " style="font-family: Consolas;font-size: 10.0pt;"> </span>
318                <span style="font-family: Consolas;font-size: 10.0pt;">docx4j</span>
319            </p>
320
321            <p class="Normal DocDefaults ">open pom.xml, find the line which reads</p>
322
323            <p class="Command NormalWeb Normal DocDefaults notranslate">&lt;systemPath&gt;/usr/lib/jvm/java-6-sun/jre/lib/rt.jar&lt;/systemPath&gt;</p>
324
325            <p class="Normal DocDefaults ">and edit it to suit your system.</p>
326
327            <p class="Command NormalWeb Normal DocDefaults ">
328                <span style="white-space:pre-wrap;" class="notranslate">mvn install </span>
329            </p>
330
331            <p class="NormalWeb Normal DocDefaults notranslate" style="position: relative; margin-left: 0.5in;">
332                <span style="font-family: Consolas;font-size: 10.0pt;">ant dist</span>
333            </p>
334
335            <p class="Normal DocDefaults ">That ant command will create the docx4j.jar and place it and all its dependencies in the dist dir.</p>
336
337            <p class="Heading2 Normal DocDefaults">Eclipse</p>
338
339            <p class="h3 Heading2 Normal DocDefaults ">Prerequisites</p>
340
341            <p class="ListParagraph Normal DocDefaults ">
342                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Eclipse installed</p>
343
344            <p class="ListParagraph Normal DocDefaults ">
345                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Install an Eclipse subversion plugin eg<span class="apple-converted-space DefaultParagraphFont "> </span>
346                <a class="notranslate" href="http://subclipse.tigris.org/update_1.2.x">
347                    <span class="icon DefaultParagraphFont ">http://subclipse.tigris.org/update_1.2.x</span>
348                </a>
349            </p>
350
351            <p class="ListParagraph Normal DocDefaults ">
352                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Install<span class="apple-converted-space DefaultParagraphFont "> </span>
353                <a class="notranslate" href="http://dev.plutext.org/trac/docx4j/trac/umbrella/wiki/MavenEclipse">
354                    <span class="Hyperlink DefaultParagraphFont " style="font-family: Calibri;">Maven and the Eclipse plugin</span>
355                </a>
356            </p>
357
358            <p class="Normal DocDefaults ">And, as discussed above:</p>
359
360            <p class="ListParagraph Normal DocDefaults ">
361                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Java 1.5 or 6</p>
362
363            <p class="ListParagraph Normal DocDefaults ">
364                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>
365                <span style="white-space:pre-wrap;">JAXB: </span>
366                <span style="font-weight: bold;">both</span>
367                <span style="white-space:pre-wrap;"> the JAXB implementation included in Java 6, </span>
368                <span style="font-weight: bold;">and</span>
369                <span style="white-space:pre-wrap;"> the 2.x reference implementation. (This is the price of supporting either at runtime)</span>
370            </p>
371
372            <p class="h3 Heading2 Normal DocDefaults ">Instructions</p>
373
374            <p class="ListParagraph Normal DocDefaults notranslate">
375                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>File &gt; New "Project .." &gt; SVN &gt; Checkout Projects from SVN</p>
376
377            <p class="ListParagraph Normal DocDefaults ">
378                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Create a new repository location; Url is<span class="apple-converted-space DefaultParagraphFont "> </span>
379                <a class="notranslate" href="http://dev.plutext.org/svn/docx4j">
380                    <span class="icon DefaultParagraphFont ">http://dev.plutext.org/svn/docx4j</span>
381                </a>
382            </p>
383
384            <p class="ListParagraph Normal DocDefaults ">
385                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Click folder <span class="notranslate">"trunk"</span>, and select docx4j; click next</p>
386
387            <p class="ListParagraph Normal DocDefaults ">
388                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>You want to check it out as a project configured using the New Project Wizard</p>
389
390            <p class="ListParagraph Normal DocDefaults ">
391                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Then select Java &gt; Java Project; click Next</p>
392
393            <p class="ListParagraph Normal DocDefaults ">
394                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Choose a project name (for example, 'docx4j') then click Next</p>
395
396            <p class="ListParagraph Normal DocDefaults ">
397                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Click Finish (we'll define the Java build settings in a later step)</p>
398
399            <p class="Normal DocDefaults ">After a couple of other dialog boxes, you should have the new project in your workspace.</p>
400
401            <p class="Normal DocDefaults ">
402                <span style="white-space:pre-wrap;">Now, we need to configure the </span>
403                <span style="font-weight: bold;">class path</span>
404                <span style="white-space:pre-wrap;"> etc within Eclipse so that it can build.</span>
405            </p>
406
407            <p class="ListParagraph Normal DocDefaults ">
408                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Build Path &gt; Configure Build Path &gt; Java Build Path &gt; Source tab</p>
409
410            <p class="ListParagraph Normal DocDefaults ">
411                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Click on src, then press the remove button</p>
412
413            <p class="ListParagraph Normal DocDefaults ">
414                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Then click "add folder" and navigate through to src/main/java and tick 'java'</p>
415
416            <p class="ListParagraph Normal DocDefaults ">
417                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Then add <span class="notranslate">src/svg, src/diffx and src/pptx4j/java</span> as well</p>
418
419            <p class="Normal DocDefaults ">The Maven bit:</p>
420
421            <p class="ListParagraph Normal DocDefaults ">
422                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>
423                <span style="white-space:pre-wrap;">Make sure you have Maven and its plugin installed - see Prerequisites above. </span>
424            </p>
425
426            <p class="ListParagraph Normal DocDefaults ">
427                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Run mvn install in the <span class="notranslate">docx4j</span> dir from a command prompt (just in case)</p>
428
429            <p class="ListParagraph Normal DocDefaults ">
430                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Right click on project &gt; Maven 2 &gt; Enable</p>
431
432            <p class="Normal DocDefaults ">The project should now be working in Eclipse without errors<span class="FootnoteReference DefaultParagraphFont "><span style="vertical-align: top; font-size: xx-small"><a name="fs2"><a  href="#fn2">2</a>
433                        </a>
434                    </span>
435                </span>
436                <span style="white-space:pre-wrap;">. </span>
437            </p>
438
439            <p class="Heading1 Normal DocDefaults ">
440                <span style="font-family: Calibri;">Open an existing docx document</span>
441            </p>
442
443            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
444                <a class="notranslate" href="http://dev.plutext.org/trac/docx4j/trac/docx4j/browser/trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages/WordprocessingMLPackage.java">
445                    <span style="font-family: Consolas;">org.docx4j.openpackaging.packages.</span>
446                    <span style="font-weight: bold;font-family: Consolas;">WordprocessingMLPackage</span>
447                </a> represents a docx document.</p>
448
449            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">To load a document, all you have to do is:</p>
450
451            <p class="Command NormalWeb Normal DocDefaults notranslate" style="position: relative; margin-left: 0in;">   <span style="white-space:pre-wrap;">WordprocessingMLPackage wordMLPackage = </span>
452                <br clear="all"/>      WordprocessingMLPackage.load(new java.io.File(inputfilepath));</p>
453
454            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">That method can also load  Flat OPC  XML files.</p>
455
456            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">You can then get the main document part (word/document.xml):</p>
457
458            <p class="Command NormalWeb Normal DocDefaults notranslate">
459                <a href="http://dev.plutext.org/trac/docx4j/trac/docx4j/browser/trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/WordprocessingML/MainDocumentPart.java">
460                    <span style="font-family: Calibri;">MainDocumentPart</span>
461                </a> documentPart = wordMLPackage.getMainDocumentPart();</p>
462
463            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
464                <span style="white-space:pre-wrap;">After that, you can manipulate its contents. </span>
465            </p>
466
467            <p class="Heading1 Normal DocDefaults ">WordML concepts</p>
468
469            <p class="Normal DocDefaults ">To do anything much beyond this, you need to have an understanding of basic WordML concepts.</p>
470
471            <p class="Normal DocDefaults ">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).</p>
472
473            <p class="Normal DocDefaults ">An introduction to WordML is beyond the scope of this document.  You can find a very readable introduction in 1<span style="vertical-align: top;font-size: xx-small;">st</span>
474                <span style="white-space:pre-wrap;"> edition Part 3 (Primer) at </span>
475                <a class="notranslate" href="http://www.ecma-international.org/publications/standards/Ecma-376.htm">
476                    <span style="color: #0000FF;text-decoration: none;">http://www.ecma-international.org/publications/standards/Ecma-376.htm</span>
477                </a>
478                <span style="white-space:pre-wrap;"> or </span>
479                <a class="notranslate" href="http://www.ecma-international.org/news/TC45_current_work/TC45_available_docs.htm">
480                    <span style="color: #0000FF;text-decoration: none;">http://www.ecma-international.org/news/TC45_current_work/TC45_available_docs.htm</span>
481                </a>
482                <span style="white-space:pre-wrap;"> (a better link, since its not zipped up).</span>
483            </p>
484
485            <p class="Heading1 Normal DocDefaults ">
486                <span style="font-family: Calibri;">
487                    <span style="white-space:pre-wrap;">Jaxb: marshalling and unmarshalling </span>
488                </span>
489            </p>
490
491            <p class="Normal DocDefaults ">
492                <span style="white-space:pre-wrap;"><span class="notranslate">docx4j</span> contains a class representing each part.  For example, there is a </span>
493                <span style="font-family: Consolas;">MainDocumentPart</span>
494                <span style="white-space:pre-wrap;"> class.  XML parts inherit from </span>
495                <span style="font-family: Consolas;">JaxbXmlPart</span>
496                <span style="white-space:pre-wrap;">, which contains a member called </span>
497                <span style="font-weight: bold;font-family: Consolas;">jaxbElement</span>.  When you want to work with the contents of a part, you work with its jaxbElement.</p>
498
499            <p class="Normal DocDefaults ">
500                <span style="white-space:pre-wrap;">When you open a docx document using <span class="notranslate">docx4j</span>, <span class="notranslate">docx4j</span> automatically </span>
501                <span style="font-weight: bold;font-style: italic;">unmarshals</span>
502                <span style="white-space:pre-wrap;"> the contents of each XML part to a strongly-type Java object tree (the <span class="notranslate">jaxbElement</span>).</span>
503            </p>
504
505            <p class="Normal DocDefaults ">
506                <span style="white-space:pre-wrap;">Similarly, if/when you tell <span class="notranslate">docx4j</span> to save these Java objects as a docx, <span class="notranslate">docx4j</span> automatically </span>
507                <span style="font-weight: bold;font-style: italic;">marshals</span>
508                <span style="white-space:pre-wrap;"> the <span class="notranslate">jaxbElement</span> in each Part.</span>
509            </p>
510
511            <p class="Normal DocDefaults ">
512                <span style="white-space:pre-wrap;">Sometimes you will want to marshal or unmarshal things yourself.  The class </span>
513                <span style="font-weight: bold;color: #000000;font-family: Consolas;font-size: 9.0pt;" class="notranslate">org.docx4j.jaxb.Context</span>
514                <span style="white-space:pre-wrap;"> defines all the JAXBContexts used in <span class="notranslate">docx4j</span>: </span>
515            </p>
516
517            <table class="TableGrid TableNormal notranslate " id="docx4j_tbl_0" style="position: relative; margin-left: 0.76in;table-layout: fixed;border-collapse: collapse;" >
518                <colgroup>
519                    <col style="width: 2in;"/>
520                    <col style="width: 2.94in;"/>
521                </colgroup>
522                <tgroup>
523                    <tr style="vertical-align: top;">
524                        <td style="vertical-align: middle;">
525
526                            <p class="Normal DocDefaults ">
527                                <span style="font-family: Consolas;font-size: 9.0pt;">Jc</span>
528                            </p>
529                        </td>
530                        <td>
531
532                            <p class="Normal DocDefaults ">
533                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">org.docx4j.wml</span>
534                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">
535                                    <br clear="all"/>org.docx4j.dml</span>
536                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">
537                                    <br clear="all"/>org.docx4j.dml.picture</span>
538                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">
539                                    <br clear="all"/>org.docx4j.dml.wordprocessingDrawing</span>
540                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">
541                                    <br clear="all"/>
542                                </span>
543                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">org.docx4j.vml</span>
544                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">
545                                    <br clear="all"/>org.docx4j.vml.officedrawing</span>
546                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">
547                                    <br clear="all"/>org.docx4j.math</span>
548                            </p>
549                        </td>
550                    </tr>
551                    <tr style="vertical-align: top;">
552                        <td style="vertical-align: middle;">
553
554                            <p class="Normal DocDefaults ">
555                                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">jcThemePart</span>
556                            </p>
557                        </td>
558                        <td>
559
560                            <p class="Normal DocDefaults ">
561                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">org.docx4j.dml</span>
562                            </p>
563                        </td>
564                    </tr>
565                    <tr style="vertical-align: top;">
566                        <td style="vertical-align: middle;">
567
568                            <p class="Normal DocDefaults ">
569                                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">jcDocPropsCore</span>
570                            </p>
571                        </td>
572                        <td>
573
574                            <p class="Normal DocDefaults ">
575                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">org.docx4j.docProps.core</span>
576                            </p>
577
578                            <p class="Normal DocDefaults ">
579                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">org.docx4j.docProps.core.dc.elements</span>
580                            </p>
581
582                            <p class="Normal DocDefaults ">
583                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">org.docx4j.docProps.core.dc.terms</span>
584                            </p>
585                        </td>
586                    </tr>
587                    <tr style="vertical-align: top;">
588                        <td style="vertical-align: middle;">
589
590                            <p class="Normal DocDefaults ">
591                                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">jcDocPropsCustom</span>
592                            </p>
593                        </td>
594                        <td>
595
596                            <p class="Normal DocDefaults ">
597                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">org.docx4j.docProps.custom</span>
598                            </p>
599                        </td>
600                    </tr>
601                    <tr style="vertical-align: top;">
602                        <td style="vertical-align: middle;">
603
604                            <p class="Normal DocDefaults ">
605                                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">jcDocPropsExtended</span>
606                            </p>
607                        </td>
608                        <td>
609
610                            <p class="Normal DocDefaults ">
611                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">org.docx4j.docProps.extended</span>
612                            </p>
613                        </td>
614                    </tr>
615                    <tr style="vertical-align: top;">
616                        <td style="vertical-align: middle;">
617
618                            <p class="Normal DocDefaults ">
619                                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">jcXmlPackage</span>
620                            </p>
621                        </td>
622                        <td>
623
624                            <p class="Normal DocDefaults ">
625                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">org.docx4j.xmlPackage</span>
626                            </p>
627                        </td>
628                    </tr>
629                    <tr style="vertical-align: top;">
630                        <td style="vertical-align: middle;">
631
632                            <p class="Normal DocDefaults ">
633                                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">jcRelationships</span>
634                            </p>
635                        </td>
636                        <td>
637
638                            <p class="Normal DocDefaults ">
639                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">org.docx4j.relationships</span>
640                            </p>
641                        </td>
642                    </tr>
643                    <tr style="vertical-align: top;">
644                        <td style="vertical-align: middle;">
645
646                            <p class="Normal DocDefaults ">
647                                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">jcCustomXmlProperties</span>
648                            </p>
649                        </td>
650                        <td>
651
652                            <p class="Normal DocDefaults ">
653                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">org.docx4j.customXmlProperties</span>
654                            </p>
655                        </td>
656                    </tr>
657                    <tr style="vertical-align: top;">
658                        <td style="vertical-align: middle;">
659
660                            <p class="Normal DocDefaults ">
661                                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">jcContentTypes</span>
662                            </p>
663                        </td>
664                        <td>
665
666                            <p class="Normal DocDefaults ">
667                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">org.docx4j.openpackaging.contenttype</span>
668                            </p>
669                        </td>
670                    </tr>
671                    <tr style="vertical-align: top;">
672                        <td style="vertical-align: middle;">
673
674                            <p class="Normal DocDefaults ">
675                                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">jcPML</span>
676                            </p>
677                        </td>
678                        <td>
679
680                            <p class="Normal DocDefaults ">
681                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">org.docx4j.pml</span>
682                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">
683                                    <br clear="all"/>org.docx4j.dml</span>
684                                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">
685                                    <br clear="all"/>org.docx4j.dml.picture</span>
686                            </p>
687                        </td>
688                    </tr>
689                </tgroup>
690            </table>
691
692            <p class="Normal DocDefaults "/>
693
694            <p class="Heading1 Normal DocDefaults ">
695                <span style="font-family: Calibri;">Architecture</span>
696            </p>
697
698            <p class="Normal DocDefaults "><span class="notranslate">docx4j</span> has 3 layers:</p>
699
700            <p class="ListParagraph Normal DocDefaults ">
701                <span style="position: relative; margin-left: 0.5in;">1. </span>
702                <span style="font-weight: bold;font-family: Consolas;" class="notranslate">org.docx4j.openpackaging</span>
703                <br clear="all"/>
704                <br clear="all"/>
705                <span style="white-space:pre-wrap;">OpenPackaging handles things at the Open Packaging Conventions level:  unzipping a docx into </span>
706                <span style="font-weight: bold;font-family: Consolas;">WordprocessingMLPackage</span>
707                <span style="white-space:pre-wrap;"> and a set of objects inheriting from Part;  allowing parts to be added/deleted; saving the docx</span>
708                <br clear="all"/>
709                <br clear="all"/>
710                <span style="white-space:pre-wrap;">This layer is based originally on OpenXML4J (which is also used by Apache POI). </span>
711                <br clear="all"/>
712                <br clear="all"/>
713                <span style="white-space:pre-wrap;">Parts are generally subclasses of </span>
714                <span style="font-weight: bold;color: #000000;font-family: Consolas;" class="notranslate">org.docx4j.openpackaging.parts.JaxbXmlPart</span>
715                <br clear="all"/>
716                <br clear="all"/>
717                <span style="white-space:pre-wrap;">Parts are arranged in a tree.  If a part has descendants, it will have a </span>
718                <span style="font-weight: bold;font-family: Consolas;" class="notranslate">org.docx4j.openpackaging.parts.relationships.RelationshipsPart</span>
719                <span style="white-space:pre-wrap;"> which identifies those descendant parts.  The sample PartsList (see next section) shows you how this works.</span>
720                <br clear="all"/>
721                <br clear="all"/>A JaxbXmlPart has a content tree:<br clear="all"/>
722                <br clear="all"/>
723
724                <span class="notranslate">
725                    <span style="font-family: Consolas;font-size: 9.0pt;">   public Object getJaxbElement() {</span>
726                    <span style="font-family: Consolas;font-size: 9.0pt;">
727                        <br clear="all"/>
728                    </span>
729                    <span style="font-family: Consolas;font-size: 9.0pt;">   </span>
730                    <span style="font-family: Consolas;font-size: 9.0pt;">   return jaxbElement;</span>
731                    <span style="font-family: Consolas;font-size: 9.0pt;">
732                        <br clear="all"/>
733                    </span>
734                    <span style="font-family: Consolas;font-size: 9.0pt;">   }</span>
735                    <span style="font-family: Consolas;font-size: 9.0pt;">
736                        <br clear="all"/>
737                    </span>
738                    <span style="font-family: Consolas;font-size: 9.0pt;">
739                        <br clear="all"/>
740                    </span>
741                    <span style="font-family: Consolas;font-size: 9.0pt;">   public void setJaxbElement(Object jaxbElement) {</span>
742                    <span style="font-family: Consolas;font-size: 9.0pt;">
743                        <br clear="all"/>
744                    </span>
745                    <span style="font-family: Consolas;font-size: 9.0pt;">   </span>
746                    <span style="font-family: Consolas;font-size: 9.0pt;">   this.jaxbElement = jaxbElement;</span>
747                    <span style="font-family: Consolas;font-size: 9.0pt;">
748                        <br clear="all"/>
749                    </span>
750                    <span style="font-family: Consolas;font-size: 9.0pt;">   }</span>
751                    <span style="font-family: Consolas;font-size: 9.0pt;">
752                        <br clear="all"/>
753                    </span>
754                </span>
755
756            </p>
757
758            <p class="ListParagraph Normal DocDefaults ">
759                <span style="position: relative; margin-left: 0.5in;">2. </span>
760                <span style="white-space:pre-wrap;">The </span>
761                <span style="font-weight: bold;color: #000000;">jaxb</span>
762                <span style="font-weight: bold;">
763                    <span style="white-space:pre-wrap;"> content tree</span>
764                </span>
765                <span style="white-space:pre-wrap;"> is the second level of the three layered model.</span>
766                <br clear="all"/>
767                <br clear="all"/>
768                <span style="white-space:pre-wrap;">Most parts (including MainDocumentPart, styles, headers/footers, comments, </span>
769                <span style="color: #000000;">endnotes</span>
770                <span style="white-space:pre-wrap;">/footnotes) use </span>
771                <a class="notranslate" href="http://dev.plutext.org/trac/docx4j/trac/docx4j/browser/trunk/docx4j/src/main/java/org/docx4j/wml">
772                    <span style="font-weight: bold;font-family: Consolas;">org.docx4j.wml</span>
773                </a>
774                <span style="font-weight: bold;font-family: Consolas;">
775                    <span style="white-space:pre-wrap;"></span>
776                </span>
777                <span style="white-space:pre-wrap;">(WordprocessingML); </span>
778                <span style="color: #000000;">wml</span>
779                <span style="white-space:pre-wrap;"> references </span>
780                <a class="notranslate" href="http://dev.plutext.org/trac/docx4j/trac/docx4j/browser/trunk/docx4j/src/main/java/org/docx4j/wml">
781                    <span style="font-weight: bold;font-family: Consolas;">org.docx4j.dml</span>
782                </a>
783                <span style="font-weight: bold;font-family: Consolas;">
784                    <span style="white-space:pre-wrap;"></span>
785                </span>(DrawingML) as necessary.<br clear="all"/>
786                <br clear="all"/>These classes were generated from the Open XML schemas<br clear="all"/>
787                <br clear="all"/>
788            </p>
789
790            <p class="ListParagraph Normal DocDefaults ">
791                <span style="position: relative; margin-left: 0.5in;">3. </span>
792                <span style="font-weight: bold;font-family: Consolas;" class="notranslate">org.docx4j.model</span>
793                <span style="font-weight: bold;font-family: Consolas;">
794                    <br clear="all"/>
795                </span>
796                <span style="font-weight: bold;font-family: Consolas;">
797                    <br clear="all"/>
798                </span>
799                <span style="white-space:pre-wrap;">This package builds on the lower two layers to provide extra functionality, and is being progressively further developed.    </span>
800            </p>
801
802            <p class="Heading1 Normal DocDefaults ">
803                <span style="font-family: Calibri;">Samples</span>
804            </p>
805
806            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">The package org.docx4j.samples contains examples of how to do things with <span class="notranslate">docx4j</span>.  These include:</p>
807
808            <p class="Normal DocDefaults " style="position: relative; margin-left: 0.25in;space-before: 0.07in;space-after: 0.07in;line-height: 100%;">Basics</p>
809
810<div class="notranslate">
811
812            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
813                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>CreateWordprocessingMLDocument</p>
814
815            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
816                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>DisplayMainDocumentPartXml</p>
817
818            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
819                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>OpenAndSaveRoundTripTest</p>
820
821            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
822                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>OpenMainDocumentAndTraverse</p>
823
824</div>
825
826            <p class="Normal DocDefaults " style="position: relative; margin-left: 0.25in;space-before: 0.07in;space-after: 0.07in;line-height: 100%;">Output/Transformation</p>
827
828<div class="notranslate">
829
830            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
831                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>CreateHtml</p>
832
833            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
834                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>CreatePdf</p>
835
836            <p class="Normal DocDefaults " style="position: relative; margin-left: 0.25in;space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
837</div>
838                <span style="white-space:pre-wrap;">Flat OPC XML </span>
839            </p>
840<div class="notranslate">
841
842            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
843                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>ExportInPackageFormat</p>
844
845            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
846                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>ImportFromPackageFormat</p>
847
848            <p class="Normal DocDefaults " style="position: relative; margin-left: 0.25in;space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
849</div>
850                <span style="white-space:pre-wrap;">Image handling </span>
851            </p>
852<div class="notranslate">
853
854            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
855                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>AddImage</p>
856
857            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
858                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>ConvertEmbeddedImageToLinked</p>
859</div>
860
861            <p class="Normal DocDefaults " style="position: relative; margin-left: 0.25in;space-before: 0.07in;space-after: 0.07in;line-height: 100%;">Part Handling</p>
862<div class="notranslate">
863
864            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
865                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>CopyPart</p>
866
867            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
868                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>ImportForeignPart</p>
869
870            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
871                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>PartsList</p>
872
873            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
874                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>StripParts</p>
875
876</div>
877            <p class="Normal DocDefaults " style="position: relative; margin-left: 0.25in;space-before: 0.07in;space-after: 0.07in;line-height: 100%;">Miscellaneous</p>
878<div class="notranslate">
879
880            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
881                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>CompareDocuments</p>
882
883            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
884                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>CreateDocxWithCustomXml</p>
885
886            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
887                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>CustomXmlBinding</p>
888
889            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
890                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>DocProps</p>
891
892            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
893                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Filter</p>
894
895            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
896                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>HyperlinkTest</p>
897
898            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
899                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>NumberingRestart</p>
900
901            <p class="ListParagraph Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
902                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>UnmarshallFromTemplate</p>
903</div>
904
905            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">If you installed the source code, you'll have this package already.</p>
906
907            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
908                <span style="white-space:pre-wrap;">If you didn't, you can browse it online, at </span>
909            </p>
910
911            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
912                <a class="notranslate" href="http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/src/main/java/org/docx4j/samples">
913                    <span class="Hyperlink DefaultParagraphFont " style="font-size: 10.0pt;">http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/src/main/java/org/docx4j/samples</span>
914                </a>
915            </p>
916
917            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
918                <span style="white-space:pre-wrap;">There are also various </span>
919                <span style="font-weight: bold;">sample documents</span>
920                <span style="white-space:pre-wrap;"> in the /sample-docs directory; these are most easily accessed by checking out <span class="notranslate">docx4j</span> svn.</span>
921            </p>
922
923            <p class="Heading1 Normal DocDefaults ">
924                <span style="font-family: Calibri;">Parts List</span>
925            </p>
926
927            <p class="Normal DocDefaults ">
928                <span style="white-space:pre-wrap;">To get a better understanding of how <span class="notranslate">docx4j</span> works   and the structure of a docx document   you can run the <span class="notranslate">PartsList</span> sample on a docx (or a pptx).  If you do, it will list the hierarchy of parts used in that package.  It will tell you which class is used to represent each part, and where that part is a JaxbXmlPart, it will also tell you what class the </span>
929                <span style="font-family: Consolas;font-size: 9.0pt;">
930                    <span style="white-space:pre-wrap;">jaxbElement </span>
931                </span>is.</p>
932
933            <p class="Normal DocDefaults ">For example:</p>
934<div class="notranslate">
935            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
936                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;" >Part /_rels/.rels [org.docx4j.openpackaging.parts.relationships.RelationshipsPart]</span>
937                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
938                    <br clear="all"/>
939                    <span style="white-space:pre-wrap;">  containing JaxbElement:org.docx4j.relationships.Relationships</span>
940                </span>
941            </p>
942
943            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;"/>
944
945            <p class="Normal DocDefaults " style="position: relative; margin-left: 0.5in;space-after: 0in;line-height: 100%;">
946                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
947                    <span style="white-space:pre-wrap;">Part /docProps/app.xml [org.docx4j.openpackaging.parts.DocPropsExtendedPart]  </span>
948                </span>
949                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
950                    <br clear="all"/>
951                    <span style="white-space:pre-wrap;">  containing JaxbElement:org.docx4j.docProps.extended.Properties</span>
952                </span>
953            </p>
954
955            <p class="Normal DocDefaults " style="position: relative; margin-left: 0.5in;space-after: 0in;line-height: 100%;"/>
956
957            <p class="Normal DocDefaults " style="position: relative; margin-left: 0.5in;space-after: 0in;line-height: 100%;">
958                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
959                    <span style="white-space:pre-wrap;">Part /docProps/core.xml [org.docx4j.openpackaging.parts.DocPropsCorePart]  </span>
960                </span>
961                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
962                    <br clear="all"/>
963                    <span style="white-space:pre-wrap;">  containing JaxbElement:org.docx4j.docProps.core.CoreProperties</span>
964                </span>
965            </p>
966
967            <p class="Normal DocDefaults " style="position: relative; margin-left: 0.5in;space-after: 0in;line-height: 100%;"/>
968
969            <p class="Normal DocDefaults " style="position: relative; margin-left: 0.5in;space-after: 0in;line-height: 100%;">
970                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
971                    <span style="white-space:pre-wrap;">Part </span>
972                </span>
973                <span style="font-weight: bold;color: #000000;font-family: Consolas;font-size: 8.0pt;">/word/document.xml</span>
974                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
975                    <span style="white-space:pre-wrap;"> [org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart]  </span>
976                </span>
977                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
978                    <br clear="all"/>
979                    <span style="white-space:pre-wrap;">  containing JaxbElement:org.docx4j.wml.Document</span>
980                </span>
981            </p>
982
983            <p class="Normal DocDefaults " style="position: relative; margin-left: 0.5in;space-after: 0in;line-height: 100%;"/>
984
985            <p class="Normal DocDefaults " style="position: relative; margin-left: 1in;space-after: 0in;line-height: 100%;">
986                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">Part /word/settings.xml [</span>
987                <span style="color: #000000;font-family: Consolas;font-size: 7.0pt;">org.docx4j.openpackaging.parts.WordprocessingML</span>
988                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
989                    <span style="white-space:pre-wrap;">.DocumentSettingsPart]  </span>
990                </span>
991                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
992                    <br clear="all"/>
993                    <span style="white-space:pre-wrap;">  containing JaxbElement:org.docx4j.wml.CTSettings</span>
994                </span>
995            </p>
996
997            <p class="Normal DocDefaults " style="position: relative; margin-left: 1in;space-after: 0in;line-height: 100%;"/>
998
999            <p class="Normal DocDefaults " style="position: relative; margin-left: 1in;space-after: 0in;line-height: 100%;">
1000                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">Part /word/styles.xml [</span>
1001                <span style="color: #000000;font-family: Consolas;font-size: 7.0pt;">org.docx4j.openpackaging.parts.WordprocessingML</span>
1002                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
1003                    <span style="white-space:pre-wrap;">.StyleDefinitionsPart]  </span>
1004                </span>
1005                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
1006                    <br clear="all"/>
1007                    <span style="white-space:pre-wrap;">  containing JaxbElement:org.docx4j.wml.Styles</span>
1008                </span>
1009            </p>
1010
1011            <p class="Normal DocDefaults " style="position: relative; margin-left: 1in;space-after: 0in;line-height: 100%;"/>
1012
1013            <p class="Normal DocDefaults " style="position: relative; margin-left: 1in;space-after: 0in;line-height: 100%;">
1014                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">Part /word/media/image1.jpeg [</span>
1015                <span style="color: #000000;font-family: Consolas;font-size: 7.0pt;">org.docx4j.openpackaging.parts.WordprocessingML</span>
1016                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
1017                    <span style="white-space:pre-wrap;">.ImageJpegPart] </span>
1018                </span>
1019            </p>
1020</div>
1021            <p class="Normal DocDefaults " style="position: relative; margin-left: 1in;space-after: 0in;line-height: 100%;"/>
1022
1023            <p class="Normal DocDefaults " style="position: relative; margin-left: 1in;space-after: 0in;line-height: 100%;"/>
1024
1025            <p class="Heading1 Normal DocDefaults ">
1026                <span style="font-family: Calibri;">Traversing a docx</span>
1027            </p>
1028
1029            <p class="Normal DocDefaults ">
1030                <a class="notranslate" href="http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/src/main/java/org/docx4j/samples/OpenMainDocumentAndTraverse.java">
1031                    <span style="color: #0000FF;text-decoration: none;">OpenMainDocumentAndTraverse.java</span>
1032                </a>
1033                <span style="white-space:pre-wrap;"> in the samples directory shows you how to traverse the JAXB representation of a docx.</span>
1034            </p>
1035
1036            <p class="Normal DocDefaults ">
1037                <span style="white-space:pre-wrap;">One annoying thing about JAXB, is that an object   say a table   could be represented as </span>
1038                <span class="notranslate" style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">org.docx4j.wml.Tbl</span>
1039                <span style="white-space:pre-wrap;"> (as you would expect).  Or it might be wrapped in a </span>
1040                <span class="notranslate" style="font-weight: bold;color: #000000;font-family: Consolas;font-size: 9.0pt;">javax.xml.bind.JAXBElement</span>, in which case to get the real table, you have to do something like:</p>
1041
1042            <p class="Normal DocDefaults notranslate " style="space-after: 0in;line-height: 100%;" >
1043                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1044                    <span style="white-space:pre-wrap;"></span>
1045                </span>
1046                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
1047                    <span style="white-space:pre-wrap;">if </span>
1048                </span>
1049                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">( ((JAXBElement)o).getDeclaredType().getName().equals(</span>
1050                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">"org.docx4j.wml.Tbl"</span>
1051                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
1052                    <span style="white-space:pre-wrap;">) ) </span>
1053                </span>
1054            </p>
1055
1056            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;" class="notranslate">
1057                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1058                    <span style="white-space:pre-wrap;"></span>
1059                </span>
1060                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">org.docx4j.wml.Tbl tbl = (org.docx4j.wml.Tbl)((JAXBElement)o).getValue();</span>
1061            </p>
1062
1063            <p class="Normal DocDefaults "/>
1064
1065            <p class="Heading1 Normal DocDefaults ">
1066                <span style="font-family: Calibri;">Creating a new docx</span>
1067            </p>
1068
1069            <p class="Normal DocDefaults " style="space-after: 0.07in;line-height: 100%;">To create a new docx:</p>
1070
1071            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1072                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1073                    <span style="white-space:pre-wrap;"></span>
1074                </span>
1075                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Create the package</span>
1076            </p>
1077
1078            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;" >
1079                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1080                    <span style="white-space:pre-wrap;"></span>
1081                </span>
1082                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();</span>
1083            </p>
1084
1085            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;"/>
1086
1087            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1088                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1089                    <span style="white-space:pre-wrap;"></span>
1090                </span>
1091                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Save it</span>
1092            </p>
1093
1094            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;" >
1095                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1096                    <span style="white-space:pre-wrap;"></span>
1097                </span>
1098                <span style="font-family: Consolas;font-size: 9.0pt;">wordMLPackage.save(new java.io.File("helloworld.docx") );</span>
1099            </p>
1100
1101            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
1102                <span style="white-space:pre-wrap;">That's it.  </span>
1103            </p>
1104
1105            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
1106                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;" class="notranslate">
1107                    <span style="white-space:pre-wrap;">createPackage() </span>
1108                </span>is a convenience method, which does:</p>
1109
1110            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1111                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Create the package</span>
1112            </p>
1113
1114            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1115                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;" class="notranslate">WordprocessingMLPackage wordMLPackage = new WordprocessingMLPackage();</span>
1116            </p>
1117
1118            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1119                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Create the main document part (word/document.xml)</span>
1120            </p>
1121
1122            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1123                <span style="font-family: Consolas;font-size: 9.0pt;">MainDocumentPart wordDocumentPart = new MainDocumentPart();</span>
1124            </p>
1125
1126
1127            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1128                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Create main document part content</span>
1129            </p>
1130
1131            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1132                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">ObjectFactory factory = Context.getWmlObjectFactory();</span>
1133            </p>
1134
1135            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1136                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">org.docx4j.wml.Body body = factory .createBody();</span>
1137            </p>
1138
1139            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1140                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">org.docx4j.wml.Document wmlDocumentEl = factory .createDocument();</span>
1141            </p>
1142
1143            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1144                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">wmlDocumentEl.setBody(body);</span>
1145            </p>
1146
1147
1148            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1149                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Put the content in the part</span>
1150            </p>
1151
1152            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1153                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">wordDocumentPart.setJaxbElement(wmlDocumentEl);</span>
1154            </p>
1155
1156
1157            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1158                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Add the main document part to the package relationships</span>
1159            </p>
1160
1161            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1162                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// (creating it if necessary)</span>
1163            </p>
1164
1165            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1166                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">wmlPack.addTargetPart(wordDocumentPart);</span>
1167            </p>
1168
1169            <p class="Heading1 Normal DocDefaults ">Adding a paragraph of text</p>
1170
1171            <p class="Normal DocDefaults ">
1172                <span style="font-family: Consolas;font-size: 9.0pt;">
1173                    <span style="white-space:pre-wrap;">MainDocumentPart </span>
1174                </span>contains a method:</p>
1175
1176            <p class="Normal DocDefaults notranslate">
1177                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
1178                    <span style="white-space:pre-wrap;">public </span>
1179                </span>
1180                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">org.docx4j.wml.P addStyledParagraphOfText(String styleId, String text)</span>
1181            </p>
1182
1183            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">You can use that method to add a paragraph using the specified style.</p>
1184
1185            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">The XML we are looking to create will be something like:</p>
1186           
1187<div class="notranslate">           
1188
1189            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
1190                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&lt;</span>
1191                <span class="xmlmarkuptagname DefaultParagraphFont " style="color: #A31515;font-family: Consolas;font-size: 8.5pt;">
1192                    <span style="white-space:pre-wrap;">w:p </span>
1193                </span>
1194                <span class="apple-converted-space DefaultParagraphFont " style="color: #000000;font-family: Consolas;font-size: 8.5pt;"> </span>
1195                <span class="xmlmarkupattributename DefaultParagraphFont " style="color: #FF0000;font-family: Consolas;font-size: 8.5pt;">xmlns:w</span>
1196                <span class="xmlmarkupattributevalue DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">="http://schemas.openxmlformats.org/wordprocessingml/2006/main"</span>
1197                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&gt;</span>
1198                <span style="color: #000000;font-family: Consolas;font-size: 8.5pt;">
1199                    <br clear="all"/>
1200                </span>
1201                <span class="apple-style-span DefaultParagraphFont " style="color: #000000;font-family: Consolas;font-size: 8.5pt;">    </span>
1202                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&lt;</span>
1203                <span class="xmlmarkuptagname DefaultParagraphFont " style="color: #A31515;font-family: Consolas;font-size: 8.5pt;">w:r</span>
1204                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&gt;</span>
1205                <span style="color: #000000;font-family: Consolas;font-size: 8.5pt;">
1206                    <br clear="all"/>
1207                </span>
1208                <span class="apple-style-span DefaultParagraphFont " style="color: #000000;font-family: Consolas;font-size: 8.5pt;">        </span>
1209                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&lt;</span>
1210                <span class="xmlmarkuptagname DefaultParagraphFont " style="color: #A31515;font-family: Consolas;font-size: 8.5pt;">w:t</span>
1211                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&gt;</span>
1212                <span class="apple-style-span DefaultParagraphFont " style="color: #000000;font-family: Consolas;font-size: 8.5pt;">Hello world</span>
1213                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&lt;/</span>
1214                <span class="xmlmarkuptagname DefaultParagraphFont " style="color: #A31515;font-family: Consolas;font-size: 8.5pt;">w:t</span>
1215                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&gt;</span>
1216                <span style="color: #000000;font-family: Consolas;font-size: 8.5pt;">
1217                    <br clear="all"/>
1218                </span>
1219                <span class="apple-style-span DefaultParagraphFont " style="color: #000000;font-family: Consolas;font-size: 8.5pt;">    </span>
1220                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&lt;/</span>
1221                <span class="xmlmarkuptagname DefaultParagraphFont " style="color: #A31515;font-family: Consolas;font-size: 8.5pt;">w:r</span>
1222                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&gt;</span>
1223                <span style="color: #000000;font-family: Consolas;font-size: 8.5pt;">
1224                    <br clear="all"/>
1225                </span>
1226                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&lt;/</span>
1227                <span class="xmlmarkuptagname DefaultParagraphFont " style="color: #A31515;font-family: Consolas;font-size: 8.5pt;">w:p</span>
1228                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&gt;</span>
1229            </p>
1230
1231</div>
1232            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
1233                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
1234                    <span style="white-space:pre-wrap;">addStyledParagraphOfText </span>
1235                </span>builds the object structure  the JAXB way , and adds it to the document.</p>
1236
1237            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1238                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1239                    <span style="white-space:pre-wrap;"></span>
1240                </span>
1241                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">ObjectFactory factory = Context.getWmlObjectFactory();</span>
1242            </p>
1243
1244            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1245                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Create the paragraph</span>
1246            </p>
1247
1248            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1249                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">org.docx4j.wml.P  para = factory.createP();</span>
1250            </p>
1251
1252            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1253                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Create the text element</span>
1254            </p>
1255
1256            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1257                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">org.docx4j.wml.Text  t = factory.createText();</span>
1258            </p>
1259
1260            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1261                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">t.setValue(simpleText);</span>
1262            </p>
1263
1264            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1265                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Create the run</span>
1266            </p>
1267
1268            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1269                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">org.docx4j.wml.R  run = factory.createR();</span>
1270            </p>
1271
1272            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1273                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
1274                    <span style="white-space:pre-wrap;">run.getRunContent().add(t);    </span>
1275                </span>
1276            </p>
1277
1278            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1279                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">para.getParagraphContent().add(run);</span>
1280            </p>
1281           
1282            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1283                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Now add our paragraph to the document body</span>
1284            </p>
1285
1286            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1287                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">Body body = this.jaxbElement.getBody();</span>
1288            </p>
1289
1290            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1291                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">Body.getEGBlockLevelElts().add(para)</span>
1292            </p>
1293
1294            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">Alternatively, you can create the paragraph by marshalling XML:</p>
1295
1296            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1297                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Assuming String xml contains the XML above</span>
1298            </p>
1299
1300            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1301                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">org.docx4j.wml.P  para = XmlUtils.unmarshalString(xml);</span>
1302            </p>
1303
1304            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">For this to work, you need to ensure that all namespaces are declared properly in the string.</p>
1305
1306            <p class="Heading1 Normal DocDefaults ">Adding a Part</p>
1307
1308            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">What if you wanted to add a new styles part? Here's how:</p>
1309
1310            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1311                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Create a styles part</span>
1312            </p>
1313
1314            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1315                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
1316                    <span style="white-space:pre-wrap;">StyleDefinitionsPart stylesPart = </span>
1317                </span>
1318                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
1319                    <span style="white-space:pre-wrap;">new </span>
1320                </span>
1321                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">StyleDefinitionsPart();</span>
1322            </p>
1323
1324            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1325                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Populate it with default styles</span>
1326            </p>
1327
1328            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1329                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">stylesPart.unmarshalDefaultStyles();</span>
1330            </p>
1331
1332            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1333                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Add the styles part to the main document part relationships</span>
1334            </p>
1335
1336            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1337                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">wordDocumentPart.addTargetPart(stylesPart);</span>
1338            </p>
1339
1340            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">You'd take the same approach to add a header or footer.</p>
1341
1342            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">When you add a part this way, it is automatically added to the source part's relationships part.</p>
1343
1344            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">Generally, you'll also need to add a reference to the part (using its relationship id) to the Main Document Part.  This applies to images, headers and footers. (Comments, footnotes and endnotes are a bit different, in that what you add to the main document part are references to individual comments/footnotes/endnotes).</p>
1345
1346            <p class="Heading1 Normal DocDefaults ">
1347                <span style="font-family: Calibri;">docx to (X)HTML</span>
1348            </p>
1349
1350            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;"><span class="notranslate">docx4j</span> uses XSLT to transform a docx to XHTML:</p>
1351
1352            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1353                <span style="color: #000000;font-family: Courier New;font-size: 9.0pt;">
1354                    <span style="white-space:pre-wrap;">AbstractHtmlExporter exporter = </span>
1355                </span>
1356                <span style="font-weight: bold;color: #7F0055;font-family: Courier New;font-size: 9.0pt;">
1357                    <span style="white-space:pre-wrap;">new </span>
1358                </span>
1359                <span style="color: #000000;font-family: Courier New;font-size: 9.0pt;">HtmlExporterNG2();</span>
1360            </p>
1361
1362            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1363                <span style="color: #3F7F5F;font-family: Courier New;font-size: 9.0pt;">// note the *2* there</span>
1364            </p>
1365
1366
1367            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1368                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Write to StreamResult (in this case, an output stream)</span>
1369            </p>
1370
1371            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1372                <span style="color: #000000;font-family: Courier New;font-size: 9.0pt;">
1373                    <span style="white-space:pre-wrap;">OutputStream os = </span>
1374                </span>
1375                <span style="font-weight: bold;color: #7F0055;font-family: Courier New;font-size: 9.0pt;">
1376                    <span style="white-space:pre-wrap;">new </span>
1377                </span>
1378                <span style="color: #000000;font-family: Courier New;font-size: 9.0pt;">
1379                    <span style="white-space:pre-wrap;">java.io.FileOutputStream(inputfilepath + </span>
1380                </span>
1381                <span style="color: #2A00FF;font-family: Courier New;font-size: 9.0pt;">".html"</span>
1382                <span style="color: #000000;font-family: Courier New;font-size: 9.0pt;">);</span>
1383            </p>
1384
1385            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1386                <span style="color: #000000;font-family: Courier New;font-size: 9.0pt;">
1387                    <span style="white-space:pre-wrap;">javax.xml.transform.stream.StreamResult result </span>
1388                </span>
1389                <span style="color: #000000;font-family: Courier New;font-size: 9.0pt;">
1390                    <br clear="all"/>
1391                </span>
1392                <span style="color: #FFFFFF;font-family: Courier New;font-size: 9.0pt;">
1393                    <span style="white-space:pre-wrap;"></span>
1394                </span>
1395                <span style="color: #000000;font-family: Courier New;font-size: 9.0pt;">
1396                    <span style="white-space:pre-wrap;">= </span>
1397                </span>
1398                <span style="font-weight: bold;color: #7F0055;font-family: Courier New;font-size: 9.0pt;">
1399                    <span style="white-space:pre-wrap;">new </span>
1400                </span>
1401                <span style="color: #000000;font-family: Courier New;font-size: 9.0pt;">javax.xml.transform.stream.StreamResult(os);</span>
1402            </p>
1403
1404
1405            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1406                <span style="color: #000000;font-family: Courier New;font-size: 9.0pt;">
1407                    <span style="white-space:pre-wrap;">exporter.html(wordMLPackage, result, </span>
1408                </span>
1409            </p>
1410
1411            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1412                <span style="color: #000000;font-family: Courier New;font-size: 9.0pt;">
1413                    <span style="white-space:pre-wrap;">inputfilepath + </span>
1414                </span>
1415                <span style="color: #2A00FF;font-family: Courier New;font-size: 9.0pt;">"_files"</span>
1416                <span style="color: #000000;font-family: Courier New;font-size: 9.0pt;">);</span>
1417            </p>
1418
1419            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">You will find the generated HTML is clean.</p>
1420
1421            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;"><span class="notranslate">docx4j</span> uses Java XSLT extension functions to do the heavy lifting, so the XSLT itself is kept simple.</p>
1422
1423            <p class="Heading1 Normal DocDefaults ">
1424                <span style="font-family: Calibri;">docx to PDF</span>
1425            </p>
1426
1427            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;"><span class="notranslate">docx4j</span> produces XSL FO, which can in turn be used to create a PDF.</p>
1428
1429            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">At present, Apache FOP is integrated into <span class="notranslate">docx4j</span> for creating the PDF.  (Soon, we will be changing things so that <span class="notranslate">docx4j</span> generates FO, for use by your preferred FO renderer, whether that's FOP, or a commercial tool such as XEP).</p>
1430
1431            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">To create a PDF:</p>
1432
1433            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1434                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Fonts identity mapping   best on Microsoft Windows</span>
1435            </p>
1436
1437            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1438                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">wordMLPackage.setFontMapper(</span>
1439                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
1440                    <span style="white-space:pre-wrap;">new </span>
1441                </span>
1442                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">IdentityPlusMapper());</span>
1443            </p>
1444
1445
1446            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1447                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Set up converter</span>
1448            </p>
1449
1450            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1451                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
1452                    <span style="white-space:pre-wrap;">org.docx4j.convert.out.pdf.PdfConversion c </span>
1453                </span>
1454                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">
1455                    <br clear="all"/>
1456                </span>
1457                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1458                    <span style="white-space:pre-wrap;"></span>
1459                </span>
1460                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
1461                    <span style="white-space:pre-wrap;">= </span>
1462                </span>
1463                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
1464                    <span style="white-space:pre-wrap;">new </span>
1465                </span>
1466                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">org.docx4j.convert.out.pdf.viaXSLFO.Conversion(wordMLPackage);</span>
1467            </p>
1468
1469
1470            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1471                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Write to output stream</span>
1472            </p>
1473
1474            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1475                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
1476                    <span style="white-space:pre-wrap;">OutputStream os = </span>
1477                </span>
1478                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
1479                    <span style="white-space:pre-wrap;">new </span>
1480                </span>
1481                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
1482                    <span style="white-space:pre-wrap;">java.io.FileOutputStream(inputfilepath + </span>
1483                </span>
1484                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">".pdf"</span>
1485                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
1486                    <span style="white-space:pre-wrap;">);      </span>
1487                </span>
1488            </p>
1489
1490            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1491                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">c.output(os);</span>
1492            </p>
1493
1494            <p class="Heading1 Normal DocDefaults ">
1495                <span style="font-family: Calibri;">Image Handling</span>
1496            </p>
1497
1498            <p class="Normal DocDefaults ">When you add an image to a document in Word 2007, it is generally added as a new Part (ie you'll find a part in the resulting docx, containing the image in base 64 format).</p>
1499
1500            <p class="Normal DocDefaults ">When you open the document in <span class="notranslate">docx4j</span>, <span class="notranslate">docx4j</span> will create an image part representing it.</p>
1501
1502            <p class="Normal DocDefaults ">It is also possible to create a  linked  image.  In this case, the image is not embedded in the docx package, but rather, is referenced at its external location.</p>
1503
1504            <p class="Normal DocDefaults ">
1505                <span style="white-space:pre-wrap;"><span class="notranslate">docx4j</span>'s </span>
1506                <span class="notranslate" style="font-weight: bold;color: #000000;font-family: Consolas;font-size: 10.0pt;">BinaryPartAbstractImage</span>
1507                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
1508                    <span style="white-space:pre-wrap;"></span>
1509                </span>class contains methods to allow you to create both embedded and linked images (along with appropriate relationships).</p>
1510
1511            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1512                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">/**</span>
1513            </p>
1514
1515            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1516                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1517                    <span style="white-space:pre-wrap;"></span>
1518                </span>
1519                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">
1520                    <span style="white-space:pre-wrap;">* Create an image part from the provided byte array, attach it to the </span>
1521                </span>
1522            </p>
1523
1524            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1525                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">* main document part, and return it.*/</span>
1526            </p>
1527
1528            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1529                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
1530                    <span style="white-space:pre-wrap;">public static </span>
1531                </span>
1532                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">BinaryPartAbstractImage createImagePart(WordprocessingMLPackage wordMLPackage,</span>
1533            </p>
1534
1535            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1536                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1537                    <span style="white-space:pre-wrap;"></span>
1538                </span>
1539                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">byte</span>
1540                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
1541                    <span style="white-space:pre-wrap;">[] bytes) </span>
1542                </span>
1543            </p>
1544
1545            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1546                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1547                    <span style="white-space:pre-wrap;"></span>
1548                </span>
1549            </p>
1550
1551            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1552                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1553                    <span style="white-space:pre-wrap;"></span>
1554                </span>
1555                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">/**</span>
1556            </p>
1557
1558            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1559                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1560                    <span style="white-space:pre-wrap;"></span>
1561                </span>
1562                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">* Create an image part from the provided byte array, attach it to the source part</span>
1563            </p>
1564
1565            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1566                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1567                    <span style="white-space:pre-wrap;"></span>
1568                </span>
1569                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">* (eg the main document part, a header part etc), and return it.*/</span>
1570            </p>
1571
1572            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1573                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1574                    <span style="white-space:pre-wrap;"></span>
1575                </span>
1576                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
1577                    <span style="white-space:pre-wrap;">public static </span>
1578                </span>
1579                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">BinaryPartAbstractImage createImagePart(WordprocessingMLPackage wordMLPackage,</span>
1580            </p>
1581
1582            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1583                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1584                    <span style="white-space:pre-wrap;"></span>
1585                </span>
1586                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
1587                    <span style="white-space:pre-wrap;">Part sourcePart, </span>
1588                </span>
1589                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">byte</span>
1590                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
1591                    <span style="white-space:pre-wrap;">[] bytes) </span>
1592                </span>
1593            </p>
1594
1595            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;"/>
1596
1597            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1598                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1599                    <span style="white-space:pre-wrap;"></span>
1600                </span>
1601                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">/**</span>
1602            </p>
1603
1604            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1605                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1606                    <span style="white-space:pre-wrap;"></span>
1607                </span>
1608                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">* Create a linked image part, and attach it as a rel of the specified source part</span>
1609            </p>
1610
1611            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1612                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1613                    <span style="white-space:pre-wrap;"></span>
1614                </span>
1615                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">* (eg a header part)</span>
1616                <span style="font-family: Consolas;font-size: 9.0pt;">
1617                    <span style="white-space:pre-wrap;"></span>
1618                </span>
1619                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">*/</span>
1620            </p>
1621
1622            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
1623                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1624                    <span style="white-space:pre-wrap;"></span>
1625                </span>
1626                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
1627                    <span style="white-space:pre-wrap;">public static </span>
1628                </span>
1629                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">BinaryPartAbstractImage createLinkedImagePart(</span>
1630                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
1631                    <br clear="all"/>
1632                </span>
1633                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
1634                    <span style="white-space:pre-wrap;"></span>
1635                </span>
1636                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
1637                    <span style="white-space:pre-wrap;">WordprocessingMLPackage wordMLPackage, Part sourcePart, String fileurl) </span>
1638                </span>
1639            </p>
1640
1641            <p class="Normal DocDefaults "/>
1642
1643            <p class="Normal DocDefaults ">For an image to appear in the document, there also needs to be appropriate XML in the main document part.  This XML can take 2 basic forms:</p>
1644
1645
1646            <p class="ListParagraph Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1647                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>
1648                <span style="white-space:pre-wrap;">the Word 2007 </span>
1649                <span style="font-weight: bold;color: #800000;font-family: Consolas;">w:drawing</span>
1650                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">
1651                    <span style="white-space:pre-wrap;"></span>
1652                </span>form</p>
1653<div class="notranslate">
1654            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;"/>
1655
1656            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1657                <span style="font-family: Consolas;font-size: 9.0pt;">   </span>
1658                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">&lt;w:p&gt;</span>
1659            </p>
1660
1661            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1662                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1663                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;w:r&gt;</span>
1664            </p>
1665
1666            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1667                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1668                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1669                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;w:drawing&gt;</span>
1670            </p>
1671
1672            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1673                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1674                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1675                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1676                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   <span style="white-space:pre-wrap;">&lt;wp:inline </span>
1677                </span>
1678                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">distT</span>
1679                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">
1680                    <span style="white-space:pre-wrap;">="0" </span>
1681                </span>
1682                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">distB</span>
1683                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">
1684                    <span style="white-space:pre-wrap;">="0" </span>
1685                </span>
1686                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">distL</span>
1687                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">
1688                    <span style="white-space:pre-wrap;">="0" </span>
1689                </span>
1690                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">distR</span>
1691                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">="0"</span>
1692                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">&gt;</span>
1693            </p>
1694
1695            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1696                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1697                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1698                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1699                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1700                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   <span style="white-space:pre-wrap;">&lt;wp:extent </span>
1701                </span>
1702                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">cx</span>
1703                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">
1704                    <span style="white-space:pre-wrap;">="3238500" </span>
1705                </span>
1706                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">cy</span>
1707                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">="2362200" /</span>
1708                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">&gt;</span>
1709            </p>
1710
1711            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1712                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1713                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1714                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1715                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1716                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   <span style="white-space:pre-wrap;">&lt;wp:effectExtent </span>
1717                </span>
1718                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">l</span>
1719                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">
1720                    <span style="white-space:pre-wrap;">="19050" </span>
1721                </span>
1722                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">t</span>
1723                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">
1724                    <span style="white-space:pre-wrap;">="0" </span>
1725                </span>
1726                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">r</span>
1727                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">
1728                    <span style="white-space:pre-wrap;">="0" </span>
1729                </span>
1730                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">b</span>
1731                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">="0" /</span>
1732                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">&gt;</span>
1733            </p>
1734
1735            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1736                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1737                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1738                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1739                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1740                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   :</span>
1741            </p>
1742
1743            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1744                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1745                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1746                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1747                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1748                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;a:graphic &gt;</span>
1749            </p>
1750
1751            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1752                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1753                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1754                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1755                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1756                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1757                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   <span style="white-space:pre-wrap;">&lt;a:graphicData </span>
1758                </span>
1759                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">
1760                    <span style="white-space:pre-wrap;"> ..</span>
1761                </span>
1762                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">&gt;</span>
1763            </p>
1764
1765            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1766                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1767                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1768                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1769                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1770                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1771                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1772                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;pic:pic &gt;</span>
1773            </p>
1774
1775            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1776                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1777                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1778                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1779                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1780                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1781                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1782                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1783                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   :</span>
1784            </p>
1785
1786            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1787                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1788                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1789                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1790                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1791                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1792                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1793                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1794                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;pic:blipFill&gt;</span>
1795            </p>
1796
1797            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1798                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1799                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1800                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1801                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1802                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1803                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1804                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1805                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1806                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;</span>
1807                <span style="font-weight: bold;color: #800000;font-family: Consolas;font-size: 9.0pt;">
1808                    <span style="white-space:pre-wrap;">a:blip </span>
1809                </span>
1810                <span style="font-weight: bold;color: #FF0000;font-family: Consolas;font-size: 9.0pt;">r:embed</span>
1811                <span style="font-weight: bold;color: #0000FF;font-family: Consolas;font-size: 9.0pt;">="rId5"</span>
1812                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">
1813                    <span style="white-space:pre-wrap;"> /</span>
1814                </span>
1815                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">&gt;</span>
1816            </p>
1817
1818            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1819                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1820                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1821                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1822                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1823                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1824                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1825                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1826                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1827                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   :</span>
1828            </p>
1829
1830            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1831                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1832                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1833                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1834                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1835                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1836                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1837                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1838                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;</span>
1839                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">/</span>
1840                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">pic:blipFill&gt;</span>
1841            </p>
1842
1843            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1844                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1845                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1846                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1847                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1848                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1849                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1850                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1851                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   :</span>
1852            </p>
1853
1854            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1855                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1856                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1857                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1858                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1859                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1860                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1861                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;</span>
1862                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">/</span>
1863                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">pic:pic&gt;</span>
1864            </p>
1865
1866            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1867                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1868                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1869                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1870                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1871                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1872                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;</span>
1873                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">/</span>
1874                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">a:graphicData&gt;</span>
1875            </p>
1876
1877            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1878                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1879                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1880                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1881                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1882                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;</span>
1883                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">/</span>
1884                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">a:graphic&gt;</span>
1885            </p>
1886
1887            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1888                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1889                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1890                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1891                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;</span>
1892                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">/</span>
1893                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">wp:inline&gt;</span>
1894            </p>
1895
1896            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1897                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1898                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1899                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;</span>
1900                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">/</span>
1901                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">w:drawing&gt;</span>
1902            </p>
1903
1904            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1905                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1906                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;</span>
1907                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">/</span>
1908                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">w:r&gt;</span>
1909            </p>
1910
1911            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1912                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;</span>
1913                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">/</span>
1914                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">w:p&gt;</span>
1915            </p>
1916</div>
1917            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;"/>
1918
1919            <p class="ListParagraph Normal DocDefaults ">
1920                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>
1921                <span style="white-space:pre-wrap;">the Word 2003 VML-based </span>
1922                <span style="font-weight: bold;color: #800000;font-family: Consolas;">w:pict</span>
1923                <span style="white-space:pre-wrap;"> form</span>
1924            </p>
1925<div class="notranslate">
1926            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1927                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   </span>
1928                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">&lt;w:p&gt;</span>
1929            </p>
1930
1931            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1932                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1933                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;w:r&gt;</span>
1934            </p>
1935
1936            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1937                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1938                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1939                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;w:pict&gt;</span>
1940            </p>
1941
1942            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1943                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1944                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1945                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1946                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   <span style="white-space:pre-wrap;">&lt;v:shapetype </span>
1947                </span>
1948                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">id</span>
1949                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">
1950                    <span style="white-space:pre-wrap;">="_x0000_t75" </span>
1951                </span>
1952                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">coordsize</span>
1953                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">
1954                    <span style="white-space:pre-wrap;">="21600,21600" </span>
1955                </span>
1956                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">
1957                    <span style="white-space:pre-wrap;"> .. </span>
1958                </span>
1959                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">&gt;</span>
1960            </p>
1961
1962            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1963                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1964                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1965                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1966                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1967                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   <span style="white-space:pre-wrap;">&lt;v:stroke </span>
1968                </span>
1969                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">joinstyle</span>
1970                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">="miter" /</span>
1971                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">&gt;</span>
1972            </p>
1973
1974            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1975                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1976                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1977                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1978                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1979                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;v:formulas&gt;</span>
1980            </p>
1981
1982            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1983                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1984                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1985                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1986                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1987                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1988                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   :</span>
1989            </p>
1990
1991            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
1992                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1993                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1994                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1995                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
1996                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;</span>
1997                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">/</span>
1998                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">v:formulas&gt;</span>
1999            </p>
2000
2001            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2002                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2003                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2004                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2005                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2006                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   :</span>
2007            </p>
2008
2009            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2010                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2011                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2012                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2013                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;</span>
2014                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">/</span>
2015                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">v:shapetype&gt;</span>
2016            </p>
2017
2018            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2019                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2020                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2021                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2022                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   <span style="white-space:pre-wrap;">&lt;v:shape </span>
2023                </span>
2024                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">..</span>
2025                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">
2026                    <span style="white-space:pre-wrap;"></span>
2027                </span>
2028                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">style</span>
2029                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">="width:428.25pt;height:321pt"</span>
2030                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">&gt;</span>
2031            </p>
2032
2033            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2034                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2035                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2036                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2037                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2038                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;</span>
2039                <span style="font-weight: bold;color: #800000;font-family: Consolas;font-size: 9.0pt;">
2040                    <span style="white-space:pre-wrap;">v:imagedata </span>
2041                </span>
2042                <span style="font-weight: bold;color: #FF0000;font-family: Consolas;font-size: 9.0pt;">r:id</span>
2043                <span style="font-weight: bold;color: #0000FF;font-family: Consolas;font-size: 9.0pt;">="rId4"</span>
2044                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">
2045                    <span style="white-space:pre-wrap;"></span>
2046                </span>
2047                <span style="color: #FF0000;font-family: Consolas;font-size: 9.0pt;">o:title</span>
2048                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">="" /</span>
2049                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">&gt;</span>
2050            </p>
2051
2052            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2053                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2054                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2055                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   </span>
2056                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">   &lt;</span>
2057                <span style="color: #0000FF;font-family: Consolas;font-size: 9.0pt;">/</span>
2058                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">v:shape&gt;</span>
2059            </p>
2060
2061            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2062                <span style="font-family: Consolas;font-size: 12.0pt;">   </span>
2063                <span style="font-family: Consolas;font-size: 12.0pt;">   </span>
2064                <span style="font-family: Consolas;font-size: 12.0pt;">   </span>
2065                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">&lt;</span>
2066                <span style="color: #0000FF;font-family: Consolas;font-size: 10.0pt;">/</span>
2067                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">w:pict&gt;</span>
2068            </p>
2069
2070            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2071                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   </span>
2072                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   &lt;</span>
2073                <span style="color: #0000FF;font-family: Consolas;font-size: 10.0pt;">/</span>
2074                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">w:r&gt;</span>
2075            </p>
2076
2077            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2078                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   &lt;</span>
2079                <span style="color: #0000FF;font-family: Consolas;font-size: 10.0pt;">/</span>
2080                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">w:p&gt;</span>
2081            </p>
2082</div>
2083            <p class="Normal DocDefaults "/>
2084
2085            <p class="Normal DocDefaults ">
2086                <span style="white-space:pre-wrap;"><span class="notranslate">docx4j</span> can create the Word 2007 </span>
2087                <span style="font-weight: bold;color: #800000;font-family: Consolas;">w:drawing/wp:inline</span>
2088                <span style="color: #800000;font-family: Consolas;font-size: 9.0pt;">
2089                    <span style="white-space:pre-wrap;"></span>
2090                </span>form for you:</p>
2091
2092            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2093                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2094                    <span style="white-space:pre-wrap;"></span>
2095                </span>
2096                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">/**</span>
2097            </p>
2098
2099            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2100                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2101                    <span style="white-space:pre-wrap;"></span>
2102                </span>
2103                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">
2104                    <span style="white-space:pre-wrap;">* Create a </span>
2105                </span>
2106                <span style="color: #7F7F9F;font-family: Consolas;font-size: 9.0pt;">
2107                    <span style="white-space:pre-wrap;">&lt;wp:inline&gt; </span>
2108                </span>
2109                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">element suitable for this image,</span>
2110            </p>
2111
2112            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2113                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2114                    <span style="white-space:pre-wrap;"></span>
2115                </span>
2116                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">* which can be linked or embedded in w:p/w:r/w:drawing.</span>
2117            </p>
2118
2119            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2120                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2121                    <span style="white-space:pre-wrap;"></span>
2122                </span>
2123                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">* If the image is wider than the page, it will be scaled</span>
2124            </p>
2125
2126            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2127                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2128                    <span style="white-space:pre-wrap;"></span>
2129                </span>
2130                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">* automatically.  See Javadoc for other signatures.</span>
2131            </p>
2132
2133            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2134                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2135                    <span style="white-space:pre-wrap;"></span>
2136                </span>
2137                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">
2138                    <span style="white-space:pre-wrap;">* </span>
2139                </span>
2140                <span style="color: #7F9FBF;font-family: Consolas;font-size: 9.0pt;">
2141                    <span style="white-space:pre-wrap;">@param </span>
2142                </span>
2143                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">filenameHint Any text, for example the original filename</span>
2144            </p>
2145
2146            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2147                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2148                    <span style="white-space:pre-wrap;"></span>
2149                </span>
2150                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">
2151                    <span style="white-space:pre-wrap;">* </span>
2152                </span>
2153                <span style="color: #7F9FBF;font-family: Consolas;font-size: 9.0pt;">
2154                    <span style="white-space:pre-wrap;">@param </span>
2155                </span>
2156                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">altText  Like HTML's alt text</span>
2157            </p>
2158
2159            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2160                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2161                    <span style="white-space:pre-wrap;"></span>
2162                </span>
2163                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">
2164                    <span style="white-space:pre-wrap;">* </span>
2165                </span>
2166                <span style="color: #7F9FBF;font-family: Consolas;font-size: 9.0pt;">
2167                    <span style="white-space:pre-wrap;">@param </span>
2168                </span>
2169                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">id1   An id unique in the document</span>
2170            </p>
2171
2172            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2173                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2174                    <span style="white-space:pre-wrap;"></span>
2175                </span>
2176                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">
2177                    <span style="white-space:pre-wrap;">* </span>
2178                </span>
2179                <span style="color: #7F9FBF;font-family: Consolas;font-size: 9.0pt;">
2180                    <span style="white-space:pre-wrap;">@param </span>
2181                </span>
2182                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">id2   Another id unique in the document</span>
2183            </p>
2184
2185            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2186                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2187                    <span style="white-space:pre-wrap;"></span>
2188                </span>
2189                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">
2190                    <span style="white-space:pre-wrap;">* </span>
2191                </span>
2192                <span style="color: #7F9FBF;font-family: Consolas;font-size: 9.0pt;">
2193                    <span style="white-space:pre-wrap;">@param </span>
2194                </span>
2195                <span style="font-weight: bold;color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">link</span>
2196                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">
2197                    <span style="white-space:pre-wrap;">  true if this is to be </span>
2198                </span>
2199                <span style="font-weight: bold;color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">linked not embedded</span>
2200                <span style="font-family: Consolas;font-size: 9.0pt;">
2201                    <span style="white-space:pre-wrap;"></span>
2202                </span>
2203                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">*/</span>
2204            </p>
2205
2206            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
2207                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2208                    <span style="white-space:pre-wrap;"></span>
2209                </span>
2210                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
2211                    <span style="white-space:pre-wrap;">public </span>
2212                </span>
2213                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
2214                    <span style="white-space:pre-wrap;">Inline createImageInline(String filenameHint, String altText, </span>
2215                </span>
2216            </p>
2217
2218            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
2219                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2220                    <span style="white-space:pre-wrap;"></span>
2221                </span>
2222                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
2223                    <span style="white-space:pre-wrap;">int </span>
2224                </span>
2225                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
2226                    <span style="white-space:pre-wrap;">id1, </span>
2227                </span>
2228                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
2229                    <span style="white-space:pre-wrap;">int </span>
2230                </span>
2231                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
2232                    <span style="white-space:pre-wrap;">id2, </span>
2233                </span>
2234                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
2235                    <span style="white-space:pre-wrap;">boolean </span>
2236                </span>
2237                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
2238                    <span style="white-space:pre-wrap;">link) </span>
2239                </span>
2240            </p>
2241
2242            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;"/>
2243
2244            <p class="Normal DocDefaults ">
2245                <span style="white-space:pre-wrap;">which you can then add to a </span>
2246                <span style="font-weight: bold;color: #800000;font-family: Consolas;">w:r/w:drawing.</span>
2247            </p>
2248
2249            <p class="Normal DocDefaults ">
2250                <span style="white-space:pre-wrap;">Finally, with <span class="notranslate">docx4j</span>, you can convert images from formats unsupported by Word (eg PDF), to PNG, which is a supported format.  For this, <span class="notranslate">docx4j</span> uses </span>
2251                <span style="font-weight: bold;">ImageMagick</span>.  So if you want to use this feature, you need to install ImageMagick.  <span class="notranslate">docx4j</span> invokes ImageMagick using:</p>
2252
2253            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
2254                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
2255                    <span style="white-space:pre-wrap;"> Process p = Runtime.getRuntime().exec(</span>
2256                </span>
2257                <span style="color: #2A00FF;font-family: Consolas;font-size: 8.0pt;">
2258                    <span style="white-space:pre-wrap;">"imconvert -density " </span>
2259                </span>
2260                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
2261                    <span style="white-space:pre-wrap;">+ density + </span>
2262                </span>
2263                <span style="color: #2A00FF;font-family: Consolas;font-size: 8.0pt;">" -units PixelsPerInch - png:-"</span>
2264                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">);</span>
2265                <span style="color: #000000;font-family: Consolas;font-size: 8.0pt;">
2266                    <br clear="all"/>
2267                </span>
2268            </p>
2269
2270            <p class="Normal DocDefaults ">
2271                <span style="white-space:pre-wrap;">Note the name </span>
2272                <span style="font-weight: bold;">imconvert</span>
2273                <span style="white-space:pre-wrap;">, which is used so that we don't have to supply a full path to exec.  You'll need to accommodate that.  </span>
2274            </p>
2275
2276            <p class="Heading1 Normal DocDefaults ">
2277                <span style="font-family: Calibri;">Text extraction</span>
2278            </p>
2279
2280            <p class="Normal DocDefaults ">
2281                <span style="white-space:pre-wrap;">A quick way to extract the text from a docx, is to use </span>
2282                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
2283                    <span style="white-space:pre-wrap;">TextUtils   </span>
2284                </span>
2285            </p>
2286
2287            <p class="Normal DocDefaults notranslate">
2288                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2289                    <span style="white-space:pre-wrap;"></span>
2290                </span>
2291                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
2292                    <span style="white-space:pre-wrap;">public static void </span>
2293                </span>
2294                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">extractText(Object o, Writer w)</span>
2295            </p>
2296
2297            <p class="Normal DocDefaults ">which marshals the object it is passed via a SAX ContentHandler, in order to output the text to the Writer.</p>
2298
2299            <p class="Heading1 Normal DocDefaults ">
2300                <span style="font-family: Calibri;">Text substitution</span>
2301            </p>
2302
2303            <p class="Normal DocDefaults ">
2304                <span style="white-space:pre-wrap;">Text substitution is easy enough, provided the string you are searching for is represented in a </span>
2305                <span style="font-weight: bold;font-family: Consolas;">
2306                    <span style="white-space:pre-wrap;">org.docx4j.wml.Text </span>
2307                </span>object in the form you expect.</p>
2308
2309            <p class="Normal DocDefaults ">However, that won't necessarily be the case.  The string could be broken across text runs for any of the following reasons:</p>
2310
2311            <p class="ListParagraph Normal DocDefaults ">
2312                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>part of the word is formatted differently (eg in bold)</p>
2313
2314            <p class="ListParagraph Normal DocDefaults ">
2315                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>spelling/grammar</p>
2316
2317            <p class="ListParagraph Normal DocDefaults ">
2318                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>editing order (rsid)</p>
2319
2320            <p class="Normal DocDefaults "><span class="notranslate">docx4j</span> will eventually accommodate these cases, but doesn't right now.</p>
2321
2322            <p class="Normal DocDefaults ">Subject to that, you can do text substitution in a variety of ways, for example:</p>
2323
2324            <p class="ListParagraph Normal DocDefaults ">
2325                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>
2326                <span style="white-space:pre-wrap;">traversing the main document part, and looking at the </span>
2327                <span style="font-weight: bold;font-family: Consolas;">
2328                    <span style="white-space:pre-wrap;" class="notranslate">org.docx4j.wml.Text </span>
2329                </span>objects</p>
2330
2331            <p class="ListParagraph Normal DocDefaults ">
2332                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>
2333                <span style="white-space:pre-wrap;">marshal to a string, search/replace in that, then unmarshall again </span>
2334            </p>
2335
2336            <p class="Normal DocDefaults "><span class="notranslate">docx4j</span> s XmlUtils also contains:</p>
2337
2338            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2339                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2340                    <span style="white-space:pre-wrap;"></span>
2341                </span>
2342                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">/**</span>
2343            </p>
2344
2345            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2346                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2347                    <span style="white-space:pre-wrap;"></span>
2348                </span>
2349                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">* Give a string of wml containing ${key1}, ${key2}, return a suitable</span>
2350            </p>
2351
2352            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2353                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2354                    <span style="white-space:pre-wrap;"></span>
2355                </span>
2356                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">* object.*/</span>
2357            </p>
2358
2359            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
2360                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2361                    <span style="white-space:pre-wrap;"></span>
2362                </span>
2363                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
2364                    <span style="white-space:pre-wrap;">public static </span>
2365                </span>
2366                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
2367                    <span style="white-space:pre-wrap;">Object unmarshallFromTemplate(String wmlTemplateString, </span>
2368                </span>
2369            </p>
2370
2371            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2372                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2373                    <span style="white-space:pre-wrap;"></span>
2374                </span>
2375                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
2376                    <span style="white-space:pre-wrap;">java.util.HashMap&lt;String, String&gt; mappings) </span>
2377                </span>
2378                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
2379                    <br clear="all"/>
2380                </span>
2381            </p>
2382
2383            <p class="Normal DocDefaults ">See the UnmarshallFromTemplate example, which operates on a string containing:</p>
2384<div class="notranslate">
2385            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2386                <span style="font-family: Consolas;font-size: 12.0pt;">   </span>
2387                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">&lt;w:p&gt;</span>
2388            </p>
2389
2390            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2391                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   </span>
2392                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   &lt;w:r&gt;</span>
2393            </p>
2394
2395            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2396                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   </span>
2397                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   </span>
2398                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   &lt;w:t&gt;</span>
2399                <span style="color: #000000;font-family: Consolas;font-size: 10.0pt;">
2400                    <span style="white-space:pre-wrap;">My favourite colour is </span>
2401                </span>
2402                <span style="font-weight: bold;color: #000000;font-family: Consolas;font-size: 10.0pt;">${colour}</span>
2403                <span style="color: #000000;font-family: Consolas;font-size: 10.0pt;">.</span>
2404                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">&lt;</span>
2405                <span style="color: #0000FF;font-family: Consolas;font-size: 10.0pt;">/</span>
2406                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">w:t&gt;</span>
2407            </p>
2408
2409            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2410                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   </span>
2411                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   &lt;</span>
2412                <span style="color: #0000FF;font-family: Consolas;font-size: 10.0pt;">/</span>
2413                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">w:r&gt;</span>
2414            </p>
2415
2416            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2417                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   &lt;</span>
2418                <span style="color: #0000FF;font-family: Consolas;font-size: 10.0pt;">/</span>
2419                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">w:p&gt;</span>
2420            </p>
2421
2422            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2423                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   <span style="white-space:pre-wrap;">&lt;w:p </span>
2424                </span>
2425                <span style="color: #0000FF;font-family: Consolas;font-size: 10.0pt;">/</span>
2426                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">&gt;</span>
2427            </p>
2428
2429            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2430                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   &lt;w:p&gt;</span>
2431            </p>
2432
2433            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2434                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   </span>
2435                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   &lt;w:r&gt;</span>
2436            </p>
2437
2438            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2439                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   </span>
2440                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   </span>
2441                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   &lt;w:t&gt;</span>
2442                <span style="color: #000000;font-family: Consolas;font-size: 10.0pt;">
2443                    <span style="white-space:pre-wrap;">My favourite ice cream is </span>
2444                </span>
2445                <span style="font-weight: bold;color: #000000;font-family: Consolas;font-size: 10.0pt;">${icecream}</span>
2446                <span style="color: #000000;font-family: Consolas;font-size: 10.0pt;">.</span>
2447                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">&lt;</span>
2448                <span style="color: #0000FF;font-family: Consolas;font-size: 10.0pt;">/</span>
2449                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">w:t&gt;</span>
2450            </p>
2451
2452            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2453                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   </span>
2454                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   &lt;</span>
2455                <span style="color: #0000FF;font-family: Consolas;font-size: 10.0pt;">/</span>
2456                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">w:r&gt;</span>
2457            </p>
2458
2459            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2460                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">   &lt;</span>
2461                <span style="color: #0000FF;font-family: Consolas;font-size: 10.0pt;">/</span>
2462                <span style="color: #800000;font-family: Consolas;font-size: 10.0pt;">w:p&gt;</span>
2463            </p>
2464</div>
2465            <p class="Heading1 Normal DocDefaults ">
2466                <span style="font-family: Calibri;">Tips and Tricks</span>
2467            </p>
2468
2469            <p class="Heading2 Normal DocDefaults ">Work with the  Flat OPC XML Format </p>
2470
2471            <p class="Normal DocDefaults ">When you want to look inside a docx document, it's a bit of a pain to have to unzip it to look at the relevant part.</p>
2472
2473            <p class="Normal DocDefaults ">There are 2 ways around this.</p>
2474
2475            <p class="Normal DocDefaults ">
2476                <span style="white-space:pre-wrap;">One is </span>
2477                <a class="notranslate" href="http://www.codeplex.com/PackageExplorer">
2478                    <span style="color: #0000FF;text-decoration: none;">http://www.codeplex.com/PackageExplorer</span>
2479                </a>, which can unzip the docx, and pretty print a part.</p>
2480
2481            <p class="Normal DocDefaults ">Another is to save the docx as  Word XML document (*.xml) .  This produces a single XML file, which you can open in an XML editor such as XPontus.</p>
2482
2483            <p class="Normal DocDefaults "><span class="notranslate">docx4j</span> can open Flat OPC XML files, and save to them.</p>
2484
2485            <p class="Normal DocDefaults ">To open a Flat OPC XML file:</p>
2486
2487            <p class="Command NormalWeb Normal DocDefaults notranslate" style="position: relative; margin-left: 0in;">   <span style="white-space:pre-wrap;">WordprocessingMLPackage wordMLPackage = </span>
2488                <br clear="all"/>      WordprocessingMLPackage.load(new java.io.File(inputfilepath));</p>
2489
2490            <p class="Normal DocDefaults ">To save as Flat OPC XML:</p>
2491
2492            <p class="Command NormalWeb Normal DocDefaults notranslate" style="position: relative; margin-left: 0in;">   wordMLPackage.save(new java.io.File(outputfilepath));</p>
2493
2494            <p class="Normal DocDefaults ">In both cases, the Flat OPC code will be used if and only if the file extension is  .xml .</p>
2495
2496            <p class="Heading2 Normal DocDefaults "/>
2497
2498            <p class="Heading2 Normal DocDefaults ">Remember UnmarshalFromString</p>
2499
2500            <p class="Normal DocDefaults ">When you are manipulating docx documents, it is often useful to unmarshal snippets of XML (eg a String representing a paragraph to be inserted into the document).</p>
2501
2502            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">For example, given:</p>
2503
2504            <p class="Normal DocDefaults notranslate" style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
2505                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&lt;</span>
2506                <span class="xmlmarkuptagname DefaultParagraphFont " style="color: #A31515;font-family: Consolas;font-size: 8.5pt;">
2507                    <span style="white-space:pre-wrap;">w:p </span>
2508                </span>
2509                <span class="apple-converted-space DefaultParagraphFont " style="color: #000000;font-family: Consolas;font-size: 8.5pt;"> </span>
2510                <span class="xmlmarkupattributename DefaultParagraphFont " style="color: #FF0000;font-family: Consolas;font-size: 8.5pt;">xmlns:w</span>
2511                <span class="xmlmarkupattributevalue DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">="http://schemas.openxmlformats.org/wordprocessingml/2006/main"</span>
2512                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&gt;</span>
2513                <span style="color: #000000;font-family: Consolas;font-size: 8.5pt;">
2514                    <br clear="all"/>
2515                </span>
2516                <span class="apple-style-span DefaultParagraphFont " style="color: #000000;font-family: Consolas;font-size: 8.5pt;">    </span>
2517                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&lt;</span>
2518                <span class="xmlmarkuptagname DefaultParagraphFont " style="color: #A31515;font-family: Consolas;font-size: 8.5pt;">w:r</span>
2519                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&gt;</span>
2520                <span style="color: #000000;font-family: Consolas;font-size: 8.5pt;">
2521                    <br clear="all"/>
2522                </span>
2523                <span class="apple-style-span DefaultParagraphFont " style="color: #000000;font-family: Consolas;font-size: 8.5pt;">        </span>
2524                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&lt;</span>
2525                <span class="xmlmarkuptagname DefaultParagraphFont " style="color: #A31515;font-family: Consolas;font-size: 8.5pt;">w:t</span>
2526                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&gt;</span>
2527                <span class="apple-style-span DefaultParagraphFont " style="color: #000000;font-family: Consolas;font-size: 8.5pt;">Hello world</span>
2528                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&lt;/</span>
2529                <span class="xmlmarkuptagname DefaultParagraphFont " style="color: #A31515;font-family: Consolas;font-size: 8.5pt;">w:t</span>
2530                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&gt;</span>
2531                <span style="color: #000000;font-family: Consolas;font-size: 8.5pt;">
2532                    <br clear="all"/>
2533                </span>
2534                <span class="apple-style-span DefaultParagraphFont " style="color: #000000;font-family: Consolas;font-size: 8.5pt;">    </span>
2535                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&lt;/</span>
2536                <span class="xmlmarkuptagname DefaultParagraphFont " style="color: #A31515;font-family: Consolas;font-size: 8.5pt;">w:r</span>
2537                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&gt;</span>
2538                <span style="color: #000000;font-family: Consolas;font-size: 8.5pt;">
2539                    <br clear="all"/>
2540                </span>
2541                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&lt;/</span>
2542                <span class="xmlmarkuptagname DefaultParagraphFont " style="color: #A31515;font-family: Consolas;font-size: 8.5pt;">w:p</span>
2543                <span class="xmlmarkupbracket DefaultParagraphFont " style="color: #0000FF;font-family: Consolas;font-size: 8.5pt;">&gt;</span>
2544            </p>
2545
2546            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">you can simply:</p>
2547
2548            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2549                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2550                    <span style="white-space:pre-wrap;"></span>
2551                </span>
2552                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">// Assuming String xml contains the XML above</span>
2553            </p>
2554
2555            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
2556                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2557                    <span style="white-space:pre-wrap;"></span>
2558                </span>
2559                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">org.docx4j.wml.P  para = XmlUtils.unmarshalString(xml);</span>
2560            </p>
2561
2562            <p class="Heading2 Normal DocDefaults ">Cloning</p>
2563
2564            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">To clone a JAXB object, use one of the following methods in XmlUtils:</p>
2565
2566            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2567                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2568                    <span style="white-space:pre-wrap;"></span>
2569                </span>
2570                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">
2571                    <span style="white-space:pre-wrap;">/** Clone this JAXB object, using default JAXBContext. */ </span>
2572                </span>
2573            </p>
2574
2575            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
2576                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2577                    <span style="white-space:pre-wrap;"></span>
2578                </span>
2579                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
2580                    <span style="white-space:pre-wrap;">public static </span>
2581                </span>
2582                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
2583                    <span style="white-space:pre-wrap;">&lt;T&gt; T deepCopy(T value) </span>
2584                </span>
2585            </p>
2586
2587            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2588                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2589                    <span style="white-space:pre-wrap;"></span>
2590                </span>
2591            </p>
2592
2593            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2594                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2595                    <span style="white-space:pre-wrap;"></span>
2596                </span>
2597                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">/** Clone this JAXB object */</span>
2598            </p>
2599
2600            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
2601                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2602                    <span style="white-space:pre-wrap;"></span>
2603                </span>
2604                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
2605                    <span style="white-space:pre-wrap;">public static </span>
2606                </span>
2607                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
2608                    <span style="white-space:pre-wrap;">&lt;T&gt; T deepCopy(T value, JAXBContext jc) </span>
2609                </span>
2610            </p>
2611
2612            <p class="Heading2 Normal DocDefaults notranslate">
2613                <span style="font-family: Consolas;">@XmlRootElement</span>
2614            </p>
2615
2616            <p class="Normal DocDefaults ">
2617                <span style="white-space:pre-wrap;">Most commonly used objects have an </span>
2618                <span style="font-weight: bold;font-family: Consolas;">
2619                    <span style="white-space:pre-wrap;">@XmlRootElement </span>
2620                </span>
2621                <span style="white-space:pre-wrap;">annotation, so they can be marshalled and unmarshalled.  </span>
2622            </p>
2623
2624            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
2625                <span style="white-space:pre-wrap;">In some cases, you might find this annotation is missing.  </span>
2626            </p>
2627
2628            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
2629                <span style="white-space:pre-wrap;">If you can't add the annotation to the jaxb source code, an alternative is to </span>
2630                <span style="text-decoration: none;">marshall</span>
2631                <span style="white-space:pre-wrap;"> it using code which is explicit about the resulting QName.  For example, XmlUtils contains:</span>
2632            </p>
2633
2634            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2635                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2636                    <span style="white-space:pre-wrap;"></span>
2637                </span>
2638                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">/** Marshal to a W3C document, for object</span>
2639            </p>
2640
2641            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2642                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2643                    <span style="white-space:pre-wrap;"></span>
2644                </span>
2645                <span style="color: #3F5FBF;font-family: Consolas;font-size: 9.0pt;">*  missing an @XmlRootElement annotation.  */</span>
2646            </p>
2647
2648            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
2649                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2650                    <span style="white-space:pre-wrap;"></span>
2651                </span>
2652                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
2653                    <span style="white-space:pre-wrap;">public static </span>
2654                </span>
2655                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">org.w3c.dom.Document marshaltoW3CDomDocument(Object o, JAXBContext jc,</span>
2656                <span style="font-family: Consolas;font-size: 9.0pt;">
2657                    <br clear="all"/>
2658                </span>
2659                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2660                    <span style="white-space:pre-wrap;"></span>
2661                </span>
2662                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
2663                    <span style="white-space:pre-wrap;">String uri, String local, Class declaredType) </span>
2664                </span>
2665            </p>
2666
2667            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">You could use this like so:</p>
2668
2669            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
2670                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2671                    <span style="white-space:pre-wrap;"></span>
2672                </span>
2673                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
2674                    <span style="white-space:pre-wrap;">CTFootnotes footnotes = </span>
2675                </span>
2676                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
2677                    <br clear="all"/>
2678                </span>
2679                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2680                    <span style="white-space:pre-wrap;"></span>
2681                </span>
2682                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">wmlPackage.getMainDocumentPart().getFootnotesPart().getJaxbElement().getValue();</span>
2683            </p>
2684
2685            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
2686                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2687                    <span style="white-space:pre-wrap;"></span>
2688                </span>
2689                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">CTFtnEdn ftn = footnotes.getFootnote().get(1);</span>
2690            </p>
2691
2692            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2693                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2694                    <span style="white-space:pre-wrap;"></span>
2695                </span>
2696            </p>
2697
2698            <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;">
2699                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2700                    <span style="white-space:pre-wrap;"></span>
2701                </span>
2702                <span style="color: #3F7F5F;font-family: Consolas;font-size: 9.0pt;">
2703                    <span style="white-space:pre-wrap;">// No @XmlRootElement on CTFtnEdn, so .. </span>
2704                </span>
2705            </p>
2706
2707            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
2708                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2709                    <span style="white-space:pre-wrap;"></span>
2710                </span>
2711                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">Document d = XmlUtils.marshaltoW3CDomDocument( ftn,</span>
2712            </p>
2713
2714            <p class="Normal DocDefaults notranslate" style="space-after: 0in;line-height: 100%;">
2715                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2716                    <span style="white-space:pre-wrap;"></span>
2717                </span>
2718                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">
2719                    <span style="white-space:pre-wrap;">Context.jc, Namespaces.NS_WORD12, </span>
2720                </span>
2721                <span style="color: #2A00FF;font-family: Consolas;font-size: 9.0pt;">"footnote"</span>
2722                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">,  CTFtnEdn.</span>
2723                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
2724                    <span style="white-space:pre-wrap;">class </span>
2725                </span>
2726                <span style="color: #000000;font-family: Consolas;font-size: 9.0pt;">);</span>
2727            </p>
2728
2729            <p class="Normal DocDefaults " style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">If you need to unmarshal, you can use:</p>
2730
2731            <p class="Normal DocDefaults notranslate" style="space-before: 0.07in;space-after: 0.07in;line-height: 100%;">
2732                <span style="color: #FFFFFF;font-family: Consolas;font-size: 9.0pt;">
2733                    <span style="white-space:pre-wrap;"></span>
2734                </span>
2735                <span style="font-weight: bold;color: #7F0055;font-family: Consolas;font-size: 9.0pt;">
2736                    <span style="white-space:pre-wrap;">public static </span>
2737                </span>
2738                <span class="apple-style-span DefaultParagraphFont " style="color: #000000;font-family: Consolas;font-size: 9.0pt;">Object unmarshalString(String str, JAXBContext jc, Class declaredType)</span>
2739            </p>
2740
2741            <p class="Heading1 Normal DocDefaults ">
2742                <span style="font-family: Calibri;">The <span class="notranslate">docx4j</span> forum</span>
2743            </p>
2744
2745            <p class="Normal DocDefaults ">
2746                <span style="white-space:pre-wrap;">Free community support is available in the <span class="notranslate">docx4j</span> forum, at </span>
2747                <a class="notranslate" href="http://dev.plutext.org/forums/">
2748                    <span style="color: #0000FF;text-decoration: none;">http://dev.plutext.org/forums/</span>
2749                </a>
2750            </p>
2751
2752            <p class="Normal DocDefaults ">This discussion is generally in English.  If you can volunteer to moderate a forum in your language, please let us know.</p>
2753
2754            <p class="Heading1 Normal DocDefaults ">
2755                <span style="font-family: Calibri;">Other Support Options</span>
2756            </p>
2757
2758            <p class="Normal DocDefaults ">
2759                <span style="white-space:pre-wrap;">If the free community support available in the <span class="notranslate">docx4j</span> forum does not meet your needs, or you simply want to outsource some coding, you are welcome to purchase programming, consulting and priority support from </span>
2760                <a class="notranslate" href="http://www.plutext.com/m/index.php/docx4j-support.html">
2761                    <span class="Hyperlink DefaultParagraphFont " style="font-family: Trebuchet MS;font-size: 10.0pt;">http://www.plutext.com/m/index.php/docx4j-support.html</span>
2762                </a>
2763            </p>
2764
2765            <p class="Normal DocDefaults ">By purchasing services from Plutext, you support the continued development of <span class="notranslate">docx4j</span>.</p>
2766
2767            <p class="Heading1 Normal DocDefaults ">
2768                <span style="font-family: Calibri;">Roadmap</span>
2769            </p>
2770
2771            <p class="Normal DocDefaults ">
2772                <span style="font-weight: bold;">Word 2010 support.</span>
2773                <span style="white-space:pre-wrap;"> Support for the new XML elements/schemas introduced with Word 2010, and for the compatibility mechanism. This is the main justification for the 3.0 label.</span>
2774            </p>
2775
2776            <p class="Normal DocDefaults ">
2777                <span style="font-weight: bold;">HTML exporters:</span>
2778                <span style="white-space:pre-wrap;"> get rid of old ones; standardise on NG2. The idea is to remove any 'which should I use' confusion, and focus effort/know-how. </span>
2779            </p>
2780
2781            <p class="Normal DocDefaults ">
2782                <span style="font-weight: bold;">PDF exporters:</span>
2783                <span style="white-space:pre-wrap;"> standardise on viaXSLFO, and get rid of viaIText and viaHTML. As with HTML, the idea is to remove any 'which should I use' confusion, and focus effort/know-how. <span class="notranslate">docx4j</span> could produce XSL FO only, and rely on the user to have FOP or equivalent to actually produce the PDF. This will reduce dependencies, making <span class="notranslate">docx4j</span> lighter. The goal would be to remove the fop jar (2.8M), PDF renderer jar (1.6M), iText jar (1.1M), and core-renderer (1M).</span>
2784            </p>
2785
2786            <p class="Normal DocDefaults ">
2787                <span style="font-weight: bold;">Font handling:</span>
2788                <span style="white-space:pre-wrap;"> remove the panose stuff, so we don't need a customised FOP jar. </span>
2789            </p>
2790
2791            <p class="Normal DocDefaults ">
2792                <span style="font-weight: bold;">Layout model/intermediate format</span>: <span class="notranslate">docx4j</span> contains a DocumentModel, which could be further developed to support:</p>
2793
2794            <p class="ListParagraph Normal DocDefaults ">
2795                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Search/replace</p>
2796
2797            <p class="ListParagraph Normal DocDefaults ">
2798                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>Estimating page content</p>
2799
2800            <p class="ListParagraph Normal DocDefaults ">
2801                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>XSLT, by enclosing sections, lists</p>
2802
2803            <p class="Normal DocDefaults ">
2804                <span style="font-weight: bold;">Inserting OLE objects</span>: so spreadsheets, PDFs etc can be embedded.</p>
2805
2806            <p class="Heading1 Normal DocDefaults ">
2807                <span style="font-family: Calibri;">Colophon</span>
2808            </p>
2809
2810            <p class="Normal DocDefaults ">This document was written in Word 2007, using:</p>
2811
2812            <p class="ListParagraph Normal DocDefaults ">
2813                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>
2814                <span style="white-space:pre-wrap;">XML pretty printed using </span>
2815                <a class="notranslate" href="http://www.softlion.com/webTools/XmlPrettyPrint/default.aspx">
2816                    <span style="color: #0000FF;text-decoration: none;">http://www.softlion.com/webTools/XmlPrettyPrint/default.aspx</span>
2817                </a>
2818                <span style="white-space:pre-wrap;"> or Package Explorer</span>
2819            </p>
2820
2821            <p class="ListParagraph Normal DocDefaults ">
2822                <span style="position: relative; margin-left: 0.5in;font-family: Symbol;">* </span>
2823                <span style="white-space:pre-wrap;">Java source code formatted using </span>
2824                <a class="notranslate" href="http://www.java2html.de">
2825                    <span class="Hyperlink DefaultParagraphFont ">http://www.java2html.de</span>
2826                </a>
2827            </p>
2828
2829            <p class="Normal DocDefaults ">The PDF and HTML versions were generated using <span class="notranslate">docx4j</span> (PDF via XSL FO and FOP).</p>
2830
2831            <p class="Heading1 Normal DocDefaults ">
2832                <span style="font-family: Calibri;">Contacting Plutext</span>
2833            </p>
2834
2835            <p class="Normal DocDefaults ">
2836                <span style="white-space:pre-wrap;">Unless you have paid for support, general  How do I  type questions should be posted directly to the </span>
2837                <a class="notranslate" href="http://dev.plutext.org/forums/">
2838                    <span class="Hyperlink DefaultParagraphFont "><span class="notranslate">docx4j</span> forum</span>
2839                </a>.  Plutext may post to the forum any questions it receives by email which should have been directed to the forum.</p>
2840
2841            <p class="Normal DocDefaults ">
2842                <span style="white-space:pre-wrap;">Plutext can be contacted at either </span>
2843                <a class="notranslate" href="mailto:jason@plutext.org">
2844                    <span class="Hyperlink DefaultParagraphFont ">jason@plutext.org</span>
2845                </a>
2846                <span style="white-space:pre-wrap;">, or </span>
2847                <a class="notranslate" href="mailto:jharrop@plutext.com">
2848                    <span class="Hyperlink DefaultParagraphFont ">jharrop@plutext.com</span>
2849                </a>
2850            </p>
2851
2852            <p class="Normal DocDefaults "/>
2853
2854            <div class="footnotes">
2855
2856                <p class="Normal DocDefaults " style="space-after: 0in;line-height: 100%;"/>
2857
2858                <p class="FootnoteText Normal DocDefaults ">
2859                    <span class="FootnoteReference DefaultParagraphFont ">
2860                        <span style="vertical-align: top; font-size: xx-small">
2861                            <a name="fn1">
2862                                <a class="notranslate" href="#fs1">1</a>
2863                            </a>
2864                        </span>
2865                    </span>
2866                    <span style="white-space:pre-wrap;"></span>
2867                        <span class="Hyperlink DefaultParagraphFont notranslate">http://forums.java.net/jive/thread.jspa?threadID=411</span>
2868                </p>
2869
2870                <p class="FootnoteText Normal DocDefaults ">
2871                    <span class="FootnoteReference DefaultParagraphFont ">
2872                        <span style="vertical-align: top; font-size: xx-small">
2873                            <a  name="fn2">
2874                                <a href="#fs2">2</a>
2875                            </a>
2876                        </span>
2877                    </span>
2878                    <span style="white-space:pre-wrap;"> If you get the error 'Access restriction: The type</span>
2879                    <span class="apple-converted-space DefaultParagraphFont "> </span>
2880                    <span class="underline DefaultParagraphFont ">
2881                        <span style="white-space:pre-wrap;">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, **". </span>
2882                    </span>
2883                </p>
2884            </div>
2885        </body>
2886    </html>
Note: See TracBrowser for help on using the repository browser.