IText 自html tag 转为 pdf 用java 实现,实例完整。拿出来共享,谢谢。

 这东西搞得我头都大了,望各位高手指点。

 

说明:

(这个类运行环境 myeclipse6.6 jdk1.5 windows7)

需要jar包:(三个)

itextpdf-5.1.5.jar   

bcprov-jdk15-146.jar 

iTextAsian.jar

 

使用和生成的 pdf html 去 本人的资源列表下载

 

存在问题:生成的pdf 里面的table 只有boder 没有内容,请教各位高手。(还有html格式转换为pdf后 不够细腻)

 

 

 

 

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.StringReader;
import java.util.List;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.html.simpleparser.HTMLWorker;
import com.itextpdf.text.html.simpleparser.StyleSheet;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;

public class testPDF {

	public static String path = System.getProperty("user.dir") + "/WebRoot/";

	public static String outputFile = path + "fistdoc.pdf";
	public static String outputFile2 = path + "fistdoc2.pdf";

	public void test() throws DocumentException, IOException {
		//-----加载 html 流 开始
		BufferedReader br = new BufferedReader(new InputStreamReader(
				new FileInputStream(path + "hetong2.html")));
		String data = null;
		StringBuffer b = new StringBuffer();

		while ((data = br.readLine()) != null) {
			System.out.println(data);
			b.append(data);
		}
		br.close();
		//----- 加载 html 流 结束
		
		//-----输出 pdf 流 开始
		OutputStream os = new FileOutputStream(outputFile2);
		//-----输出 pdf 流 结束
		Document doc = new Document();
		//-----中文过滤 开始
		BaseFont baseFontChinese = BaseFont.createFont("STSong-Light",
				"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
		Font fontChinese = new Font(baseFontChinese, 12, Font.NORMAL);
		//-----中文过滤 结束
		
		//-----创建监听器
		PdfWriter writer = PdfWriter.getInstance(doc, os);
		//-----加权限 开始
		writer.setPdfVersion(writer.PDF_VERSION_1_7);
		int perssion = writer.ALLOW_PRINTING | writer.HideMenubar
				| writer.HideToolbar | writer.HideWindowUI
				| writer.ALLOW_FILL_IN;

		writer.setEncryption(null, null, perssion,
				writer.STANDARD_ENCRYPTION_40);
		//-----加权限 结束
		
		//----- html 流 加入document 开始
		Paragraph context = new Paragraph();
		StyleSheet ss = new StyleSheet();
		List htmlList = HTMLWorker.parseToList(new StringReader(b.toString()),
				ss);
		for (int i = 0; i < htmlList.size(); i++) {
			Element e = (Element) htmlList.get(i);
			context.setFont(fontChinese);
			context.add(e);
		}
		//----- html 流 加入document 结束
		
		//----- 打开document
		doc.open();
		
		//加入html 流 动作
		doc.add(context);
		
		//----- 关闭document
		doc.close();

	}

	public static void main(String[] args) throws DocumentException,
			IOException {
		testPDF f = new testPDF();

		f.test();

	}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq540061627

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值