实现word转pdf,HTML转pdf(探索篇)

发布时间:2020-04-08 09:46:48 作者:Red_Ant_hoyl
来源:网络 阅读:15296

笔者找依赖的jar包,找的好辛苦。
实现word转pdf,HTML转pdf(探索篇)

ITextRenderer、
ITextFontResolver这两个类依赖的jar包到底是哪个,还有怎么下载?苦苦纠结了3个小时。

实现word转pdf,HTML转pdf(探索篇)
终于找到你了!
记录个网址:
http://www.java2s.com/Code/Jar/c/Downloadcorerendererr8pre2jar.htm
上测试代码:

 /*
 * html转图片
 */
public static boolean convertHtmlToPdf(String inputFile, 
        String outputFile, String imagePath)
        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:/" + imagePath);//D:/test
    renderer.layout();
    renderer.createPDF(os);
    os.flush();
    os.close();
    return true;
}

调用+走你!

这里笔者结合上一篇poi将word转html,结合使用。
/**doc

笔者尝试,使用第三方 jar 包Jsoup, 直接调用 parse方法,笔者认为html就标准啦!
这个坑,让笔者苦恼了,1个小时。

为此,笔者不得不重写,word转html代码:
再次记录个网址:下载第三方 jar 包Jsoup使用
https://jsoup.org/download
上重写word转html代码:

        // word 转 html
            public static void convert2Html(String fileName, String outPutFile) throws Exception {
                HWPFDocument wordDocument = new HWPFDocument(new FileInputStream(fileName));// WordToHtmlUtils.loadDoc(new
                // 兼容2007 以上版本
                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);
            }
                //输出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) {
                                }
                        }
                }

准备个文件,测试一下。

    String source = "D:\\red_ant_file\\20180915\\1303\\RedAnt的实验作业.doc";
                String out = "D:\\red_ant_file\\20180915\\1303\\789.html";
                try {
                    AllServiceIsHere.convert2Html(source, out);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

word转html,规范化代码后的转换结果。

实现word转pdf,HTML转pdf(探索篇)

接下来,html转pdf

实现word转pdf,HTML转pdf(探索篇)

【后话】

虽然笔者,最终调试出来了。使用这种方法转pdf。
但是使用中,会遇到各种各样的奇葩坑!因此笔者在这里不推荐使用这种方法。
原因就是,html的规则也在变化之中,写法也在变化之中。html转pdf会在后续报各种各样的标签错误。
笔者之所以粘出,这些代码。完全是因为,笔者对自己的尝试,有个明确的结果。亦或是,再优化这些代码,找到合适的解决办法。

推荐阅读:
  1. 纯js如何实现html转pdf
  2. java使用jacob实现word转pdf

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

word转html html转pdf word转pdf

上一篇:[UWP]用Win2D实现镂空文字

下一篇:关于电脑无法开机或无法启动的几种可能和解决方案

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》