docx4j使用说明.docx
- 文档编号:23503140
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:24
- 大小:28.03KB
docx4j使用说明.docx
《docx4j使用说明.docx》由会员分享,可在线阅读,更多相关《docx4j使用说明.docx(24页珍藏版)》请在冰豆网上搜索。
docx4j使用说明
docx4j入门
这份文件的最新版本总是可以找到docx4jsvnin/docs(在FlatOPCXML格式为Word2007,HTML,和PDF)。
这份文件是从英文翻译使用谷歌翻译。
如果你能提高翻译,请随时发送给你的改进版。
对于最近的报告,总是指英文版本。
什么是docx4j?
docx4j是一个解压的docx一个“一揽子”库,并解析WordprocessingMLXML创建一个内存中的代表性Java。
最新版本的docx4j也支援PowerPointpptx文件。
它是在概念上类似于微软的OpenXMLSDK,它是对的。
NET。
docx4j是开源的,可以按照Apache许可证(2版)。
作为一个开放源码项目,欢迎踊跃投稿。
请参阅docx4j论坛http:
//dev.plutext.org/forums/了解详情。
docx4j严重依赖JAXB,XML绑定的JavaJCP标准。
你能想到的docx4j作为一个JAXB的实施除其他():
*打开包装公约
*WordprocessingML(docx)的,开放的XML部分
*PresentationML(pptx)partofOpenXML
该库是为了圆100%保真度之行docx文件,支持所有2007WordML中。
为新的Word2010功能的支持我们会尽快添加。
该docx4j项目是由Plutext()。
是docx4j为你?
docx4j负责处理的docx文件(和pptx介绍)在爪哇。
这不是旧的二进制(。
doc)格式文件。
针对这一情况,看看在Apache的POI的HWPF。
(事实上,docx4j使用基本转换HWPF。
文件,以。
docx)的
它也不是为RTF文件。
如果你要处理的。
NET平台的docx文件,你应该看看微软的OpenXMLSDK的代替。
一种替代方法docx4j是Apache的POI。
我特别建议,对于处理Excel文件。
它也可以用来处理Word文档,而且由于它使用XMLBeans的(不使用JAXB)它可能是一个更好的选择,如果你想使用XMLBeans。
什么样的事情可以做各种各样docx4j?
*打开现有的docx文件系统(从SMB/CIFS通讯,使用WebDAV的VFS的)
*创建新的docx
*编程操作(当然docx文档)
*Templatesubstitution;CustomXMLbinding
*导入二进制文档(使用Apache的POIHWPF)
*生产/消费的Word2007的xmlPackage(封装)格式
*保存的docx,以文件系统作为一个的docx(即压缩),或的JCR(解压)
*申请转换,包括常用的过滤器
*导出为HTML或PDF
*漫射/比较文件,段落或特殊和差别待遇(内容控制)
*支持字体(字体替换,文件中使用嵌入任何字体)
项目使用docx4j
Docx4all是基于Swing的文字处理器。
PlutextWord2007的协作使用docx4j在服务器上,以切碎成更小的字,可独立版本件文件。
请联系Plutext如果您希望您的项目在这里列出。
什么它支持Word文档?
docx4j可以读/写或Word2007中,或已安装该兼容包的早期版本创建的docx文件。
相关零件docx4j从ECMA的生成模式。
它不能读/写的Word2003XML文档。
与这些主要问题是,XML命名空间是不同的。
docx4j支持的Word2010的docx文件。
运用docx4j二进制文件
你可以下载最新版本docx4j从http:
//dev.plutext.org/docx4j/
一般来说,我们建议您开发的最新正式发布以来针对目前每晚构建,往往是几个个月大。
支持jar文件中可以找到的。
tar.gz的版本,或者在有关的子目录。
运用docx4j通过Maven
MavenPOM可在http:
//dev.plutext.org/trac/docx4j/browser/trunk/docx4j/m2/org/docx4j/docx4j
JDK版本
你需要使用Java1.5+。
这是因为JAXB的1。
如果您必须使用1.4,retrotranslator可以使据说它的工作。
关于JAXB的字
docx4j使用JAXB的马歇尔和unmarshall在WordprocessingML文档中的关键部件,包括主要文件的一部分,风格的一部分,主题的一部分,性能部分。
JAXB是包含在Sun的Java6中的分布,而不是1.5。
因此,如果您使用的是1.5的JDK,你将需要在您的类路径的JAXB2.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源代码
要获取该电流源代码的副本:
svncohttp:
//dev.plutext.org/svn/docx4j/trunk/docx4jdocx4j
或者,你可以浏览它的在线,网址为:
http:
//dev.plutext.org/trac/docx4j/browser/trunk/docx4j/
建筑docx4j从源
命令行-快捷操作
“快”,即只要你有Maven和Ant安装。
请注意,我们只是使用Maven来获取依赖,不求实际的建设。
创建一个目录称为工作区,和CD进去。
svncohttp:
//dev.plutext.org/svn/docx4j/trunk/docx4jdocx4j
开放的pom.xml,找到一行字:
并编辑它来适应你的系统。
mvninstall
antdist
这ant命令将创建docx4j.jar并把它和所有在dist目录的依赖关系。
日食
先决条件
*Eclipse的安装
*安装一个Eclipse插件,例如颠覆http:
//subclipse.tigris.org/update_1.2.x
*安装MavenandtheEclipseplugin
而且,正如上面讨论:
*Java1.5或6
*JAXB的:
既包括执行的JAXB的Java6中,并在2.x的参考实现。
(这是运行时的价格支持功能)
说明
*File>New"Project..">SVN>CheckoutProjectsfromSVN
*创建一个新的存储库的位置;网址是http:
//dev.plutext.org/svn/docx4j
*点击文件夹"trunk",并选择docx4j;点击下一步
*您要检查它作为一个项目配置使用新建项目向导
*然后选择Java>Java项目,请点击下一页
*选择一个项目名称(例如,'docx4j'),然后单击下一步
*点击完成(我们将定义的Java构建步骤设置在后面)
经过其他对话框的情侣,你应该在你的工作区的新项目。
现在,我们需要配置类路径的Eclipse等内,以便它可以建立。
*生成路径>“配置构建路径>Java构建路径>源标签
*点击钢骨混凝土,然后按删除按钮
*然后点击“添加文件夹”,并浏览到src/主/Java和剔的Java'
*然后添加src/svg,src/diffxandsrc/pptx4j/java以及
在Maven位:
*请确保您有安装Maven和它的插件-见上面的先决条件。
*安装在运行mvndocx4j你从命令提示符(以防万一)
*合适的项目点击>的Maven2>“启用
该项目现在应该在Eclipse工作没有错误2。
打开一个现有的docx文件
org.docx4j.openpackaging.packages.WordprocessingMLPackage代表一个docx文档。
要加载的文件,所有您需要做的是:
WordprocessingMLPackagewordMLPackage=
WordprocessingMLPackage.load(newjava.io.File(inputfilepath));
这种方法还可以加载平板的OPCXML文件。
然后,您可以得到的主要文件的一部分(字/document.xml):
MainDocumentPartdocumentPart=wordMLPackage.getMainDocumentPart();
在此之后,您可以操作的内容。
WordML中的概念
要做到这远远超出任何事情,你需要有一个基本的WordML中概念的理解。
根据微软开放包装规格,每个的docx文件是由一个部分文件的数量,压缩了。
通常是XML的一个部分,但未必是(1图像的一部分,例如,是不是)。
一个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的:
编组和解组
docx4j包含一个类代表每个部分。
例如,有一个MainDocumentPart类。
XML的部分继承JaxbXmlPart,其中包含一个成员叫jaxbElement。
当你要处理的一个部分的内容,你的工作与jaxbElement。
当你打开一个docx文档使用docx4j,docx4j自动反编排的XML部分的内容每到一个强类型的Java对象树(jaxbElement)。
同样,如果/当你告诉docx4j保存为这些Java对象的docx,docx4j自动纠察的jaxbElement在每一部分。
有时候你会希望自己的东西编组或解组。
类org.docx4j.jaxb.Context定义了所有的用于JAXBContextsdocx4j:
Jc
org.docx4j.wml
org.docx4j.dml
org.docx4j.dml.picture
org.docx4j.dml.wordprocessingDrawing
org.docx4j.vml
org.docx4j.vml.officedrawing
org.docx4j.math
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
org.docx4j.dml
org.docx4j.dml.picture
建筑
docx4j有3个层次:
1。
org.docx4j.openpackaging
OpenPackaging处理层次的东西在开放式打包约定:
解压缩1到的docxWordprocessingMLPackage和一个第二部分设置继承的对象,允许部分被添加/删除;保存的docx
这一层本来是基于OpenXML4J(也是由ApachePOI的使用)。
一般子类零件org.docx4j.openpackaging.parts.JaxbXmlPart
零件都被排列在一棵树上。
如果部分后裔,将有org.docx4j.openpackaging.parts.relationships.RelationshipsPart其中确定的后裔部分。
该示例PartsList(见下一节)告诉您如何工作的。
阿JaxbXmlPart有一个内容树:
publicObjectgetJaxbElement(){
returnjaxbElement;
}
publicvoidsetJaxbElement(ObjectjaxbElement){
this.jaxbElement=jaxbElement;
}
2。
在JAXB的内容树是分层模型的第二个级别3。
大部分地区(包括MainDocumentPart,样式,页眉/页脚,注释,尾注/脚注)的使用org.docx4j.wml(WordprocessingML);WML的提述org.docx4j.dml图形处理(DrawingML)作为必要的。
这些类都从打开XML模式
3。
org.docx4j.model
这个软件包的基础上降低2层,提供额外的功能,并正在逐步进一步发展。
样品
该封装org.docx4j.samples包含例子如何做事与docx4j。
这些措施包括:
基础知识
*CreateWordprocessingMLDocument
*DisplayMainDocumentPartXml
*OpenAndSaveRoundTripTest
*OpenMainDocumentAndTraverse
输出/转型
*CreateHtml
*CreatePdf
扁平的OPCXML的
*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
此外,还有各种样本文件在/采样docs目录,这些是最容易通过检查进行访问docx4j使用svn。
零件清单
为了更好地了解如何docx4j工程和一个docx文档的结构你可以运行PartsList样本上的docx(或pptx)。
如果这样做,它会列出包层次结构,在部分地区采用。
它会告诉你哪个类是用来表示每个部分,如该部分是一个JaxbXmlPart,它还会告诉你什么阶层的jaxbElement的。
例如:
Part/_rels/.rels[org.docx4j.openpackaging.parts.relationships.RelationshipsPart]
containingJaxbElement:
org.docx4j.relationships.Relationships
Part/docProps/app.xml[org.docx4j.openpackaging.parts.DocPropsExtendedPart]
containingJaxbElement:
org.docx4j.docProps.extended.Properties
Part/docProps/core.xml[org.docx4j.openpackaging.parts.DocPropsCorePart]
containingJaxbElement:
org.docx4j.docProps.core.CoreProperties
Part/word/document.xml[org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart]
containingJaxbElement:
org.docx4j.wml.Document
Part/word/settings.xml[org.docx4j.openpackaging.parts.WordprocessingML.DocumentSettingsPart]
containingJaxbElement:
org.docx4j.wml.CTSettings
Part/word/styles.xml[org.docx4j.openpackaging.parts.WordprocessingML.StyleDefinitionsPart]
containingJaxbElement:
org.docx4j.wml.Styles
Part/word/media/image1.jpeg[org.docx4j.openpackaging.parts.WordprocessingML.ImageJpegPart]
遍历的docx
OpenMainDocumentAndTraverse.java在样本目录显示您如何遍历一个的docxJAXB的代表性。
关于JAXB的一个恼人的东西,是一个对象说一个表可以表示为org.docx4j.wml.Tbl(如您所期望的)。
或者它可能被包装在一个javax.xml.bind.JAXBElement在这种情况下,我得到了真正的表,你必须做的是这样的:
if(((JAXBElement)o).getDeclaredType().getName().equals("org.docx4j.wml.Tbl"))
org.docx4j.wml.Tbl任务型=(org.docx4j.wml.Tbl)((JAXBElement)海外)。
的getValue();
创建一个新的docx
要创建一个新的docx:
//创建包
WordprocessingMLPackagewordMLPackage=WordprocessingMLPackage.createPackage();
//保存它
wordMLPackage.save(newjava.io.File("helloworld.docx"));
就是这样。
createPackage()是一个方便的方法,它的作用:
//创建包
WordprocessingMLPackagewordMLPackage=newWordprocessingMLPackage();
//创建主文档的一部分(字/document.xml)
MainDocumentPartwordDocumentPart=newMainDocumentPart();
//创建主文档的一部分内容
ObjectFactoryfactory=Context.getWmlObjectFactory();
org.docx4j.wml.Bodybody=factory.createBody();
org.docx4j.wml.DocumentwmlDocumentEl=factory.createDocument();
wmlDocumentEl.setBody(body);
//把在部分内容
wordDocumentPart.setJaxbElement(wmlDocumentEl);
//添加主文档的一部分包关系
//(创造,如果有必要)
wmlPack.addTargetPart(wordDocumentPart);
添加一段文字
MainDocumentPart包含一个方法:
publicorg.docx4j.wml.PaddStyledParagraphOfText(StringstyleId,Stringtext)
您可以使用该方法添加一个段落,使用指定的样式。
我们正在寻找的XML创建将是这样的:
pxmlns: w="http: //schemas.openxmlformats.org/wordprocessingml/2006/main"> r> t>Helloworld t> r>
p>
addStyledParagraphOfText生成的JAXB对象结构的方式,并将其添加到文档中。
ObjectFactoryfactory=Context.getWmlObjectFactory();
//创建该段
org.docx4j.wml.Ppara=factory.createP();
//创建文本元素
org.docx4j.wml.Textt=factory.createText();
t.setValue(simpleText);
//创建运行
org.docx4j.wml.Rrun=factory.createR();
run.getRunContent().add(t);
para.getParagraphContent().add(run);
//现在我们添加到文档的正文段
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- docx4j 使用说明