码迷,mamicode.com
首页 > Web开发 > 详细

关于使用itext转Html为pdf添加css样式的问题

时间:2017-12-15 15:40:38      阅读:571      评论:0      收藏:0      [点我收藏+]

标签:read   bis   throw   null   cep   text   https   pack   通过   

 

使用的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();
    }
}

 

关于使用itext转Html为pdf添加css样式的问题

标签:read   bis   throw   null   cep   text   https   pack   通过   

原文地址:http://www.cnblogs.com/shej123/p/8043250.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!