zoukankan      html  css  js  c++  java
  • html转pdf

    使用的springboot,引入maven依赖。

    一、准备工作:

    1,检查需要转换的html文件声明是否正规:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    2,检查标签是否全部闭合

    img,meta等元素必须要全部闭合,</meta></img>

    3,检查自己是否有simsun字体放在c:windows/fonts下

     下载字体链接:https://files.cnblogs.com/files/lumc5/simsun.rar

    4,在需要转换的html文件的body标签里添加字体

    加了这个字体样式转pdf时候才能看到中文

    style = "font-family: SimSun;"

    加完是这样的:
    <body  style = "font-family: SimSun;">

    二、使用

    1,pom引入依赖

    <!-- url转pdf -->
            <dependency>
                <groupId>org.xhtmlrenderer</groupId>
                <artifactId>flying-saucer-pdf-itext5</artifactId>
                <version>9.0.3</version>
            </dependency>

    2,工具类

    import java.io.FileOutputStream;
    import java.io.OutputStream;
    
    import org.xhtmlrenderer.pdf.ITextFontResolver;
    import org.xhtmlrenderer.pdf.ITextRenderer;
    
    import com.itextpdf.text.pdf.BaseFont;
    
    public class UrlToPdfUtil {
    
        //private static final String OUT_PUT_PDF_PATH = "/home/data/pdf/"; //pdf文件的存放路径(Linux)
        private static final String OUT_PUT_PDF_PATH = "C:/Users/Administrator/Desktop/pdf/"; //pdf文件的存放路径(windows)
    
        /**
         * @Title 网页转存为PDF文件
         * @param url 链接地址
         * @param outputFileName 转存的PDF文件名
         */
        public static void urlToPdf(String url, String outputFileName) {
            try {
                String folder = outputFileName.substring(0, 6);
                String outputFile = OUT_PUT_PDF_PATH + folder +"/"+ outputFileName;
                java.io.File targetFile = new java.io.File(outputFile);
                if (!targetFile.getParentFile().exists()) {
                    targetFile.getParentFile().mkdirs(); // 创建父级文件路径
                }
                OutputStream os = new FileOutputStream(outputFile);
                ITextRenderer renderer = new ITextRenderer();
                renderer.setDocument(url);
                ITextFontResolver fontResolver = renderer.getFontResolver();
                //fontResolver.addFont("/usr/share/fonts/chinese/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); //Linux
                fontResolver.addFont("c:/Windows/Fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //windows
                renderer.layout();
                renderer.createPDF(os);
                os.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    }

    3,在controller里调用

      @RequestMapping(value = "pdfDownload")
        public String pdfDownload()  {
            String title="住房协议"+System.currentTimeMillis ()+".pdf";
            String url="http://127.0.0.1:8888/UserFangyuanOrderAgreement";
            UrlToPdfUtil.urlToPdf( url,title);
            return "redirect:UserFangyuanOrderAgreement";
        }

    学习链接1:Java 根据URL,将网页转存为PDF文件 - JAVA - 刘锐芬博客 | LiuR_Fun | lrfun

    学习链接2:java实现HTML转PDF - 云+社区 - 腾讯云 (tencent.com)

  • 相关阅读:
    ORB Test Hanson
    ajax异步传输中的乱码问题
    调用淘宝API遇到的问题
    doc命令查看电脑配置大全
    从关联数组中取得键名
    php图片上传
    doc命令查看电脑配置
    一个空间配置多个虚拟主机
    淘客网站中系统信息获取
    opendir(path,context)
  • 原文地址:https://www.cnblogs.com/lumc5/p/15788319.html
Copyright © 2011-2022 走看看