docx4j प्रारंभ करना
इस दस्तावेज़ के नवीनतम संस्करण हमेशा में पाया जा सकता है docx4j svn in /docs (में Flat OPC XML Word 2007 के लिए प्रारूप, HTML , और PDF ).
इस दस्तावेज़ को अंग्रेज़ी से अनुवाद किया गया Google अनुवाद का उपयोग. यदि आप अनुवाद को बेहतर कर सकते, तो कृपया अपने उन्नत संस्करण में भेजने के लिए स्वतंत्र लग रहा है. सबसे हाल ही के लिए, हमेशा अंग्रेजी संस्करण को देखें.
क्या है docx4j?
docx4j एक docx "" पैकेज unzipping के लिए एक पुस्तकालय है, और WordprocessingML XML पार्सिंग में एक में स्मृति प्रतिनिधित्व बना Java . हाल के संस्करणों docx4j भी पावरपोइंट pptx फ़ाइलों का समर्थन है.
यह समान में माइक्रोसॉफ्ट के OpenXML SDK, जिसके लिए है अवधारणा है. NET.
docx4j खुला स्रोत है, अपाचे लाइसेंस (v2) के तहत उपलब्ध है. एक खुला स्रोत परियोजना के रूप में, योगदान का स्वागत कर रहे हैं. कृपया देखें docx4j मंच पर http://dev.plutext.org/forums/ जानकारी के लिए.
docx4j भारी निर्भर करता है पर JAXB, जावा के लिए बाध्य XML JCP मानक. आप सोच सकते हैं docx4j एक JAXB दूसरों के बीच के कार्यान्वयन (के रूप में):
* ओपन पैकेजिंग कन्वेंशनों
* ) WordprocessingML (DOCX, XML ओपन भाग
* Presentation ML (pptx) part of OpenXML
पुस्तकालय के लिए 100% निष्ठा के साथ यात्रा Docx फ़ाइलें दौर तैयार है, और 2007 के सभी WordML समर्थन करता है. नया Word 2010 सुविधाओं के लिए सहायता जल्द ही जोड़ा जाएगा.
docx4j परियोजना द्वारा प्रायोजित है Plutext (www.plutext.com ).
है docx4j तुम्हारे लिए?
docx4j docx (और दस्तावेजों pptx प्रस्तुतियों के प्रसंस्करण के लिए जावा में) है.
यह पुराने द्विपदीय फाइल (doc.) के लिए नहीं है. उन लोगों के लिए है अपाचे POI HWPF देखो. (वास्तव में, docx4j के मूल रूपांतरण के लिए HWPF का उपयोग करता है डॉक्टर. लिए. docx)
न ही इसे RTF फ़ाइलों के लिए है.
यदि आप. NET मंच पर docx दस्तावेजों प्रक्रिया चाहते हैं, आप माइक्रोसॉफ्ट के बजाय OpenXML SDK पर दिखना चाहिए.
एक वैकल्पिक करने के लिए docx4j अपाचे POI है. मैं विशेष रूप से सिफारिश करूँगा कि प्रसंस्करण Excel दस्तावेज़ों के लिए. यह भी Word दस्तावेज़ों प्रक्रिया किया जा सकता है, और यह (XmlBeans का उपयोग करता है) के बाद से यह नहीं JAXB एक बेहतर विकल्प हो सकता है अगर आप XmlBeans उपयोग करना चाहते हो सकता है.
चीजों की तरह आप के साथ क्या कर सकते हैं docx4j?
* docx (फाइलसिस्टम से मौजूदा खोलो, SMB / CIFS, WebDAV का उपयोग कर VFS)
* नया docx
* प्रोग्रामैटिक पाठ्यक्रम docx दस्तावेज़ (हेरफेर)
* Template substitution; CustomXML binding
* आयात एक डॉक्टर बाइनरी (HWPF का उपयोग करता है अपाचे POI)
* निर्माण / pkg 2007 उपभोग वर्ड xmlPackage है () प्रारूप
* सहेजें docx ज़िपित आईई (के रूप में फाइल सिस्टम एक docx), JCR करने के लिए या (unzipped)
* आम फिल्टर लागू सहित रूपांतरण,
* PDF या निर्यात के रूप में HTML
* Diff नियंत्रण सामग्री / दस्तावेजों की तुलना, या अनुच्छेदों sdt ()
* फ़ॉन्ट प्रतिस्थापन समर्थन (फ़ॉन्ट, और दस्तावेज़ उपयोग में एम्बेडेड फ़ॉन्ट के किसी भी)
परियोजनाओं का उपयोग docx4j
Docx4all घुमाओ आधारित शब्द संसाधक है.
Word 2007 के लिए Plutext सहयोग का उपयोग करता है docx4j सर्वर पर, टुकड़ा छोटे टुकड़े जो स्वतंत्र रूप versioned जा सकता है में Word दस्तावेज़ों के लिए.
कृपया संपर्क Plutext अगर आप अपनी परियोजना करना चाहेंगे यहाँ सूचीबद्ध होने के लिए.
Word दस्तावेज़ों का समर्थन करता है क्या?
docx4j पढ़ने / docx द्वारा या Word 2007, या जो पहले के संस्करणों संगतता पैक स्थापित किया है के लिए बनाए गए दस्तावेज़ों लिख सकते हैं.
प्रासंगिक के कुछ हिस्सों docx4j हैं ECMA स्कीमा से उत्पन्न.
यह नहीं पढ़ सकते हैं / Word 2003 XML दस्तावेज़ में लिखें. उन लोगों के साथ मुख्य समस्या यह है कि XML namespace अलग है.
docx4j Word 2010 docx फ़ाइलों का समर्थन करेंगे.
का उपयोग करते हुए docx4j binaries
आप नवीनतम संस्करण डाउनलोड कर सकते हैं docx4j से http://dev.plutext.org/docx4j/
सामान्य में, हम सुझाव है कि आप नवीनतम औपचारिक रिहाई के बाद से एक वर्तमान में रात के निर्माण, विकास के खिलाफ अक्सर कई महीनों किया जा सकता है पुराना है.
सहायक जार tar.gz. संस्करण, प्रासंगिक subdirectory में या में पाया जा सकता है.
का उपयोग करते हुए docx4j के माध्यम से Maven
Maven POM पर पाया जा सकता http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/m2/org/docx4j/docx4j
JDK संस्करण
आप का उपयोग करने की आवश्यकता है Java 1.5+.
इस JAXB की वजह से है 1 . यदि आप 1.4 का उपयोग करना चाहिए, retrotranslator कर सकते हैं बनाने के लिए कथित तौर पर यह काम करते हैं.
Jaxb के बारे में एक शब्द
docx4j का उपयोग करता है JAXB मार्शल और एक WordprocessingML दस्तावेज़ में मुख्य भागों मुख्य दस्तावेज़ के भाग, भाग शैलियों सहित, unmarshall, विषय हिस्सा है, और गुणों के भागों.
JAXB सूर्य की जावा में 6 वितरण शामिल है, लेकिन 1.5 नहीं है. तो अगर आप JDK 1.5 का उपयोग कर रहे हैं, आप अपने वर्ग के रास्ते पर JAXB 2.1.x की आवश्यकता होगी.
के टुकड़े docx4j, जैसे org.docx4j.wml और org.docx4j.dml गया है JAXB XJC का उपयोग जनित. हम विशेष रूप से wml.xsd स्कीमा परिवर्तन, ताकि कुंजी उत्पन्न वर्गों थोड़ा और अधिक अनुकूल मानव (CT_ और ST_ के साथ क्या करना शुरू नहीं सभी आईई) हैं.
Log4j
docx4j प्रवेश के लिए log4j उपयोग करता है. प्रवेश को सक्षम करने के लिए, आप अपने रास्ते पर एक वर्ग या log4.properties log4j.xml की जरूरत है. उदाहरण के लिए देखें http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/src/main/resources/log4j.xml
Javadoc
ऑनलाइन ब्राउज़िंग या डाउनलोड के लिए Javadoc, डायरेक्टरी में पाया जा सकता है http://dev.plutext.org/docx4j/
docx4j स्रोत कोड
वर्तमान स्रोत कोड की एक प्रतिलिपि प्राप्त करने के लिए:
svn co http://dev.plutext.org/svn/docx4j/trunk/docx4j docx4j
वैकल्पिक रूप से, आप इसे ऑनलाइन, पर ब्राउज़ कर सकते हैं:
http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/
निर्माण docx4j स्रोत से
कमांड लाइन - त्वरित निर्देश
"त्वरित" है कि प्रदान की है, आप maven और चींटी स्थापित किया है. ध्यान दें कि हम केवल निर्भरता हड़पने के लिए वास्तविक निर्माण करते हैं, न maven का उपयोग करें.
एक निर्देशिका बनाने के लिए बुलाया कार्यस्थान, और इसे में सीडी.
svn co http://dev.plutext.org/svn/docx4j/trunk/docx4j docx4j
खुला pom.xml, जो पढ़ता लाइन मिल
<systemPath>/usr/lib/jvm/java-6-sun/jre/lib/rt.jar</systemPath>
और यह आपके सिस्टम सूट करने के लिए संपादित करें.
mvn install
ant dist
कि चींटी आदेश docx4j.jar बनाने और इसे जगह होगी और जिले dir में सभी इसकी निर्भरता.
ग्रहण
आवश्यक शर्तें
* ग्रहण स्थापित
* जैसे स्थापित एक ग्रहण प्लगइन समाप्ति http://subclipse.tigris.org/update_1.2.x
* स्थापित करें Maven and the Eclipse plugin
और, जैसा कि ऊपर चर्चा:
* जावा 1.5 या 6
* : JAXB दोनों JAXB 6 कार्यान्वयन जावा में शामिल है, और 2.x संदर्भ कार्यान्वयन. (यह या तो क्रम में समर्थन की कीमत है)
अनुदेश
* File > New "Project .." > SVN > Checkout Projects from SVN
* स्थान एक नया रिपोजिटरी, यूआरएल है http://dev.plutext.org/svn/docx4j
* क्लिक करें फ़ोल्डर "trunk", और चुनें docx4j; अगला पर क्लिक करें
* आप चाहते हैं एक परियोजना के रूप में बाहर की जाँच करें यह परियोजना विज़ार्ड का उपयोग करने के लिए कॉन्फ़िगर नई
* तो फिर परियोजना का चयन जावा> जावा, अगला क्लिक करें
* उदाहरण चुनें एक परियोजना के लिए (नाम ',' docx4j) तब अगला क्लिक करें
* क्लिक करें (समाप्त हम कदम को परिभाषित करेंगे बाद में एक जावा में निर्माण सेटिंग्स)
अन्य संवाद बक्से के एक जोड़े के बाद, आप अपने कार्यक्षेत्र में नई परियोजना होना चाहिए.
अब, हम जरूरत करने के लिए कॉन्फ़िगर वर्ग पथ ग्रहण आदि के भीतर इतनी है कि यह निर्माण कर सकते हैं.
* टैब बनाएँ पथ स्रोत बनाएँ> कॉन्फ़िगर पथ> पथ> जावा बनाएँ
* src पर क्लिक करें, तो बटन दबाएँ दूर
* तो फिर क्लिक करें "" जोड़ने और फ़ोल्डर जावा / src के माध्यम से नेविगेट करने के लिए मुख्य / जावा और टिकटिक '
* तो फिर जोड़ src/svg, src/diffx and src/pptx4j/java भी
Maven बिट:
* देखना सुनिश्चित करें - आप Maven है और उसके ऊपर प्लगइन स्थापित आवश्यक शर्तें.
* भागो mvn में स्थापित docx4j आप एक कमांड से प्रांप्ट (सिर्फ मामले में)
* परियोजना पर क्लिक करें ठीक> Maven> 2 सक्षम
परियोजना ग्रहण करना चाहिए त्रुटियों के बिना में काम कर रहे हो अब2 .
docx एक मौजूदा दस्तावेज़ खोलें
org.docx4j.openpackaging.packages. WordprocessingMLPackage एक docx दस्तावेज़ प्रतिनिधित्व करता है.
एक दस्तावेज़ को लोड, तुम सब करना है:
WordprocessingMLPackage wordMLPackage =
WordprocessingMLPackage.load(new java.io.File(inputfilepath));
फ़ाइलें कि विधि भी सपाट OPC XML लोड कर सकते हैं.
तब आप मुख्य दस्तावेज़ (भाग document.xml / शब्द मिल) कर सकते हैं:
MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
उसके बाद, आप अपनी सामग्री में हेरफेर कर सकते हैं.
WordML अवधारणाओं
इस परे ज्यादा कुछ भी करते हैं, आप को बुनियादी WordML अवधारणाओं को समझने की आवश्यकता है.
Microsoft ओपन पैकेजिंग कल्पना के अनुसार, प्रत्येक docx दस्तावेज़ को भाग फ़ाइलों का एक नंबर से बना है, ऊपर ज़िपित. एक भाग आमतौर पर XML, लेकिन एक छवि के भाग नहीं हो सकता है (उदाहरण के लिए,) नहीं है.
परिचय करने के लिए WordML एक दस्तावेज़ इस गुंजाइश की है परे. तुम 1 में एक बहुत पठनीय परिचय प्राप्त कर सकते हैंसेंट संस्करण भाग 3 (प्रथम) में http://www.ecma-international.org/publications/standards/Ecma-376.htm या http://www.ecma-international.org/news/TC45_current_work/TC45_available_docs.htm (एक बेहतर कड़ी है, क्योंकि इसके ज़िपित नहीं है).
: Jaxb marshalling और unmarshalling
docx4j हिस्सा होती है हर एक वर्ग का प्रतिनिधित्व. उदाहरण के लिए, वहाँ एक है MainDocumentPart वर्ग. XML भागों से इनहेरीट JaxbXmlPart , जो कहा जाता है जिसमें एक सदस्य jaxbElement. जब आप चाहते हैं किसी भाग की सामग्री के साथ काम करने के लिए, आप jaxbElement अपने काम के साथ.
जब आप किसी docx दस्तावेज़ को खोलने का उपयोग करते हुए docx4j, docx4j स्वतः unmarshals (पेड़ प्रकार जावा वस्तु सामग्री के प्रत्येक XML हिस्सा करने के लिए एक जोरदार jaxbElement).
इसी प्रकार, यदि / जब तुम बताओ docx4j एक docx के रूप में इन वस्तुओं जावा बचाने के लिए, docx4j स्वतः मार्शलों jaxbElement प्रत्येक भाग में.
कभी कभी तुम मार्शल या unmarshal बातें करने के लिए अपने आप चाहते हैं जाएगा. वर्ग org.docx4j.jaxb.Context सभी में इस्तेमाल को परिभाषित करता है JAXBContexts docx4j:
Jc |
org.docx4j.wml
|
jcThemePart |
org.docx4j.dml |
jcDocPropsCore |
org.docx4j.docProps.core org.docx4j.docProps.core.dc.elements org.docx4j.docProps.core.dc.terms |
jcDocPropsCustom |
org.docx4j.docProps.custom |
jcDocPropsExtended |
org.docx4j.docProps.extended |
jcXmlPackage |
org.docx4j.xmlPackage |
jcRelationships |
org.docx4j.relationships |
jcCustomXmlProperties |
org.docx4j.customXmlProperties |
jcContentTypes |
org.docx4j.openpackaging.contenttype |
jcPML |
org.docx4j.pml
|
स्थापत्य
docx4j 3 परतों में है:
1.
org.docx4j.openpackaging
OpenPackaging स्तरीय कन्वेंशनों पैकेजिंग संभालती चीजों को खोलें: में एक docx unzipping
WordprocessingMLPackage
और से भाग इनहेरीट वस्तुओं का एक सेट; अनुमति भागों नष्ट जोड़ा / के लिए हो सकता है, docx बचत
इस परत मूल OpenXML4J पर आधारित है (जो भी अपाचे POI द्वारा प्रयोग किया जाता है).
आम तौर पर कर रहे हैं भागों subclasses
org.docx4j.openpackaging.parts.JaxbXmlPart
भागों का एक पेड़ में व्यवस्थित होते हैं. अगर एक हिस्सा सन्तान है, यह एक होगा
org.docx4j.openpackaging.parts.relationships.RelationshipsPart
जो उन भागों वंशज को पहचानती है. नमूने (PartsList अगला अनुभाग देखें) आप को दर्शाता है यह कैसे काम करता है.
एक JaxbXmlPart एक सामग्री का पेड़ है:
public Object getJaxbElement() {
return jaxbElement;
}
public void setJaxbElement(Object jaxbElement) {
this.jaxbElement = jaxbElement;
}
2.
jaxb
सामग्री पेड़
मॉडल तीन स्तरों में से एक है दूसरे स्तर.
,, टिप्पणी footers अधिकांश भागों (सहित / MainDocumentPart, शैली, हेडर
endnotes
फ़ुटनोट्स /) का उपयोग करें
org.docx4j.wml
(WordprocessingML);
WML
संदर्भ
org.docx4j.dml
(DrawingML) के रूप में आवश्यक है.
ये कक्षाएं Open XML स्कीमा से उत्पन्न थे
3.
org.docx4j.model
यह पैकेज कम दो परतों अतिरिक्त कार्यक्षमता प्रदान करने के लिए पर बनाता है, और आगे जा रही उत्तरोत्तर विकसित किया है.
नमूने
पैकेज org.docx4j.samples के उदाहरण हैं कि कैसे काम करने के साथ docx4j. ये शामिल हैं:
मूल बातें
* CreateWordprocessingMLDocument
* DisplayMainDocumentPartXml
* OpenAndSaveRoundTripTest
* OpenMainDocumentAndTraverse
उत्पादन में परिवर्तन /
* CreateHtml
* CreatePdf
* ExportInPackageFormat
* ImportFromPackageFormat
* AddImage
* ConvertEmbeddedImageToLinked
भाग हैंडलिंग
* CopyPart
* ImportForeignPart
* PartsList
* StripParts
विविध
* CompareDocuments
* CreateDocxWithCustomXml
* CustomXmlBinding
* DocProps
* Filter
* HyperlinkTest
* NumberingRestart
* UnmarshallFromTemplate
यदि आप स्रोत कोड को स्थापित, आप इस पैकेज पहले से ही होगा.
अगर आप, आप इसे ऑनलाइन, पर नहीं किया ब्राउज़ कर सकते हैं
http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/src/main/java/org/docx4j/samples
वहाँ भी विभिन्न नमूना दस्तावेजों निर्देशिका में / नमूना-डॉक्स, इन कर रहे हैं बाहर की जाँच करके आसानी से सबसे तक पहुँचा docx4j svn.
हिस्सों की सूची
एक बेहतर समझ प्राप्त करने के लिए कैसे docx4j काम करता है और एक docx दस्तावेज़ की संरचना तुम चला सकते हैं PartsList ) Pptx नमूना पर एक docx (या एक. यदि आप करते हैं, यह पैकेज है कि प्रयोग किया जाता में भागों की पदानुक्रम सूची जाएगा. यह जो बता देगा वर्ग है, हिस्सा इस्तेमाल किया प्रत्येक प्रतिनिधित्व करने के लिए आप और JaxbXmlPart कहाँ है कि एक हिस्सा है, यह भी बता देंगे क्या तुम क्लास jaxbElement है.
उदाहरण के लिए:
Part /_rels/.rels [org.docx4j.openpackaging.parts.relationships.RelationshipsPart]
containing JaxbElement:org.docx4j.relationships.Relationships
Part /docProps/app.xml [org.docx4j.openpackaging.parts.DocPropsExtendedPart]
containing JaxbElement:org.docx4j.docProps.extended.Properties
Part /docProps/core.xml [org.docx4j.openpackaging.parts.DocPropsCorePart]
containing JaxbElement:org.docx4j.docProps.core.CoreProperties
Part
/word/document.xml
[org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart]
containing JaxbElement:org.docx4j.wml.Document
Part /word/settings.xml [
org.docx4j.openpackaging.parts.WordprocessingML
.DocumentSettingsPart]
containing JaxbElement:org.docx4j.wml.CTSettings
Part /word/styles.xml [
org.docx4j.openpackaging.parts.WordprocessingML
.StyleDefinitionsPart]
containing JaxbElement:org.docx4j.wml.Styles
Part /word/media/image1.jpeg [ org.docx4j.openpackaging.parts.WordprocessingML .ImageJpegPart]
एक docx Traversing
OpenMainDocumentAndTraverse.java तुम नमूने निर्देशिका में एक शो करने के लिए docx के JAXB प्रतिनिधित्व पार कैसे.
एक JAXB के बारे में कष्टप्रद बात है, कि एक वस्तु का कहना है एक तालिका के रूप में प्रतिनिधित्व किया जा सकता है org.docx4j.wml.Tbl (जैसा कि आप उम्मीद करेंगे). या यह एक में लिपटे हो सकता है javax.xml.bind.JAXBElementहै, जो मामले में असली मेज पाने के लिए आपको ऐसा कुछ करना है:
if ( ((JAXBElement)o).getDeclaredType().getName().equals( "org.docx4j.wml.Tbl" ) )
org.docx4j.wml.Tbl TBL = () org.docx4j.wml.Tbl ((JAXBElement) ओ) getValue. ();
एक नए docx बनाना
एक नए docx बनाने के लिए:
/ / पैकेज बनाएँ
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
/ / इसे सहेजें
wordMLPackage.save(new java.io.File("helloworld.docx") );
बस.
createPackage() एक सुविधा की विधि है, जो करता है:
/ / पैकेज बनाएँ
WordprocessingMLPackage wordMLPackage = new WordprocessingMLPackage();
/ / बनाना मुख्य दस्तावेज़ (भाग / शब्द document.xml)
MainDocumentPart wordDocumentPart = new MainDocumentPart();
/ / मुख्य दस्तावेज़ बनाएँ हिस्सा सामग्री
ObjectFactory factory = Context.getWmlObjectFactory();
org.docx4j.wml.Body body = factory .createBody();
org.docx4j.wml.Document wmlDocumentEl = factory .createDocument();
wmlDocumentEl.setBody(body);
/ / भाग में सामग्री डालो
wordDocumentPart.setJaxbElement(wmlDocumentEl);
/ / पैकेज के लिए मुख्य दस्तावेज़ के भाग के रिश्तों में जोड़ें
/ / (इसे बनाने यदि आवश्यक)
wmlPack.addTargetPart(wordDocumentPart);
पाठ का अनुच्छेद जोड़ना
MainDocumentPart एक विधि शामिल है:
public org.docx4j.wml.P addStyledParagraphOfText(String styleId, String text)
आपको लगता है कि विधि का उपयोग करने के लिए एक निर्दिष्ट शैली का उपयोग पैरा जोड़ सकते हैं.
XML हम जैसे कुछ हो जाएगा बनाने के लिए देख रहे हैं:
<
w:p
xmlns:w
="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
>
<
w:r
>
<
w:t
>
Hello world
</
w:t
>
</
w:r
>
</
w:p
>
addStyledParagraphOfText रास्ता बनाता वस्तु संरचना JAXB, और दस्तावेज़ जोड़ता है इसे करने के लिए.
ObjectFactory factory = Context.getWmlObjectFactory();
/ / बनाएँ अनुच्छेद
org.docx4j.wml.P para = factory.createP();
/ / पाठ तत्व बनाएँ
org.docx4j.wml.Text t = factory.createText();
t.setValue(simpleText);
/ / चलाने बनाएँ
org.docx4j.wml.R run = factory.createR();
run.getRunContent().add(t);
para.getParagraphContent().add(run);
/ / अब हमारे शरीर के लिए दस्तावेज़ अनुच्छेद जोड़ें
Body body = this.jaxbElement.getBody();
Body.getEGBlockLevelElts().add(para)
वैकल्पिक रूप से, आप XML marshalling द्वारा अनुच्छेद बना सकते हैं:
/ / स्ट्रिंग मान लिया जाये कि xml ऊपर XML शामिल
org.docx4j.wml.P para = XmlUtils.unmarshalString(xml);
इस काम के लिए, आप यह सुनिश्चित करना कि सभी namespaces ठीक स्ट्रिंग में घोषित कर रहे हैं की जरूरत है.
एक भाग को जोड़ने
क्या होगा अगर तुम एक नई शैली भाग जोड़ना चाहता था? यहाँ है कैसे:
/ / कोई शैलियों हिस्सा
StyleDefinitionsPart stylesPart = new StyleDefinitionsPart();
/ / यह डिफ़ॉल्ट शैलियों के साथ आबाद
stylesPart.unmarshalDefaultStyles();
/ मुख्य दस्तावेज़ के भाग के लिए शैलियों का हिस्सा संबंधों जोड़ें /
wordDocumentPart.addTargetPart(stylesPart);
आप एक ही दृष्टिकोण लेने के लिए किसी शीर्ष लेख या पाद लेख जोड़ना चाहते हैं.
जब आप एक हिस्सा इस तरह से जोड़ने के लिए, यह स्वतः ही स्रोत हिस्सा रिश्तों को भाग गयी है.
आम तौर पर, आप भी (भाग उसके रिश्ते आईडी का उपयोग करने के मुख्य दस्तावेज़ पार्ट के लिए एक संदर्भ) जोड़ने की आवश्यकता होगी. इस चित्र को हेडर, footers और लागू होता है. टिप्पणियाँ (, फ़ुटनोट्स और endnotes में है कि क्या आप मुख्य दस्तावेज़ के भाग को जोड़ने के लिए एक अलग सा, कर रहे हैं व्यक्तिगत / फ़ुटनोट्स / endnotes टिप्पणी करने के लिए संदर्भ हैं.)
करने के लिए docx (एक्स) HTML
docx4j XSLT XHTML का उपयोग करता है के लिए एक docx परिणत करने के लिए:
AbstractHtmlExporter exporter = new HtmlExporterNG2();
/ / 2 * नोट * वहाँ
/ / इस मामले में, एक निर्गम धारा में StreamResult लिखने के लिए ()
OutputStream os = new java.io.FileOutputStream(inputfilepath + ".html" );
javax.xml.transform.stream.StreamResult result
=
new
javax.xml.transform.stream.StreamResult(os);
exporter.html(wordMLPackage, result,
inputfilepath + "_files" );
आप उत्पन्न HTML मिल जाएगा साफ है.
docx4j जावा XSLT विस्तार कार्यों का उपयोग करता है भारी उठाया करते हैं, तो XSLT ही सरल रखा है.
पीडीएफ को docx
docx4j XSL के लिए उत्पादन है, जो में होना करने के लिए एक पीडीएफ बनाने के लिए इस्तेमाल हो सकते हैं.
वर्तमान में, अपाचे बांका में एकीकृत है docx4j पीडीएफ बनाने के लिए. (जल्द ही, हम चीजें बदल जाएगा ताकि docx4j के लिए उत्पन्न करता है, अपने लेबल के लिए पसंदीदा द्वारा उपयोग के लिए, चाहे वह बांका, या XEP जैसे एक वाणिज्यिक उपकरण है).
एक पीडीएफ बनाने के लिए:
/ / फ़ॉन्ट्स माइक्रोसॉफ्ट विंडोज पर सर्वोत्तम मानचित्रण पहचान
wordMLPackage.setFontMapper( new IdentityPlusMapper());
/ / सेट अप कनवर्टर
org.docx4j.convert.out.pdf.PdfConversion c
=
new
org.docx4j.convert.out.pdf.viaXSLFO.Conversion(wordMLPackage);
/ / उत्पादन में स्ट्रीम करने के लिए लिखें
OutputStream os = new java.io.FileOutputStream(inputfilepath + ".pdf" );
c.output(os);
छवि हैंडलिंग
जब आप Word 2007 में एक दस्तावेज के लिए एक छवि को जोड़ने के लिए, यह आम तौर पर एक नया हिस्सा के रूप में जोड़ा जाता है (आप परिणामी docx में एक हिस्सा मिलेगा यानी, 64 प्रारूप के आधार में छवि युक्त).
जब आप दस्तावेज़ को खोलने में docx4j, docx4j will create an image part representing it.
यह भी संभव है करने के लिए एक लिंक छवि बनाएँ. इस मामले में, छवि docx पैकेज में एम्बेड नहीं है, बल्कि है, उसके बाहरी स्थान पर referenced.
docx4jएस ' BinaryPartAbstractImage वर्ग तरीकों होता है और आपको दोनों एम्बेडेड और छवियों को उचित संबंधों के साथ (लिंक) बनाने के लिए अनुमति देते हैं.
/ **
* प्रदान की बाइट सरणी से एक छवि हिस्सा बनाएँ, यह करने के लिए देते
* मुख्य दस्तावेज़ हिस्सा है, और इसे वापस .* /
public static BinaryPartAbstractImage createImagePart(WordprocessingMLPackage wordMLPackage,
byte [] bytes)
/ **
* प्रदान की बाइट सरणी से एक छवि हिस्सा बनाएँ, यह स्रोत हिस्सा करने के लिए संलग्न
* (मुख्य दस्तावेज़ के भाग के उदाहरण के लिए, किसी शीर्ष लेख हिस्सा आदि), और इसे वापस .* /
public static BinaryPartAbstractImage createImagePart(WordprocessingMLPackage wordMLPackage,
Part sourcePart, byte [] bytes)
/ **
* एक लिंक छवि हिस्सा बनाएँ, और यह निर्दिष्ट भाग के एक स्रोत के रूप में rel संलग्न
(* भाग जैसे किसी शीर्ष लेख) * /
public static
BinaryPartAbstractImage createLinkedImagePart(
WordprocessingMLPackage wordMLPackage, Part sourcePart, String fileurl)
एक छवि के लिए दस्तावेज़ में प्रदर्शित करने के लिए, वहाँ भी करने के लिए मुख्य दस्तावेज़ के भाग में उचित XML की जरूरत है. इस XML 2 मूल रूप ले सकते हैं:
* Word 2007 ड्राइंग w: फार्म
<w:p>
<w:r>
<w:drawing>
<wp:inline distT ="0" distB ="0" distL ="0" distR ="0" >
<wp:extent cx ="3238500" cy ="2362200" / >
<wp:effectExtent l ="19050" t ="0" r ="0" b ="0" / >
:
<a:graphic >
<a:graphicData .. >
<pic:pic >
:
<pic:blipFill>
< a:blip r:embed ="rId5" / >
:
< / pic:blipFill>
:
< / pic:pic>
< / a:graphicData>
< / a:graphic>
< / wp:inline>
< / w:drawing>
< / w:r>
< / w:p>
* Word 2003 VML आधारित : डब्ल्यू PICT फार्म
<w:p>
<w:r>
<w:pict>
<v:shapetype id ="_x0000_t75" coordsize ="21600,21600" .. >
<v:stroke joinstyle ="miter" / >
<v:formulas>
:
< / v:formulas>
:
< / v:shapetype>
<v:shape .. style ="width:428.25pt;height:321pt" >
< v:imagedata r:id ="rId4" o:title ="" / >
< / v:shape>
< / w:pict>
< / w:r>
< / w:p>
docx4j 2007 सकते हैं बनाने Word आरेखण w: WP: इनलाइन आप के लिए फार्म:
/ **
* Create a <wp:inline> element suitable for this image,
* जो या जोड़ा जा सकता है w में एम्बेडेड: पी / w / r: w ड्राइंग.
* If the image is wider than the page, it will be scaled
स्वतः *. अन्य हस्ताक्षर के लिए देखें Javadoc.
* @ परम उदाहरण पाठ, के लिए कोई filenameHint मूल फ़ाइल नाम
* परम @ ALT पाठ की तरह है altText HTML
* परम @ id1 एक दस्तावेज़ में आईडी अद्वितीय
* परम @ id2 अन्य दस्तावेज़ में आईडी अद्वितीय
* @ परम लिंक अगर यह सच है होना करने के लिए एम्बेडेड लिंक नहीं * /
public Inline createImageInline(String filenameHint, String altText,
int id1, int id2, boolean link)
जो आप कर सकते हैं जोड़ने के लिए तो w: r / w: ड्राइंग.
अंत में, के साथ docx4j, तो आप (जैसे पीडीएफ) वर्ड, द्वारा PNG, जो एक समर्थित प्रारूप है असमर्थित स्वरूप से छवियों को बदल सकते हैं. इस के लिए, docx4j का उपयोग करता है ImageMagick. तो अगर आप चाहते हैं तो इस सुविधा का उपयोग करने के, आप की जरूरत है स्थापित करने के लिए ImageMagick. docx4j ImageMagick का उपयोग invokes:
Process p = Runtime.getRuntime().exec(
"imconvert -density "
+ density +
" -units PixelsPerInch - png:-"
);
नाम नोट imconvert , जो प्रयोग किया जाता है ताकि हम exec पथ करने के लिए पूरा करने के लिए आपूर्ति के एक नहीं है. आपको लगता है कि समायोजित करने की आवश्यकता होगी.
पाठ निष्कर्षण
एक त्वरित तरीका एक docx पाठ से निकालने के लिए, का उपयोग करने के TextUtils
public static void extractText(Object o, Writer w)
जो वस्तु यह एक sax ContentHandler के माध्यम से पारित हो जाता है, मार्शलों क्रम में लेखक को पाठ उत्पादन के लिए.
पाठ प्रतिस्थापन
पाठ प्रतिस्थापन के लिए पर्याप्त है आसान एक में प्रदान प्रतिनिधित्व किया है के लिए स्ट्रिंग के खोज कर रहे हैं आप org.docx4j.wml.Text फार्म वस्तु में आप उम्मीद करते हैं.
हालांकि, यह जरूरी है कि मामला नहीं किया जाएगा. पाठ स्ट्रिंग में तोड़ा जा सकता निम्नलिखित कारणों से किसी के लिए दौड़ता है:
* शब्द भाग के अलग स्वरूपित है (बोल्ड में) उदा
* वर्तनी व्याकरण /
* संपादन आदेश (rsid)
docx4j अंततः इन मामलों को समायोजित करेगा, लेकिन अभी नहीं करता है.
जो विषय है, तो आप तरीकों की एक किस्म में पाठ प्रतिस्थापन कर सकते हैं, उदाहरण के लिए:
* भाग traversing मुख्य दस्तावेज़, और देख org.docx4j.wml.Text वस्तुओं
* फिर unmarshall मार्शल के लिए एक स्ट्रिंग है, तो / खोज की जगह में है कि,
docx4j s XmlUtils भी शामिल है:
/ **
* WML $ (key1 युक्त) के एक स्ट्रिंग दो, $ (key2), वापसी एक उपयुक्त
* वस्तु .* /
public static Object unmarshallFromTemplate(String wmlTemplateString,
java.util.HashMap String> mappings <String,)
UnmarshallFromTemplate उदाहरण देखें, जो कि एक युक्त स्ट्रिंग पर संचालित:
<w:p>
<w:r>
<w:t> My favourite colour is ${colour} . < / w:t>
< / w:r>
< / w:p>
<w:p / >
<w:p>
<w:r>
<w:t> My favourite ice cream is ${icecream} . < / w:t>
< / w:r>
< / w:p>
युक्तियाँ और चालें
Flat OPC XML स्वरूप के साथ कार्य करें
जब आप एक docx दस्तावेज़ के अंदर देखना चाहता हूँ, यह एक दर्द का एक बिट करने के लिए इसे खोल देना प्रासंगिक हिस्से को देखने के लिए है.
वहाँ आसपास इस 2 तरीके हैं.
एक है http://www.codeplex.com/PackageExplorer है, जो docx खोलना कर सकते हैं, और सुंदर एक भाग मुद्रित करें.
दूसरे करने के लिए Word XML (*. xml दस्तावेज़ के रूप में बचाने के लिए docx) है. यह एक XML फ़ाइल है, जो आप XPontus जैसे किसी XML संपादक में खोल सकते हैं पैदा करता है.
docx4j फ्लैट OPC XML फ़ाइलें खोलते हैं, कर सकते हैं और उन्हें बचाने के लिए.
एक सपाट OPC XML फ़ाइल खोलने के लिए:
WordprocessingMLPackage wordMLPackage =
WordprocessingMLPackage.load(new java.io.File(inputfilepath));
फ्लैट OPC XML के रूप में सहेजने के लिए:
wordMLPackage.save(new java.io.File(outputfilepath));
दोनों मामलों में, Flat OPC कोड और अगर सिर्फ अगर फाइल एक्सटेंशन है. इस्तेमाल किया जाएगा. xml
UnmarshalFromString याद रखें
जब आप docx दस्तावेजों से छेड़छाड़ कर रहे हैं, यह अक्सर XML के unmarshal स्निपेट्स (एक स्ट्रिंग एक पैराग्राफ का प्रतिनिधित्व करने के लिए उपयोगी जैसे दस्तावेज़ में सम्मिलित करने के लिए).
उदाहरण के लिए, दिया जाता है:
<
w:p
xmlns:w
="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
>
<
w:r
>
<
w:t
>
Hello world
</
w:t
>
</
w:r
>
</
w:p
>
आप बस सकते हैं:
/ / स्ट्रिंग मान लिया जाये कि xml ऊपर XML शामिल
org.docx4j.wml.P para = XmlUtils.unmarshalString(xml);
क्लोनिंग
एक JAXB वस्तु क्लोन XmlUtils में निम्न विधि का प्रयोग करें करने के लिए:
क्लोन ** इस JAXB वस्तु, डिफ़ॉल्ट JAXBContext का उपयोग /. * /
public static <T> T deepCopy(T value)
क्लोन ** इस JAXB वस्तु * / /
public static <T> T deepCopy(T value, JAXBContext jc)
@XmlRootElement
सबसे अधिक इस्तेमाल किया वस्तुओं एक है @ XmlRootElement एनोटेशन, तो वे और marshalled unmarshalled किया जा सकता है.
कुछ मामलों में, आपको याद आ रही है इस एनोटेशन मिल सकता है.
यदि आप वैकल्पिक, एक स्रोत कोड jaxb नहीं कर सकता एनोटेशन को जोड़ने के लिए है मार्शल यह QName प्रयोग कोड उत्पन्न के बारे में है जो स्पष्ट. उदाहरण के लिए, XmlUtils शामिल हैं:
/ ** उद्देश्य के लिए एक W3C दस्तावेज़ करने के लिए, मार्शल
* एक @ XmlRootElement एनोटेशन गायब है. * /
public static
org.w3c.dom.Document marshaltoW3CDomDocument(Object o, JAXBContext jc,
String uri, String local, Class declaredType)
आप इस तरह तो इस्तेमाल कर सकते हैं:
CTFootnotes footnotes =
wmlPackage.getMainDocumentPart().getFootnotesPart().getJaxbElement().getValue();
CTFtnEdn ftn = footnotes.getFootnote().get(1);
/ / CTFtnEdn पर कोई @ XmlRootElement, तो ..
Document d = XmlUtils.marshaltoW3CDomDocument( ftn,
Context.jc, Namespaces.NS_WORD12, "footnote" , CTFtnEdn. class );
यदि आप unmarshal की जरूरत है, आप का उपयोग कर सकते हैं:
public static Object unmarshalString(String str, JAXBContext jc, Class declaredType)
docx4j मंच
स्वतंत्र समुदाय समर्थन में उपलब्ध है docx4j मंच पर http://dev.plutext.org/forums/
इस चर्चा आम तौर पर अंग्रेजी में है. यदि आप अपनी भाषा में एक मंच उदार स्वयंसेवक, कृपया हमें बताएँ कर सकते हैं.
दूसरे समर्थन विकल्प
स्वतंत्र समुदाय का समर्थन करने में उपलब्ध है यदि docx4j मंच तुम्हारी जरूरत है, को पूरा नहीं करता है या आप बस आउटसोर्स कुछ कोडन, तो आप खरीद करने के लिए प्रोग्रामिंग, परामर्श और प्राथमिकता के समर्थन से स्वागत कर रहे हैं करना चाहते हैं http://www.plutext.com/m/index.php/docx4j-support.html
Plutext से सेवाओं क्रय करके, आप की निरंतर विकास का समर्थन docx4j.
रोडमैप
Word 2010 का समर्थन है. तंत्र संगतता समर्थन के लिए नए शुरू schemas / तत्वों को XML के साथ Word के लिए 2010, और. इस लेबल के लिए 3.0 औचित्य है मुख्य.
HTML: निर्यातकों पुराने लोगों से छुटकारा पाने के, पर मानकीकृत NG2. विचार के लिए किसी भी प्रयास है दूर 'जो उपयोग करना चाहिए मैं भ्रम, ध्यान और / पता है कि कैसे.
पीडीएफ निर्यातकों: viaXSLFO पर प्रमाण के अनुसार, और मिल viaHTML और छुटकारा viaIText. HTML के साथ के रूप में, विचार प्रयास है किसी को दूर 'का उपयोग करना चाहिए जो मैं भ्रम, ध्यान और / पता है कि कैसे. docx4j ही है, और उपयोगकर्ता पर भरोसा करने के लिए बांका या समकक्ष है वास्तव में पीडीएफ निर्माण के लिए XSL का उत्पादन कर सकता. इस निर्भरता को कम करने, बनाने docx4j लाइटर है. लक्ष्य के लिए बांका जार (2.8M) को हटाने की जाएगी, पीडीएफ रेंडरर (1.6m) जार, जार iText (1.1M), और कोर renderer-(1M).
फ़ॉन्ट: हैंडलिंग हटायें सामान panose, तो हम अनुकूलित जार बांका नहीं की जरूरत है एक.
लेआउट मॉडल / मध्यवर्ती प्रारूप: docx4j एक DocumentModel, जो आगे विकसित किया जा सकता है समर्थन करने के लिए शामिल हैं:
* खोज की जगह /
* आकलन पृष्ठ की सामग्री
* , सूचियों enclosing XSLT वर्गों द्वारा
OLE ऑब्जेक्ट्स सम्मिलित: तो स्प्रेडशीट, आदि PDFs एम्बेड किया जा सकता है.
छाप
इस दस्तावेज़ को Word 2007 में लिखा गया था, का उपयोग कर:
* सुंदर XML का उपयोग कर मुद्रित http://www.softlion.com/webTools/XmlPrettyPrint/default.aspx या पैकेज एक्सप्लोरर
* जावा स्रोत कोड का उपयोग कर स्वरूपित http://www.java2html.de
पीडीएफ और HTML उत्पन्न संस्करणों का उपयोग कर रहे थे docx4j (के लिए और बांका XSL के माध्यम से पीडीएफ).
संपर्क करने Plutext
जब तक आप का समर्थन करने के लिए भुगतान किया है, मैं कैसे सामान्य प्रकार के प्रश्नों के सीधे तैनात किया जाना चाहिए docx4j forum . Plutext मंच करने के लिए कोई सवाल यह ईमेल जो मंच करने के लिए निर्देशित किया गया है चाहिए द्वारा प्राप्त पोस्ट कर सकते हैं.
Plutext या तो पर संपर्क किया जा सकता है jason@plutext.org , या jharrop@plutext.com
1 http://forums.java.net/jive/thread.jspa?threadID=411
2 यदि आप प्राप्त त्रुटि प्रतिबंध 'प्रवेश: प्रकार 'rt.jar की वजह से सुलभ नहीं पुस्तकालय प्रतिबंध पर आवश्यक है (और शायद ग्रहण 3.4 का उपयोग कर के कुछ संयोजन / या अद्यतन JDK 6 10)?, आप बनाने की जरूरत है में जाने के लिए टैब पुस्तकालय पथ के लिए परियोजना, लाइब्रेरी का चयन JRE सिस्टम, और "जोड़ एक का उपयोग नियम है," पहुँच, **.