zoukankan      html  css  js  c++  java
  • 160603、使用pd4ml.jar和ss_css2.jar转pdf的工具类

    注意:需要导入pd4ml.jar和ss_css2.jar

    import java.awt.Insets;
    import java.io.BufferedInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.StringReader;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.security.InvalidParameterException;
    import org.zefer.pd4ml.PD4Constants;
    import org.zefer.pd4ml.PD4ML;
    /***
     * pd4ml.jar,ss_css2.jar
     * @author admin
     */
    public class ToPdfUtils {
        protected int topValue = 10;
        protected int leftValue = 20;
        protected int rightValue = 10;
        protected int bottomValue = 10;
        protected int userSpaceWidth = 1300;
        public static void main(String[] args) throws InvalidParameterException, MalformedURLException, IOException {
            ToPdfUtils pdfUtils = new ToPdfUtils();
    //        pdfUtils.doConversion("http://pd4ml.com/sample.htm", "g:/test/pd4ml.pdf");//网络地址
            String html = readFile("g:/test/confirm.html", "UTF-8");  //文件地址
            pdfUtils.doConversion2(html, "g:/test/pd4ml2.pdf");  
        }
        
        /**将文件转换成pdf,源文件为http://开头的网络地址*/
        public void doConversion(String url, String outputPath)
                throws InvalidParameterException, MalformedURLException,
                IOException {
            File output = new File(outputPath);
            FileOutputStream fos = new FileOutputStream(output);
            PD4ML pd4ml = new PD4ML();
            pd4ml.setHtmlWidth(userSpaceWidth);
            pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4));
            pd4ml.setPageInsetsMM(new Insets(topValue, leftValue, bottomValue,rightValue));
            pd4ml.addStyle("BODY {margin: 0}", true);
            pd4ml.useTTF("java:fonts", true);//src下fonts文件夹中的字体设置
            pd4ml.render(new URL(url), fos);
            fos.close();
            System.out.println(outputPath + " done.");
        }
        
        public void doConversion2( String htmlDocument, String outputPath )   
                throws InvalidParameterException, MalformedURLException, IOException {  
            PD4ML pd4ml = new PD4ML();  
            pd4ml.setHtmlWidth(userSpaceWidth);
            // 选择目标文件的格式
            pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4));   
            // 设置边距  
            pd4ml.setPageInsetsMM(new Insets(topValue, leftValue, bottomValue, rightValue));   
            //原来的html文档也有边距,可以通过这个方式压缩
            pd4ml.addStyle("BODY {margin: 0}", true);  
            // 如果内置的基本pdf字体不够用,可以设置成non-Latin,TTF能够做到这一点
            pd4ml.useTTF("java:fonts", true);  
            ByteArrayOutputStream baos = new ByteArrayOutputStream();  
            pd4ml.render(new StringReader(htmlDocument), baos);   
            baos.close();  
            File output = new File(outputPath);  
            FileOutputStream fos = new FileOutputStream(output);  
            fos.write( baos.toByteArray() );  
            fos.close();  
            System.out.println( outputPath + " done." );  
        }  
     
        private final static String readFile( String path, String encoding ) throws IOException {  
            File f = new File( path );  
            FileInputStream is = new FileInputStream(f);  
            BufferedInputStream bis = new BufferedInputStream(is);  
            ByteArrayOutputStream fos = new ByteArrayOutputStream();  
            byte buffer[] = new byte[2048];  
            int read;  
            do {  
                read = is.read(buffer, 0, buffer.length);  
                if (read > 0) {   
                    fos.write(buffer, 0, read);   
                }  
            } while (read > -1);  
            fos.close();  
            bis.close();  
            is.close();  
            return fos.toString(encoding);  
        }  
    }

  • 相关阅读:
    使用阿里的EasyExcel实现表格导出功能
    推荐一款实用的java工具包---Hutool
    MySQL(二)锁机制【表级锁、页面锁、行级锁】
    MySQL(一)存储引擎
    使用redis的increment()方法实现计数器功能
    Redis缓存浅析
    Dubbo服务介绍
    SpringMVC工作执行流程详解
    GC垃圾回收机制----GC回收算法(GC机制必会知识点)
    数据结构之常见的数据结构
  • 原文地址:https://www.cnblogs.com/zrbfree/p/5566503.html
Copyright © 2011-2022 走看看