| 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"><systemPath>/usr/lib/jvm/java-6-sun/jre/lib/rt.jar</systemPath></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 > New "Project .." > SVN > 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 > 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 > Configure Build Path > Java Build Path > 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 > Maven 2 > 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;"><</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;">></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;"><</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;">></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;"><</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;">></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;"></</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;">></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;"></</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;">></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;"></</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;">></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;"><w:p></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;"> <w:r></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;"> <w:drawing></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;"><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;">></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;"><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;">></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;"><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;">></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;"> <a:graphic ></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;"><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;">></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;"> <pic:pic ></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;"> <pic:blipFill></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;"> <</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;">></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;"> <</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></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;"> <</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></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;"> <</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></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;"> <</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></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;"> <</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></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;"> <</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></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;"> <</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></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;"> <</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></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;"><w:p></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;"> <w:r></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;"> <w:pict></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;"><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;">></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;"><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;">></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;"> <v:formulas></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;"> <</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></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;"> <</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></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;"><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;">></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;"> <</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;">></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;"> <</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></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;"><</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></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;"> <</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></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;"> <</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></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;"><wp:inline> </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<String, String> 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;"><w:p></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;"> <w:r></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;"> <w:t></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;"><</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></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;"> <</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></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;"> <</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></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;"><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;">></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;"> <w:p></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;"> <w:r></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;"> <w:t></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;"><</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></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;"> <</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></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;"> <</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></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;"><</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;">></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;"><</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;">></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;"><</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;">></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;"></</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;">></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;"></</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;">></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;"></</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;">></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;"><T> 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;"><T> 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> |
|---|