zoukankan      html  css  js  c++  java
  • 关于使用itext转Html为pdf添加css样式的问题

    使用的jar文件

    xmlworker-5.5.11.jar

    itextpdf-5.5.11.jar

    下载地址:https://pan.baidu.com/s/1i5AIBvZ

    以下为测试代码

    package com.test;
    
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    
    import com.itextpdf.text.Document;
    import com.itextpdf.text.pdf.PdfWriter;
    import com.itextpdf.tool.xml.XMLWorkerHelper;
    
    public class Html2Pdf
    {
        public static void main(String [] args) throws Exception
        {
        String urlsource = getURLSource(new File("D:/test.html"));
        String cssSource = getURLSource(new File("D:/css.css"));
        htmlToPdf(urlsource,cssSource);
        }
    
        // 支持中文
        public static void htmlToPdf(String htmlstr,String cssSource) throws Exception
        {
        String outputFile = "D:/test.pdf";
        Document document = new Document();
        PdfWriter writer = null;
        writer = PdfWriter.getInstance(document, new FileOutputStream(outputFile));
        document.open();
        
        InputStream bis = new ByteArrayInputStream(htmlstr.toString().getBytes());
    InputStream cssis = new ByteArrayInputStream(cssSource.toString().getBytes());

          XMLWorkerHelper.getInstance().parseXHtml(writer, document, bis,cssis);

        document.close();
        }
    
        /**
         * 通过网站域名URL获取该网站的源码
         * 
         * @param url
         * @return String
         * @throws Exception
         */
        public static String getURLSource(File url) throws Exception
        {
        InputStream inStream = new FileInputStream(url);
        // 通过输入流获取html二进制数据
        byte [] data = readInputStream(inStream); // 把二进制数据转化为byte字节数据
        String htmlSource = new String(data);
    
        inStream.close();
        return htmlSource;
        }
    
        /**
         * 把二进制流转化为byte字节数组
         * 
         * @param instream
         * @return byte[]
         * @throws Exception
         */
        public static byte [] readInputStream(InputStream instream) throws Exception
        {
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte [] buffer = new byte[1204];
        int len = 0;
        while ((len = instream.read(buffer)) != -1)
        {
            outStream.write(buffer, 0, len);
        }
        instream.close();
        return outStream.toByteArray();
        }
    }
  • 相关阅读:
    [AGC001F] Wide Swap
    [SCOI2016]幸运数字
    [POI2014]HOTHotels 加强版
    [JSOI2008]球形空间产生器
    JZOJ 3167.查税
    0linux简介
    vmware15pro安装ubuntu18.10时出现显示不全问题
    02目录
    linux系统的基础优化
    1安装操作系统
  • 原文地址:https://www.cnblogs.com/shej123/p/8043250.html
Copyright © 2011-2022 走看看