iText 处理html格式邮件

本文介绍了一个Java程序实例,该程序利用IText库将包含HTML内容的电子邮件转换为PDF文件。通过创建自定义HTML解析器,并设置中文字体支持,实现了将HTML文本及邮件元数据准确地输出到PDF文档中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.InputStream;

import org.xml.sax.InputSource;

import com.lowagie.text.DocListener;
import com.lowagie.text.html.HtmlParser;
import com.lowagie.text.html.SAXmyHtmlHandler;
import com.lowagie.text.pdf.BaseFont;

public class ITextSurportHtmlParser extends HtmlParser {
    public ITextSurportHtmlParser(){
        super();
    }
   
    public void goGB(DocListener document, InputStream is) throws Exception{
       
			BaseFont bfChinese = BaseFont.createFont("/MSYH.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);    

            parser.parse(new InputSource(is), new SAXmyHtmlHandler(document, bfChinese));
       
 
    }
}
 
Document document = new Document(); 
		try {
			FileOutputStream f=new FileOutputStream(filePath+File.separator
					+ "email.pdf");
			PdfWriter.getInstance(document,f);
			document.open();
			BaseFont bfChinese = BaseFont.createFont("/MSYH.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);    
			document.add(new Paragraph("Subject:"+email.getStrsubject(), new Font(bfChinese, 10, Font.NORMAL)));
			document.add(new Paragraph("From:"+email.getStrfrom(), new Font(bfChinese, 10, Font.NORMAL)));
			document.add(new Paragraph("To:"+email.getStrto(), new Font(bfChinese, 10, Font.NORMAL)));
			document.add(new Paragraph("Dtattime:"+email.getDtattime(), new Font(bfChinese, 10, Font.NORMAL)));
			document.add(new Paragraph("Content:", new Font(bfChinese, 10, Font.NORMAL)));
			try{
				String htmText = new String(("<html>"+email.getStrcontent()+"</html>").getBytes("UTF-8"),"ISO8859-1");
	        	StringBufferInputStream html = new StringBufferInputStream(htmText);
	        	ITextSurportHtmlParser p = new ITextSurportHtmlParser();               
	            p.goGB(document, html);
			}catch(Exception e){
				System.out.println("邮件内容不是标准的XHTML,原文输出!");
				document.add(new Paragraph(email.getStrcontent(), new Font(bfChinese, 10, Font.NORMAL)));
			}
			document.close(); 
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值