精华内容
下载资源
问答
  • 先讲讲思路:第一步:使用 poi 将word转换 html,这里代码一搜一堆没什么好说的千篇一律。(值得注意的地方是IText 根据html生成文件的是否会验证html文件是否标准,例如通过poi转换的出来的html文件的一些标签会...

    先讲讲思路:

    第一步:使用 poi 将word转换成 html,这里代码一搜一堆没什么好说的千篇一律。

    (值得注意的地方是IText 根据html生成文件的是否会验证html文件是否标准,例如通过poi转换的出来的html文件的一些标签会缺少标签闭合 ,

    举个例子:

            

    这是我直接用poi生成的html中的一部分, META、img 标签明显就没有闭合标签。如果用这种html进行转换是没有办法通过itext 的校验的。

    会出现以下异常错误:“The element type "meta" must be terminated by the matching end-tag "".”

    org.xhtmlrenderer.util.XRRuntimeException: Can't load the XML resource (using TRaX transformer). org.xml.sax.SAXParseException: The element type "meta" must be terminated by the matching end-tag "".  。

    从错误分析也知道是我们的html不规范拉,我们采用第三方 jar 包  Jsoup,  直接调用parse方法 我们的html就标准啦!

    因为遇到这个问题让我头疼了半天,没想到就这么轻松的解决了,发个博文支援一下遇到该问题的小伙伴们 !

    下面是poi转换html 的代码:

    package com.smart.sys.core.service.io.poi;

    import org.apache.poi.hwpf.HWPFDocument;

    import org.apache.poi.hwpf.converter.PicturesManager;

    import org.apache.poi.hwpf.converter.WordToHtmlConverter;

    import org.apache.poi.hwpf.usermodel.Picture;

    import org.apache.poi.hwpf.usermodel.PictureType;

    import org.jsoup.Jsoup;

    import org.w3c.dom.Document;

    import javax.xml.parsers.DocumentBuilderFactory;

    import javax.xml.parsers.ParserConfigurationException;

    import javax.xml.transform.OutputKeys;

    import javax.xml.transform.Transformer;

    import javax.xml.transform.TransformerException;

    import javax.xml.transform.TransformerFactory;

    import javax.xml.transform.dom.DOMSource;

    import javax.xml.transform.stream.StreamResult;

    import java.io.*;

    import java.util.List;

    /**

    * Created by Carey on 15-2-2.

    */

    public class Word2Html {

    public static void main(String argv[]) {

    try {

    convert2Html("D:\\新建 Microsoft Word 文档.doc","D:\\1.html");

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    //输出html文件

    public static void writeFile(String content, String path) {

    FileOutputStream fos = null;

    BufferedWriter bw = null;

    org.jsoup.nodes.Document doc = Jsoup.parse(content);

    content=doc.html();

    try {

    File file = new File(path);

    fos = new FileOutputStream(file);

    bw = new BufferedWriter(new OutputStreamWriter(fos,"UTF-8"));

    bw.write(content);

    } catch (FileNotFoundException fnfe) {

    fnfe.printStackTrace();

    } catch (IOException ioe) {

    ioe.printStackTrace();

    } finally {

    try {

    if (bw != null)

    bw.close();

    if (fos != null)

    fos.close();

    } catch (IOException ie) {

    }

    }

    }

    //word 转 html

    public static void convert2Html(String fileName, String outPutFile)

    throws TransformerException, IOException,

    ParserConfigurationException {

    HWPFDocument wordDocument = new HWPFDocument(new FileInputStream(fileName));//WordToHtmlUtils.loadDoc(new FileInputStream(inputFile));

    //兼容2007 以上版本

    //        XSSFWorkbook  xssfwork=new XSSFWorkbook(new FileInputStream(fileName));

    WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(

    DocumentBuilderFactory.newInstance().newDocumentBuilder()

    .newDocument());

    wordToHtmlConverter.setPicturesManager( new PicturesManager()

    {

    public String savePicture( byte[] content,

    PictureType pictureType, String suggestedName,

    float widthInches, float heightInches )

    {

    return "test/"+suggestedName;

    }

    } );

    wordToHtmlConverter.processDocument(wordDocument);

    //save pictures

    List pics=wordDocument.getPicturesTable().getAllPictures();

    if(pics!=null){

    for(int i=0;i

    Picture pic = (Picture)pics.get(i);

    System.out.println();

    try {

    pic.writeImageContent(new FileOutputStream("D:/test/"

    + pic.suggestFullFileName()));

    } catch (FileNotFoundException e) {

    e.printStackTrace();

    }

    }

    }

    Document htmlDocument = wordToHtmlConverter.getDocument();

    ByteArrayOutputStream out = new ByteArrayOutputStream();

    DOMSource domSource = new DOMSource(htmlDocument);

    StreamResult streamResult = new StreamResult(out);

    TransformerFactory tf = TransformerFactory.newInstance();

    Transformer serializer = tf.newTransformer();

    serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");

    serializer.setOutputProperty(OutputKeys.INDENT, "yes");

    serializer.setOutputProperty(OutputKeys.METHOD, "HTML");

    serializer.transform(domSource, streamResult);

    out.close();

    writeFile(new String(out.toByteArray()), outPutFile);

    }

    }

    好了第二步生成pdf ,我直接上代码了 !

    package com.smart.sys.core.service.io.itext;

    import com.lowagie.text.pdf.BaseFont;

    import org.xhtmlrenderer.pdf.ITextFontResolver;

    import org.xhtmlrenderer.pdf.ITextRenderer;

    import java.io.File;

    import java.io.FileOutputStream;

    import java.io.OutputStream;

    /**

    * Created by Carey on 15-2-2.

    */

    public class Html2Pdf {

    public boolean convertHtmlToPdf(String inputFile, String outputFile)

    throws Exception {

    OutputStream os = new FileOutputStream(outputFile);

    ITextRenderer renderer = new ITextRenderer();

    String url = new File(inputFile).toURI().toURL().toString();

    renderer.setDocument(url);

    // 解决中文支持问题

    ITextFontResolver fontResolver = renderer.getFontResolver();

    fontResolver.addFont("C:/Windows/Fonts/simsunb.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

    //解决图片的相对路径问题

    renderer.getSharedContext().setBaseURL("file:/D:/test");

    renderer.layout();

    renderer.createPDF(os);

    os.flush();

    os.close();

    return true;

    }

    public   static  void  main(String [] args){

    Html2Pdf html2Pdf =new Html2Pdf();

    try {

    html2Pdf.convertHtmlToPdf("D:\\1.html","D:\\index.pdf");

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    }

    pdf 的转换的详细细节也是参考了一位大神的代码,人家写的非常详细,我这里也不再赘述 、这里附上链接 :http://www.open-open.com/lib/view/open1341881830588.html

    所需jar包

    iText-2.0.8.jar

    core-renderer.jar

    iTextAsian.jar

    iTextAsianCmaps.jar

    jsoup-1.8.1.jar

    下载地址:

    http://yunpan.cn/cKMuZ9yQynRHu  提取码 3f4c(我也不知道有没有效,没有的话自己去maven下载)

    展开全文
  • 实现思路将word转换成html,已经实现,由于利用poi转成的html不标准html转pdf过程中出现 ERROR: '元素类型 "meta" 必须由匹配的结束标记 "</meta>" 终止。' org.xhtmlrenderer.util.XRRuntimeException: Can't ...
  • 先讲讲思路: 第一步:使用 poi 将word转换 html,这里代码一搜一堆没什么好说的千篇一律。 (值得注意的地方是IText 根据html生成文件的是否会验证html文件是否标准,例如通...

     先讲讲思路:

                           第一步:使用 poi 将word转换成 html,这里代码一搜一堆没什么好说的千篇一律。

                            (值得注意的地方是IText 根据html生成文件的是否会验证html文件是否标准,例如通过poi转换的出来的html文件的一些标签会缺少标签闭合 ,

                         举个例子:

    <html>
       <head>
         <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <img src="test/0.jpg" style="width:5.765972in;height:8.647917in;vertical-align:text-bottom;">

    这是我直接用poi生成的html中的一部分, META、img 标签明显就没有闭合标签。如果用这种html进行转换是没有办法通过itext 的校验的。

    会出现以下异常错误:“The element type "meta" must be terminated by the matching end-tag "</meta>".”
    org.xhtmlrenderer.util.XRRuntimeException: Can't load the XML resource (using TRaX transformer). org.xml.sax.SAXParseException: The element type "meta" must be terminated by the matching end-tag "</meta>".  。

       从错误分析也知道是我们的html不规范拉,我们采用第三方 jar 包  Jsoup,  直接调用parse方法 我们的html就标准啦!

       因为遇到这个问题让我头疼了半天,没想到就这么轻松的解决了,发个博文支援一下遇到该问题的小伙伴们 !

    下面是poi转换html 的代码

    package com.smart.sys.core.service.io.poi;
    
    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.converter.PicturesManager;
    import org.apache.poi.hwpf.converter.WordToHtmlConverter;
    import org.apache.poi.hwpf.usermodel.Picture;
    import org.apache.poi.hwpf.usermodel.PictureType;
    import org.jsoup.Jsoup; 
    import org.w3c.dom.Document;
    
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.transform.OutputKeys;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerException;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import java.io.*;
    import java.util.List;
    
    /**
     * Created by Carey on 15-2-2.
     */
    public class Word2Html {
    
    
        public static void main(String argv[]) {
            try {
                convert2Html("D:\\新建 Microsoft Word 文档.doc","D:\\1.html");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        //输出html文件 
        public static void writeFile(String content, String path) {
                  FileOutputStream fos = null; 
                  BufferedWriter bw = null;
            org.jsoup.nodes.Document doc = Jsoup.parse(content);
             content=doc.html();
            try {
                File file = new File(path);
                fos = new FileOutputStream(file);
                bw = new BufferedWriter(new OutputStreamWriter(fos,"UTF-8"));
                bw.write(content);
            } catch (FileNotFoundException fnfe) {
                fnfe.printStackTrace();
            } catch (IOException ioe) {
                ioe.printStackTrace();
            } finally {
                try {
                    if (bw != null)
                        bw.close();
                    if (fos != null)
                        fos.close();
                } catch (IOException ie) {
                }
            }
        }
    
        //word 转 html 
        public static void convert2Html(String fileName, String outPutFile)
                throws TransformerException, IOException,
                ParserConfigurationException {
    
            HWPFDocument wordDocument = new HWPFDocument(new FileInputStream(fileName));//WordToHtmlUtils.loadDoc(new FileInputStream(inputFile));
             //兼容2007 以上版本
    //        XSSFWorkbook  xssfwork=new XSSFWorkbook(new FileInputStream(fileName));
            WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(
                    DocumentBuilderFactory.newInstance().newDocumentBuilder()
                            .newDocument());
            wordToHtmlConverter.setPicturesManager( new PicturesManager()
            {
                public String savePicture( byte[] content,
                                           PictureType pictureType, String suggestedName,
                                           float widthInches, float heightInches )
                {
                    return "test/"+suggestedName;
                }
            } );
            wordToHtmlConverter.processDocument(wordDocument);
            //save pictures
            List pics=wordDocument.getPicturesTable().getAllPictures();
            if(pics!=null){
                for(int i=0;i<pics.size();i++){
                    Picture pic = (Picture)pics.get(i);
                    System.out.println();
                    try {
                        pic.writeImageContent(new FileOutputStream("D:/test/"
                                + pic.suggestFullFileName()));
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    }
                }
            }
            Document htmlDocument = wordToHtmlConverter.getDocument();
    
            ByteArrayOutputStream out = new ByteArrayOutputStream();    
            DOMSource domSource = new DOMSource(htmlDocument);
            StreamResult streamResult = new StreamResult(out);
    
            TransformerFactory tf = TransformerFactory.newInstance();
            Transformer serializer = tf.newTransformer();
            serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
            serializer.setOutputProperty(OutputKeys.INDENT, "yes");
            serializer.setOutputProperty(OutputKeys.METHOD, "HTML");
            serializer.transform(domSource, streamResult);
            out.close();
            writeFile(new String(out.toByteArray()), outPutFile);
        }
    }

     好了第二步生成pdf ,我直接上代码了 !

    package com.smart.sys.core.service.io.itext;
    
    import com.lowagie.text.pdf.BaseFont;
    import org.xhtmlrenderer.pdf.ITextFontResolver;
    import org.xhtmlrenderer.pdf.ITextRenderer;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.OutputStream;
    
    /**
     * Created by Carey on 15-2-2.
     */
    public class Html2Pdf {
        public boolean convertHtmlToPdf(String inputFile, String outputFile)
                throws Exception {
    
            OutputStream os = new FileOutputStream(outputFile);
            ITextRenderer renderer = new ITextRenderer();
            String url = new File(inputFile).toURI().toURL().toString();
            renderer.setDocument(url);
            // 解决中文支持问题
            ITextFontResolver fontResolver = renderer.getFontResolver();
            fontResolver.addFont("C:/Windows/Fonts/simsunb.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            //解决图片的相对路径问题
            renderer.getSharedContext().setBaseURL("file:/D:/test");
            renderer.layout();
            renderer.createPDF(os);
            os.flush();
            os.close();
            return true;
        }
    
    
         public   static  void  main(String [] args){
             Html2Pdf html2Pdf =new Html2Pdf();
             try {
                 html2Pdf.convertHtmlToPdf("D:\\1.html","D:\\index.pdf");
             } catch (Exception e) {
                 e.printStackTrace();
             }
         }
    }

    pdf 的转换的详细细节也是参考了一位大神的代码,人家写的非常详细,我这里也不再赘述 、这里附上链接 :http://www.open-open.com/lib/view/open1341881830588.html

    所需jar包 

    iText-2.0.8.jar

    core-renderer.jar

    iTextAsian.jar

    iTextAsianCmaps.jar

    jsoup-1.8.1.jar

    下载地址:

    http://yunpan.cn/cKMuZ9yQynRHu  提取码 3f4c(我也不知道有没有效,没有的话自己去maven下载)


    转载于:https://my.oschina.net/alanfans/blog/498509

    展开全文
  • word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。能通过...
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
  • Java资源包01

    2016-08-31 09:16:25
    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
  • java开源包101

    2016-07-13 10:11:08
    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
  • java开源包11

    热门讨论 2013-06-28 10:10:38
    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
  • java开源包6

    热门讨论 2013-06-28 09:48:32
    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
  • java开源包10

    热门讨论 2013-06-28 10:06:40
    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
  • java开源包8

    热门讨论 2013-06-28 09:55:26
    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
  • java开源包9

    热门讨论 2013-06-28 09:58:55
    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
  • java开源包7

    热门讨论 2013-06-28 09:52:16
    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
  • Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP   Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的...
  • 书名:《Java开发实战1200例(第I卷)》(清华大学出版社.李钟尉,陈丹丹) PDF格式扫描版,全书分为24章,共817页。2011年1月出版。 全书压缩打包4部分,这是第3部分 注:本系列图书的第I、II卷再版时均相应改名为...
  • 书名:《Java开发实战1200例(第I卷)》(清华大学出版社.李钟尉,陈丹丹) PDF格式扫描版,全书分为24章,共817页。2011年1月出版。 全书压缩打包4部分,这是第1部分 注:本系列图书的第I、II卷再版时均相应改名为...
  • 书名:《Java开发实战1200例(第I卷)》(清华大学出版社.李钟尉.陈丹丹) 2011年1月出版 PDF格式扫描版,共压缩为5部分,这是第2部分。 内容简介 本系列图书包括第I卷、第II卷共计1200个例子,本文档是第I卷,共计603...
  • 书名:《Java开发实战1200例(第I卷)》(清华大学出版社.李钟尉.陈丹丹) 2011年1月出版 PDF格式扫描版,共压缩为5部分,这是第3部分。 内容简介 本系列图书包括第I卷、第II卷共计1200个例子,本文档是第I卷,共计603...
  • python-docx:读取,查询以及修改 Microsoft Word 2007/2008 docx 文件。 python-pptx:可用于创建和修改 ppt 文件的 Python 库。 relatorio:模板化 OpenDocument 文件。 unoconv:在 LibreOffice/OpenOffice ...
  • asp.net知识库

    2015-06-18 08:45:45
    有了System.Data.IDataReader,一切皆数据 理解DataSet的数据缓存机制 存储过程 可按任意字段排序的分页存储过程(不用临时表的方法,不看全文会后悔) 常用sql存储过程集锦 存储过程中实现类似split功能(charindex) ...
  • 技术点七:UI快速开发库,针对WEB UI进行标准封装,页面统一采用UI标签实现功能:数据datagrid,表单校验,Popup,Tab等,实现JSP页面零JS,开发维护非常高效 技术点八:在线流程定义,采用开源Activiti流程引擎,...
  • √ONLYOFFICE中文档的格式转换功能,如word转pdf。 √ONLYOFFICE中文档协作的权限设置,采用casbin。 √在线预览dwg文件。 √手机端添加图片、视频发布文档;——已开发小程序“珠三角设代”应用中并开源。 √考勤...
  • 排行榜、树洞 OCR 文字识别 、从包含表格的扫描图片中识别表格和文字、语声迁移、Python口语自然语言处理工具集(英文)、 similarity:相似度计算工具包,java编写、海量中文预训练ALBERT模型 、Transformers 2.0 、...

空空如也

空空如也

1 2
收藏数 35
精华内容 14
关键字:

java实现html转成标准word

java 订阅