精华内容
下载资源
问答
  • JAVA生成pdf 的方法很多,iText是一个生成PDF文档的开源Java库。但是用iText生成pdf,有时候很难控制页面的样式。听说flying-saucer 可以对样式进行简单的支持。由于项目需要,用flying-saucer 体验 了一把,感觉...

    JAVA 中生成pdf 的方法很多,iText是一个生成PDF文档的开源Java库。但是用iText生成pdf,有时候很难控制页面的样式。听说flying-saucer 可以对样式进行简单的支持。由于项目需要,用flying-saucer 体验 了一把,感觉还不错。生成pdf 的整体思路:1.利用freemaker 将模版和数据整合成html 2.利用flying-saucer将生成的html 转换pdf .不废话上代码

    1.项目需要引入的包

    e3277687a7bfa881b4e595aabe707348.png

    2.书写利用freemarker 生成html 的html 生成器

    package com.jscredit.zxypt.freemaker;

    import java.io.BufferedWriter;

    import java.io.File;

    import java.io.IOException;

    import java.io.StringWriter;

    import java.util.Map;

    import com.jscredit.zxypt.utils.ResourceLoader;

    import freemarker.template.Configuration;

    import freemarker.template.Template;

    import freemarker.template.TemplateException;

    //html 的生成器

    public class HtmlGenerator {

    public static void main(String[] args) throws Exception {

    // classpath 中模板路径

    String temp = "temple/overseaAssistance.html";

    // classpath 路径

    String outputFileClass = ResourceLoader.getPath("");

    System.out.println(outputFileClass);

    String ss = new File(outputFileClass).getParentFile().getParent();

    System.out.println(ss);

    /* String htmlStr = HtmlGenerator.generate(template, variables);

    System.out.println(htmlStr);*/

    // 生成pdf路径

    //outputFile = outputFile == null ? new File(outputFileClass).getParentFile().getParent()+ "/tmp/"+ System.currentTimeMillis() + ".pdf" : outputFile;

    // 生成pdf路径

    /* OutputStream out = new FileOutputStream(outputFile);

    PdfDocumentGenerator.pdfgenerate(htmlStr, out);*/

    }

    /**

    *

    * 根据上面的main 方法抽出的通用方法

    * 传入模版路径 和数据生成html 返回html 的内容

    * template 模版的路径 variables数据

    */

    public static String generate(String template, Map variables) throws IOException, TemplateException{

    Configuration config = FreemarkerConfiguration.getConfiguation();

    //Template tp = configuration.getTemplate("overseaAssistance.html");

    Template tp = config.getTemplate(template);

    StringWriter stringWriter = new StringWriter();

    BufferedWriter writer = new BufferedWriter(stringWriter);

    tp.setEncoding("UTF-8");

    tp.process(variables, writer);

    String htmlStr = stringWriter.toString();

    writer.flush();

    writer.close();

    return htmlStr;

    }

    }

    3.书写生成pdf 的生成器

    package com.jscredit.zxypt.freemaker;

    import java.io.ByteArrayInputStream;

    import java.io.File;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.OutputStream;

    import java.util.Map;

    import javax.xml.parsers.DocumentBuilder;

    import javax.xml.parsers.DocumentBuilderFactory;

    import org.apache.log4j.Logger;

    import org.w3c.dom.Document;

    import org.xhtmlrenderer.pdf.ITextRenderer;

    import com.jscredit.zxypt.utils.ResourceLoader;

    import com.lowagie.text.pdf.BaseFont;

    import freemarker.template.TemplateException;

    //pdf的生成器

    public class PdfDocumentGenerator {

    private final static Logger logger = Logger.getLogger(PdfDocumentGenerator.class);

    private final static HtmlGenerator htmlGenerator;

    static {

    htmlGenerator = new HtmlGenerator();

    }

    /*

    *

    * 根据html的内容生成pdf

    *

    */

    public static void pdfgenerate(String htmlContent, String outputFile)throws Exception{

    OutputStream out = null;

    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

    Document doc = builder.parse(new ByteArrayInputStream(htmlContent.getBytes("UTF-8")));

    ITextRenderer iTextRenderer = new ITextRenderer();

    // classpath 路径

    String outputFileClass = ResourceLoader.getPath("");

    //添加字体,以支持中文

    iTextRenderer.getFontResolver().addFont(outputFileClass+"fronts/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

    iTextRenderer.getFontResolver().addFont(outputFileClass+"fronts/SIMSUN.TTC", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

    File f = new File(outputFile);

    if (f != null && !f.getParentFile().exists()) {

    f.getParentFile().mkdir();

    }

    out = new FileOutputStream(outputFile);

    iTextRenderer.setDocument(doc, null);

    iTextRenderer.layout();

    iTextRenderer.createPDF(out);

    out.close();

    }

    /*

    *

    * 对上面的方法再进行封装

    *

    */

    public boolean generate(String template, Map variables,String outputFile) throws IOException, TemplateException{

    String htmlContent = this.htmlGenerator.generate(template,variables);

    System.out.println("+++++++++"+htmlContent);//打印出html 的内容方便查看是否是html 的时候已经出现乱码

    try {

    this.pdfgenerate(htmlContent, outputFile);

    } catch (Exception e) {

    e.printStackTrace();

    }

    return true;

    }

    }

    4.书写freemarker的基本配置

    package com.jscredit.zxypt.freemaker;

    import java.io.File;

    import java.io.IOException;

    import com.jscredit.zxypt.utils.ResourceLoader;

    import freemarker.template.Configuration;

    /*

    * freemaker 的配置

    */

    public class FreemarkerConfiguration {

    private static Configuration config = null;

    /**

    * 获取 FreemarkerConfiguration

    *

    * @Title: getConfiguation

    * @Description:

    * @return

    */

    public static synchronized Configuration getConfiguation() {

    if (config == null) {

    setConfiguation();

    }

    return config;

    }

    /**

    * 设置 配置

    * @Title: setConfiguation

    * @Description:

    */

    private static void setConfiguation() {

    config = new Configuration();

    String path = ResourceLoader.getPath("");

    System.out.println(">>>>>>>>>>>>>>>>>>>"+path);

    try {

    config.setDirectoryForTemplateLoading(new File(path));

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    5.书写获取资源的resources工具类

    package com.jscredit.zxypt.utils;

    import java.net.URL;

    //获取项目资源的工具类

    public class ResourceLoader {

    public static String CLASS_PATH_PREFIX ="classpath:";

    /**

    * classpath中获取资源

    * @Title: getResource

    * @Description: classpath中获取资源

    * @param resource

    * @return

    */

    public static URL getResource(String resource) {

    ClassLoader classLoader = null;

    classLoader = Thread.currentThread().getContextClassLoader();

    return classLoader.getResource(resource);

    }

    /**

    * classpath 中搜索路径

    * @Title: getPath

    * @Description:

    * @param resource

    * @return

    */

    public static String getPath(String resource){

    if(resource!=null){

    if(resource.startsWith(CLASS_PATH_PREFIX)){

    resource = getPath("")+resource.replaceAll(CLASS_PATH_PREFIX, "");

    }

    }

    URL url = getResource(resource);

    if(url==null)

    return null;

    return url.getPath().replaceAll("%20", " ");

    }

    /**

    *

    * @Title: getPath

    * @Description:

    * @param resource

    * @param clazz

    * @return

    */

    public static String getPath(String resource,Class clazz){

    URL url = getResource(resource, clazz);

    if(url==null)

    return null;

    return url.getPath().replaceAll("%20", " ");

    }

    /**

    * 指定class中获取资源

    * @Title: getResource

    * @Description: 指定class中获取资源

    * @param resource

    * @param clazz

    * @return

    */

    public static URL getResource(String resource,Class clazz){

    return clazz.getResource(resource);

    }

    }

    这样就可以轻松实现Java 的html转pdf 了。附上生成 的效果图:

    10b8b44f1e241a13978d03cb7e7001c6.png

    另外需要jar 的可以再我博客里面去下载

    展开全文
  • 1、IText实现html2pdf,速度快,纠错能力差,支持中文(要求HTML使用unicode编码),但中支持一种中文字体,开源。2、Flying Sauser实现html2pdf,纠错能力差,支持多种中文字体(部分样式不能识别),开源。3、PD4ML...

    1、IText实现html2pdf,速度快,纠错能力差,支持中文(要求HTML使用unicode编码),但中支持一种中文字体,开源。

    2、Flying Sauser实现html2pdf,纠错能力差,支持多种中文字体(部分样

    式不能识别),开源。

    3、PD4ML实现html2pdf,速度快,纠错能力强,支持多种中文字体,商业。(一)IText

    官网:http://www.doczj.com/doc/383e2e0b804d2b160b4ec06e.html/

    测试案例:TestIText.java

    依赖jar包:iText-2.0.8.jar、iTextAsian.jar(支持中文)

    下面只是一个小的测试案例,如果项目中使用到了该组件可以参考API完成

    项目组中相应的功能!

    [c-sharp]view plaincopyprint?

    1.import java.io.FileOutputStream;

    2.import java.io.FileReader;

    3.import java.util.ArrayList;

    4.import com.lowagie.text.Document;

    5.import com.lowagie.text.Element;

    6.import com.lowagie.text.Font;

    7.import com.lowagie.text.PageSize;

    8.import com.lowagie.text.Paragraph;

    9.import com.lowagie.text.html.simpleparser.HTMLWorker;

    10.import

    com.lowagie.text.html.simpleparser.StyleSheet;

    11.import com.lowagie.text.pdf.BaseFont;

    12.import com.lowagie.text.pdf.PdfWriter;

    13.public class TestIText{

    14.public static void main(String[] args) {

    15.TestIText ih = new TestIText();

    16.ih.htmlCodeComeFromFile("D://Test//iText.html",

    "D://Test//iText_1.pdf");

    展开全文
  • 1、IText实现html2pdf,速度快,纠错能力差,支持中文(要求HTML使用unicode编码),但中支持一种中文字体,开源。2、Flying Sauser实现html2pdf,纠错能力差,支持多种中文字体(部分样式不能识别),开源。3、PD4ML...

    1、IText实现html2pdf,速度快,纠错能力差,支持中文(要求HTML使用unicode编码),但中支持一种中文字体,开源。

    2、Flying Sauser实现html2pdf,纠错能力差,支持多种中文字体(部分样式不能识别),开源。

    3、PD4ML实现html2pdf,速度快,纠错能力强,支持多种中文字体,商业。

    (一)IText

    测试案例:TestIText.Java

    依赖jar包:iText-2.0.8.jar、iTextAsian.jar(支持中文)

    下面只是一个小的测试案例,如果项目中使用到了该组件可以参考API完成项目组中相应的功能!

    import java.io.FileOutputStream;

    import java.io.FileReader;

    import java.util.ArrayList;

    import com.lowagie.text.Document;

    import com.lowagie.text.Element;

    import com.lowagie.text.Font;

    import com.lowagie.text.PageSize;

    import com.lowagie.text.Paragraph;

    import com.lowagie.text.html.simpleparser.HTMLWorker;

    import com.lowagie.text.html.simpleparser.StyleSheet;

    import com.lowagie.text.pdf.BaseFont;

    import com.lowagie.text.pdf.PdfWriter;

    public class TestIText{

    public static void main(String[] args) {

    TestIText ih = new TestIText();

    ih.htmlCodeComeFromFile("D://Test//iText.html", "D://Test//iText_1.pdf");

    ih.htmlCodeComeString("Hello中文", "D://Test//iText_2.pdf");

    }

    public void htmlCodeComeFromFile(String filePath, String pdfPath) {

    Document document = new Document();

    try {

    StyleSheet st = new StyleSheet();

    st.loadTagStyle("body", "leading", "16,0");

    PdfWriter.getInstance(document, new FileOutputStream(pdfPath));

    document.open();

    ArrayList p = HTMLWorker.parseToList(new FileReader(filePath), st);

    for(int k = 0; k 

    document.add((Element)p.get(k));

    }

    document.close();

    System.out.println("文档创建成功");

    }catch(Exception e) {

    e.printStackTrace();

    }

    }

    public void htmlCodeComeString(String htmlCode, String pdfPath) {

    Document doc = new Document(PageSize.A4);

    try {

    PdfWriter.getInstance(doc, new FileOutputStream(pdfPath));

    doc.open();

    // 解决中文问题

    BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

    Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);

    Paragraph t = new Paragraph(htmlCode, FontChinese);

    doc.add(t);

    doc.close();

    System.out.println("文档创建成功");

    }catch(Exception e) {

    e.printStackTrace();

    }

    }

    }

    (二)Flying Sauser

    依赖jar包:iText-2.0.8.jar、iTextAsian.jar、core-renderer.jar

    默认情况下,core-renderer.jar对中文是不能进行换行的,如果想解决换行问题可以去http://bettereveryday.javaeye.com/blog/611561下载一个jar包,该包对源代码做了稍加修改.

    下面只是一个小的测试案例,如果项目中使用到了该组件可以参考API完成项目组中相应的功能!

    import java.io.File;

    import java.io.FileOutputStream;

    import java.io.OutputStream;

    import org.xhtmlrenderer.pdf.ITextFontResolver;

    import org.xhtmlrenderer.pdf.ITextRenderer;

    import com.lowagie.text.pdf.BaseFont;

    public class TestFlyingSauser {

    public static void main(String[] args) throws Exception {

    demo_1();

    demo_2();

    }

    // 不支持中文

    public static void demo_1() throws Exception {

    String inputFile = "D:/Test/flying.html";

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

    String outputFile = "D:/Test/flying.pdf";

    OutputStream os = new FileOutputStream(outputFile);

    ITextRenderer renderer = new ITextRenderer();

    renderer.setDocument(url);

    renderer.layout();

    renderer.createPDF(os);

    os.close();

    }

    // 支持中文

    public static void demo_2() throws Exception {

    String outputFile = "D:/Test/demo_3.pdf";

    OutputStream os = new FileOutputStream(outputFile);

    ITextRenderer renderer = new ITextRenderer();

    ITextFontResolver fontResolver = renderer.getFontResolver();

    fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

    StringBuffer html = new StringBuffer();

    // DOCTYPE 必需写否则类似于 这样的字符解析会出现错误

    html.append("html PUBLIC /"-//W3C//DTD XHTML 1.0 Transitional//EN/" /"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd/">");

    html.append("").append("

    ")

    .append("")

    .append("

    body {font-family: SimSun;}

    -->")

    .append("")

    .append("

    ");

    html.append("

    支持中文!
    ");

    html.append("");

    renderer.setDocumentFromString(html.toString());

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

    // renderer.getSharedContext().setBaseURL("file:/F:/teste/html/");

    renderer.layout();

    renderer.createPDF(os);

    os.close();

    }

    }

    (三)PD4ML

    依赖jar包:pd4ml_demo.jar、pd4ml__css2.jar、fonts.jar

    下面只是一个小的测试案例,如果项目中使用到了该组件可以参考API完成项目组中相应的功能!

    import java.awt.Insets;

    import java.io.File;

    import java.io.FileOutputStream;

    import java.io.StringReader;

    import org.zefer.pd4ml.PD4Constants;

    import org.zefer.pd4ml.PD4ML;

    public class Converter {

    public static void main(String[] args) throws Exception {

    Converter converter = new Converter();

    converter.generatePDF_2(new File("D:/Test/demo_ch_pd4ml_a.pdf"), "D:/Test/a.htm");

    File pdfFile = new File("D:/Test/demo_ch_pd4ml.pdf");

    StringBuffer html = new StringBuffer();

    html.append("")

    .append("

    ")

    .append("")

    .append("")

    .append("

    ")

    .append("")

    .append("显示中文")

    .append("")

    .append("");

    StringReader strReader = new StringReader(html.toString());

    converter.generatePDF_1(pdfFile, strReader);

    }

    // 手动构造HTML代码

    public void generatePDF_1(File outputPDFFile, StringReader strReader) throws Exception {

    FileOutputStream fos = new FileOutputStream(outputPDFFile);

    PD4ML pd4ml = new PD4ML();

    pd4ml.setPageInsets(new Insets(20, 10, 10, 10));

    pd4ml.setHtmlWidth(950);

    pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4));

    pd4ml.useTTF("java:fonts", true);

    pd4ml.setDefaultTTFs("KaiTi_GB2312", "KaiTi_GB2312", "KaiTi_GB2312");

    pd4ml.enableDebugInfo();

    pd4ml.render(strReader, fos);

    }

    // HTML代码来自于HTML文件

    public void generatePDF_2(File outputPDFFile, String inputHTMLFileName) throws Exception {

    FileOutputStream fos = new FileOutputStream(outputPDFFile);

    PD4ML pd4ml = new PD4ML();

    pd4ml.setPageInsets(new Insets(20, 10, 10, 10));

    pd4ml.setHtmlWidth(950);

    pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4));

    pd4ml.useTTF("java:fonts", true);

    pd4ml.setDefaultTTFs("KaiTi_GB2312", "KaiTi_GB2312", "KaiTi_GB2312");

    pd4ml.enableDebugInfo();

    pd4ml.render("file:" + inputHTMLFileName, fos);

    }

    }

    参考资料:

    生成PDF文档的方案大致就这些了,希望能够给大家带来帮助!如果上面的三种方案都还不能满足项目组的需求哪就只有去买商业软件了。

    转载自--http://blog.csdn.net/zdtwyjp/article/details/5769353#

    展开全文
  • java实现HTML 生成pdf

    千次阅读 2017-01-23 10:44:09
    JAVA生成pdf 的方法很多,iText是一个生成PDF文档的开源Java库。但是用iText生成pdf,有时候很难控制页面的样式。听说flying-saucer 可以对样式进行简单的支持。由于项目需要,用flying-saucer 体验 了一把,感觉...

    JAVA 中生成pdf 的方法很多,iText是一个生成PDF文档的开源Java库。但是用iText生成pdf,有时候很难控制页面的样式。听说flying-saucer 可以对样式进行简单的支持。由于项目需要,用flying-saucer 体验 了一把,感觉还不错。生成pdf 的整体思路:1.利用freemaker 将模版和数据整合成html 2.利用flying-saucer将生成的html 转换pdf .不废话上代码
    1.项目需要引入的包
    这里写图片描述
    2.书写利用freemarker 生成html 的html 生成器

    package com.jscredit.zxypt.freemaker;
    
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.IOException;
    import java.io.StringWriter;
    import java.util.Map;
    
    import com.jscredit.zxypt.utils.ResourceLoader;
    
    import freemarker.template.Configuration;
    import freemarker.template.Template;
    import freemarker.template.TemplateException;
    
    
    //html 的生成器
    
    public class HtmlGenerator {
    
    
        public static void main(String[] args) throws Exception { 
    
              // classpath 中模板路径
               String temp = "temple/overseaAssistance.html";
              // classpath 路径
               String outputFileClass = ResourceLoader.getPath("");
               System.out.println(outputFileClass);
               String ss = new File(outputFileClass).getParentFile().getParent();
               System.out.println(ss);
    
              /* String htmlStr = HtmlGenerator.generate(template, variables);
               System.out.println(htmlStr);*/
    
                // 生成pdf路径
                //outputFile = outputFile == null ? new File(outputFileClass).getParentFile().getParent()+ "/tmp/"+ System.currentTimeMillis() + ".pdf" : outputFile;
    
    
    
            // 生成pdf路径
              /* OutputStream out = new FileOutputStream(outputFile);
               PdfDocumentGenerator.pdfgenerate(htmlStr, out);*/
          } 
         /**    
         * 
         * 根据上面的main 方法抽出的通用方法
         * 传入模版路径 和数据生成html 返回html 的内容
         * template 模版的路径 variables数据
         */
          public static String generate(String template, Map<String,Object> variables) throws IOException, TemplateException{
    
                Configuration config = FreemarkerConfiguration.getConfiguation();
                //Template tp = configuration.getTemplate("overseaAssistance.html");
                Template tp = config.getTemplate(template);
                StringWriter stringWriter = new StringWriter();  
                BufferedWriter writer = new BufferedWriter(stringWriter);  
                tp.setEncoding("UTF-8");  
                tp.process(variables, writer);  
                String htmlStr = stringWriter.toString();
                writer.flush();  
                writer.close();
                return htmlStr;
          } 
    }
    

    3.书写生成pdf 的生成器

    package com.jscredit.zxypt.freemaker;
    
    import java.io.ByteArrayInputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.Map;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    
    import org.apache.log4j.Logger;
    import org.w3c.dom.Document;
    import org.xhtmlrenderer.pdf.ITextRenderer;
    
    import com.jscredit.zxypt.utils.ResourceLoader;
    import com.lowagie.text.pdf.BaseFont;
    
    import freemarker.template.TemplateException;
    
    
    
    //pdf的生成器
    public class PdfDocumentGenerator {
    
        private final static Logger logger = Logger.getLogger(PdfDocumentGenerator.class);
    
        private final static HtmlGenerator htmlGenerator;
        static {
            htmlGenerator = new HtmlGenerator();
        }
    
    
        /*
         * 
         * 根据html的内容生成pdf 
         * 
         */
        public static void pdfgenerate(String htmlContent, String outputFile)throws Exception{
                OutputStream out = null;
    
                DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
                Document doc = builder.parse(new ByteArrayInputStream(htmlContent.getBytes("UTF-8")));
                ITextRenderer iTextRenderer = new ITextRenderer();
                // classpath 路径
                String outputFileClass = ResourceLoader.getPath("");
                 //添加字体,以支持中文
                iTextRenderer.getFontResolver().addFont(outputFileClass+"fronts/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
                iTextRenderer.getFontResolver().addFont(outputFileClass+"fronts/SIMSUN.TTC", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
                File f = new File(outputFile);
                if (f != null && !f.getParentFile().exists()) {
                    f.getParentFile().mkdir();
                }
                out = new FileOutputStream(outputFile);
                iTextRenderer.setDocument(doc, null);
                iTextRenderer.layout();
                iTextRenderer.createPDF(out);
                out.close();
        }
    
        /*
         * 
         * 对上面的方法再进行封装
         * 
         */
        public boolean generate(String template, Map<String,Object> variables,String outputFile) throws IOException, TemplateException{
    
                String htmlContent = this.htmlGenerator.generate(template,variables);
                System.out.println("+++++++++"+htmlContent);//打印出html 的内容方便查看是否是html 的时候已经出现乱码
                try {
                    this.pdfgenerate(htmlContent, outputFile);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return true;
        }
    }
    

    4.书写freemarker的基本配置

    package com.jscredit.zxypt.freemaker;
    
    import java.io.File;
    import java.io.IOException;
    
    import com.jscredit.zxypt.utils.ResourceLoader;
    
    import freemarker.template.Configuration;
    
    
    
    /*
     * freemaker 的配置
     */
    
    public class FreemarkerConfiguration {
    
    
        private static Configuration config = null;
    
        /**
         * 获取 FreemarkerConfiguration
         * 
         * @Title: getConfiguation
         * @Description:
         * @return
         */
        public static synchronized Configuration getConfiguation() {
            if (config == null) {
                setConfiguation();
            }
            return config;
        }
    
        /**
         * 设置 配置
         * @Title: setConfiguation
         * @Description: 
         */
        private static void setConfiguation() {
            config = new Configuration();
            String path = ResourceLoader.getPath("");
            System.out.println(">>>>>>>>>>>>>>>>>>>"+path);
            try {
                config.setDirectoryForTemplateLoading(new File(path));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    
    
    }
    

    5.书写获取资源的resources工具类

    package com.jscredit.zxypt.utils;
    
    import java.net.URL;
    
    //获取项目资源的工具类
    
    public class ResourceLoader {
    
        public static String CLASS_PATH_PREFIX ="classpath:";
    
    
    
         /**
           * classpath中获取资源
           * @Title: getResource
           * @Description: classpath中获取资源
           * @param resource
           * @return
           */
    
         public static URL getResource(String resource) {
                ClassLoader classLoader = null;
                classLoader = Thread.currentThread().getContextClassLoader();
                return classLoader.getResource(resource);
              } 
    
    
         /**
           *  classpath 中搜索路径
           * @Title: getPath
           * @Description: 
           * @param resource
           * @return
           */
         public static String getPath(String resource){
              if(resource!=null){
                  if(resource.startsWith(CLASS_PATH_PREFIX)){
                      resource = getPath("")+resource.replaceAll(CLASS_PATH_PREFIX, "");
                  }
              }
              URL url = getResource(resource);
              if(url==null)
                  return null;
              return url.getPath().replaceAll("%20", " ");
          }
    
    
         /**
           * 
           * @Title: getPath
           * @Description: 
           * @param resource
           * @param clazz
           * @return
           */
          public static String getPath(String resource,Class clazz){
              URL url = getResource(resource, clazz);
              if(url==null)
                  return null;
              return url.getPath().replaceAll("%20", " ");
          }
    
          /**
           * 指定class中获取资源
           * @Title: getResource
           * @Description: 指定class中获取资源
           * @param resource
           * @param clazz
           * @return
           */
          public static URL getResource(String resource,Class clazz){
              return clazz.getResource(resource);
          }
    
    
    
    
    }

    这样就可以轻松实现Java 的html转pdf 了。附上生成 的效果图:
    这里写图片描述
    另外需要jar 的可以再我博客里面去下载

    展开全文
  • 1. 开源框架支持iText,生成PDF文档,还支持将XML、Html文件转化为PDF文件;Apache PDFBox,生成、合并PDF文档;docx4j,生成docx、pptx、xlsx文档,支持转换为PDF格式。比较:iText开源协议为AGPL,而其他两个...
  • 转载自 Java实现HTML代码生成PDF文档1、IText实现html2pdf,速度快,纠错能力差,支持中文(要求HTML使用unicode编码),但中支持一种中文字体,开源。2、Flying Sauser实现html2pdf,纠错能力差,支持多种中文字体...
  • 1. 开源框架支持iText,生成PDF文档,还支持将XML、Html文件转化为PDF文件;Apache PDFBox,生成、合并PDF文档;docx4j,生成docx、pptx、xlsx文档,支持转换为PDF格式。比较:iText开源协议为AGPL,而其他两个...
  • ... ...   1、IText实现html2pdf,速度快,纠错能力差,支持中文(要求HTML使用unicode编码),但中支持一种中文字体,开源。   2、Flying Sauser实现html2pdf,纠错能力差...
  • iText5实现Java生成PDF文件完整版

    万次阅读 多人点赞 2019-04-25 21:39:22
    最近项目中使用到Java实现导出PDF文件,经过一番参考研究最终决定使用itextpdf来实现,当然也可以参考 PDF Java类库:Spire.PDF for Java(https://www.e-iceblue.cn/spirepdfjava/create-pdf-in-java.html)。...
  • 主要介绍了Java实现Html转Pdf的方法,实例分析了java基于ITextRenderer类操作页面及系统自带字体生成pdf文件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 项目需求是要导出带水印的pdf,表格样式还是有点复杂的,之前考虑过用itextpdf根据html生成pdf,但框架用的是前后台分 离的,前台用的是react,并且是在没有展示出表格的情况下,所以没法通过前台获取html代码块...
  • iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 官网:http://itextpdf.com/ 第一部分 建立第...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 346
精华内容 138
关键字:

java实现html生成pdf

java 订阅