`
redxun
  • 浏览: 298695 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Docx4j的Word转PDF及HTML的实现

 
阅读更多

最近在研究Web中的文档管理,文档管理永远是企业中的很重要的一部分,其中遇到一最大的难题就是如何实现把大部分常用的文档进行在线预览及搜索,如果仅是实现Doc的展示,问题比较简单,JAVA中对Word的操作比较多。一国外哥们还对不同的技术框架写了文档的展示
https://angelozerr.wordpress.com/2012/12/06/how-to-convert-docxodt-to-pdfhtml-with-java/

本文对docx4j3.2.1的版本进行了测试,发现使用上还是比较方便,目前这个框架还分商业版及免费版本,商业版本多一些对OLE的嵌入式的对象进行转换。虽然该平台提供了PPTX,XLSX的转换,但目前其中的示例不提供这种转换示例。

对下为转换的代码示例:

package com.redxun.core.pdf.docx4j;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.commons.io.IOUtils;
import org.docx4j.Docx4J;
import org.docx4j.Docx4jProperties;
import org.docx4j.convert.out.FOSettings;
import org.docx4j.convert.out.HTMLSettings;
import org.docx4j.fonts.IdentityPlusMapper;
import org.docx4j.fonts.Mapper;
import org.docx4j.fonts.PhysicalFonts;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;

/**
 * dox转pdfl工具类
 * @author redxun
 */
public class PdfTool {

    /**
     * docx文档转换为PDF
     *
     * @param docx docx文档
     * @param pdfPath PDF文档存储路径
     * @throws Exception 可能为Docx4JException, FileNotFoundException, IOException等
     */
    public static void convertDocxToPDF(String docxPath, String pdfPath) throws Exception {
        OutputStream os = null;
        try {
            WordprocessingMLPackage mlPackage = WordprocessingMLPackage.load(new File(docxPath));
            //Mapper fontMapper = new BestMatchingMapper();
            Mapper fontMapper = new IdentityPlusMapper();
            fontMapper.put("华文行楷", PhysicalFonts.get("STXingkai"));
            fontMapper.put("华文仿宋", PhysicalFonts.get("STFangsong"));
            fontMapper.put("隶书", PhysicalFonts.get("LiSu"));
            mlPackage.setFontMapper(fontMapper);

            os = new java.io.FileOutputStream(pdfPath);

            FOSettings foSettings = Docx4J.createFOSettings();
            foSettings.setWmlPackage(mlPackage);
            Docx4J.toFO(foSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL);

        }catch(Exception ex){
            ex.printStackTrace();
        }finally {
            IOUtils.closeQuietly(os);
        }
    }
    
    /**
     * 把docx转成html
     * @param docxFilePath
     * @param htmlPath
     * @throws Exception 
     */
    public static void convertDocxToHtml(String docxFilePath,String htmlPath) throws Exception{
        
	WordprocessingMLPackage wordMLPackage= Docx4J.load(new java.io.File(docxFilePath));

    	HTMLSettings htmlSettings = Docx4J.createHTMLSettings();
        String imageFilePath=htmlPath.substring(0,htmlPath.lastIndexOf("/")+1)+"/images";
    	htmlSettings.setImageDirPath(imageFilePath);
    	htmlSettings.setImageTargetUri( "images");
    	htmlSettings.setWmlPackage(wordMLPackage);

    	String userCSS = "html, body, div, span, h1, h2, h3, h4, h5, h6, p, a, img,  ol, ul, li, table, caption, tbody, tfoot, thead, tr, th, td " +
    			"{ margin: 0; padding: 0; border: 0;}" +
    			"body {line-height: 1;} ";
        
    	htmlSettings.setUserCSS(userCSS);

        OutputStream os;
        
        os = new FileOutputStream(htmlPath);

    	Docx4jProperties.setProperty("docx4j.Convert.Out.HTML.OutputMethodXML", true);

        Docx4J.toHTML(htmlSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL);
       
    }
}

 

分享到:
评论

相关推荐

    使用docx4j+docx4j-ImportXHTML实现将html转成word

    html模板填充生成pdf和word

    docx4j所需jar包全

    在本讨论中,我们将深入探讨docx4j在Word文档转换方面的应用,特别是如何利用它将Word文档转换为PDF和HTML格式。 **Word转PDF**: docx4j提供了将Word文档(.docx)转换为PDF的能力。这一过程通常涉及解析OOXML文档...

    docx转pdf并实现字段填充.rar

    总之,"docx转pdf并实现字段填充"涉及的关键技术是docx4j库的使用,它可以实现文档格式转换和内容填充,适用于需要确保文档一致性、安全性和不可编辑性的场景。对于Java开发者来说,掌握docx4j的使用技巧将极大地...

    Docx4j office word java

    2. **创建新文档**:使用`org.docx4j.jaxb.Context`类初始化上下文,然后通过`org.docx4j.Docx4J.createDocument()`方法创建一个新的Word文档。 3. **操作文档内容**:可以使用`org.docx4j.model.content.Body`和`...

    docx4j(jar,src,依赖JAR)

    4. **其他辅助库**:如SLF4J(日志框架)和DOM4J(XML处理库)等,帮助docx4j实现其功能。 ### 使用示例 创建一个新的.docx文档并添加文本可以这样实现: ```java import org.docx4j.Docx4jProperties; import ...

    docx4j相关jar包

    例如,`docx4j-Export-PDF.jar`用于将docx文件转换为PDF格式。 3. **第三方依赖**:docx4j可能依赖于其他开源库,如Apache POI用于处理Microsoft Office文件,JAXB用于对象到XML的绑定,以及其他的XML处理库。这些...

    docx4j项目(javadoc文档、源码及示例)

    docx4j是一款强大的Java库,专为处理Microsoft Office 2007及更高版本的文件格式而设计,包括Word(.docx)、Excel(.xlsx)和PowerPoint(.pptx)文档。它允许开发者在Java应用程序中创建、修改和转换这些文件,...

    docx4j及其依赖包

    **四、docx4j的依赖** 为了使用docx4j,需要在项目中引入对应的依赖包。在Java项目中,可以通过Maven或Gradle等构建工具添加docx4j的依赖。 **五、示例代码** ```java import org.docx4j.*; public class Docx4...

    docx4j-3.3.3.zip

    《docx4j-3.3.3:Java处理Word文档的强大工具》 在Java开发中,处理Microsoft Office格式的文档是一项常见的需求,尤其是docx格式。为了方便开发者,一个名为docx4j的开源库应运而生,它允许程序员以编程方式创建、...

    docx4j全部jar包,包含docx4j-3.2.1.jar、poi-3.14.jar等60个jar包。.zip

    Apache POI是docx4j的一个重要依赖,因为它提供了对低级别Office文档结构的理解,使得docx4j能够解析和构建Word文档的内部XML结构。 除了这两个主要的jar包,其他58个jar包可能包含了docx4j的额外依赖和扩展功能。...

    docx4j操作word2007

    **docx4j操作word2007** 在IT领域,docx4j是一个非常实用的Java库,专为处理Microsoft Office Open XML (OOXML) 文件格式,如.docx、.xlsx和.pptx而设计。它允许开发人员在Java应用程序中创建、修改和转换这些文档...

    docx4j-3.3.3 jar包及依赖jar包

    此外,由于它支持转换到HTML、PDF等多种格式,docx4j也是将Office文档集成到Web应用或服务的理想选择。 总之,docx4j-3.3.3是一个强大且灵活的工具,为Java开发者处理OOXML文档提供了便利。理解并熟练运用其核心...

    docx4j api

    3. **文档转换**:docx4j支持将现有Word文档转换为其他格式,如HTML、PDF或者纯文本。这通常通过实现相应的导出策略(如`org.docx4j.convert.out.html.HtmlExporterNG`)来完成。 4. **样式与格式化**:docx4j允许...

    Docx4j入门指南

    Docx4j是一个用于Java语言中处理Word文档、PowerPoint演示文稿和Excel表格的开源类库。它允许开发者通过XML解析文档内容,而不是采用DOM或SAX解析器。Docx4j使用JAXB(Java API for XML Binding)在内存中构建文档的...

    docx4j-3.3.6

    Export as PDF (using Plutext's PDF Converter, or use docx4j-export-FO project) Produce/consume Word 2007's xmlPackage (pkg) format Apply transforms, including common filters Font support (font ...

    docx4j-2.6.0.tar.gz

    《docx4j-2.6.0:深入解析Word文档处理库》 docx4j-2.6.0.tar.gz是一个TAR+GZIP压缩文件,它包含了一个名为docx4j-2.6.0的完整版本。这个压缩包的大小约为13,828,193字节,这在软件分发中是常见的大小,因为它包含...

    word转pdf的一些jar包

    6. **Docx4j**: Docx4j是一个专门处理.docx文件的Java库,它可以读取、写入和转换Word文档。虽然它不直接支持PDF转换,但可以通过插件或与其它库(如iText)结合使用,实现Word到PDF的转换。 在使用这些库进行转换...

    docx4j使用说明.pdf

    - Docx4all:基于Swing的文字处理器,利用docx4j实现各种文档操作。 - Plutext Word 2007协作:在服务器端使用docx4j将大型docx文档分割成可独立编辑的小文件。 **获取与使用docx4j**: 你可以从官方网址...

    java 代码POI docx文件文本替换后转PDF

    在Java开发中,有时我们需要对Microsoft Word(.docx)文档进行文本替换,然后将处理后的文档转换为PDF格式,以便于签名或者其他用途。本文将详细介绍如何使用Apache POI库来操作docx文件,以及使用其他的Java库如...

    Docx4j Getting Start中文版

    #### 四、Docx4j的使用方式 - **通过Maven集成**: Docx4j可以通过Maven来管理依赖,简化集成过程。 - **直接使用**: 如果不想使用构建工具,也可以直接下载Docx4j的JAR文件使用。 - **依赖管理**: Docx4j依赖于多个...

Global site tag (gtag.js) - Google Analytics