当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

pd4ml技术html导出pdf,支持中文,兼容Linux

发表于: 2012-08-06   作者:294676001   来源:转载   浏览:
摘要:      java html导出pdf的文章有很多大多都使用的是itext,其实用过的都知道itext有时并不能满足我们的需求,不能兼容html的样式,而且从html页面导出的图片到pdf中也并不好处理。Flying Sauser实现html2pdf,纠错能力差,支持多种中文字体(部分样式不能识别),而且对html的格式也是十分的严格,如果使用一种模版的话使

     java html导出pdf的文章有很多大多都使用的是itext,其实用过的都知道itext有时并不能满足我们的需求,不能兼容html的样式,而且从html页面导出的图片到pdf中也并不好处理。Flying Sauser实现html2pdf,纠错能力差,支持多种中文字体(部分样式不能识别),而且对html的格式也是十分的严格,如果使用一种模版的话使用Flying Sauser技术倒是不错的选择,但是对于不规则的html导出pdf就并不是那么的适用。这时我们就要考虑使用其他的技术,而PD4ML可以满足我们需求,PD4ML实现html2pdf,速度快,纠错能力强可以过滤不规则的html标记,支持多种中文字体,支持css。

package com.pd4ml.pdf; 

import java.awt.Insets; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.StringReader; 

import org.zefer.pd4ml.PD4Constants; 
import org.zefer.pd4ml.PD4ML; 

import com.lowagie.text.FontFactory; 

public class ConverterPdf { 
    public static void main(String[] args) throws Exception { 
        ConverterPdf converter = new ConverterPdf(); 
        converter.generatePDF_2(new File("F:/demo_ch_pd4ml_a.pdf"), "F:/Noname22.html"); 
        File pdfFile = new File("F:/demo_ch_pd4mlssss.pdf"); 
        StringBuffer html = new StringBuffer(); 
        html.append("<html>") 
            .append("<head>") 
            .append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />") 
            .append("</head>") 
            .append("<body>") 
            .append("<font face=\"KaiTi_GB2312\">") 
            .append("<font color='red' size=22>显示中文</font>") 
            .append("</font>") 
            .append("</body></html>"); 
        StringReader strReader = new StringReader(html.toString()); 
        converter.generatePDF_1(pdfFile, strReader); 
    } 
    // 手动构造HTML代码 
    public void generatePDF_1(File outputPDFFile, StringReader strReader) throws Exception { 
        FileOutputStream fos = new FileOutputStream(outputPDFFile); 
        PD4ML pd4ml = new PD4ML(); 
        pd4ml.setPageInsets(new Insets(20, 10, 10, 10)); 
        pd4ml.setHtmlWidth(950); 
        pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4)); 
        pd4ml.useTTF("java:fonts", true); 
        pd4ml.setDefaultTTFs("SimHei", "Arial", "Courier New"); 
        pd4ml.enableDebugInfo(); 
        pd4ml.render(strReader, fos); 
    } 

    // HTML代码来自于HTML文件 
    public void generatePDF_2(File outputPDFFile, String inputHTMLFileName) throws Exception { 
        FileOutputStream fos = new FileOutputStream(outputPDFFile); 
        PD4ML pd4ml = new PD4ML(); 
        pd4ml.setPageInsets(new Insets(5, 20, 20, 20)); 
        pd4ml.setHtmlWidth(1000); 
        pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4)); 
        pd4ml.useTTF("java:fonts", true); 
        pd4ml.setDefaultTTFs("SimHei", "Arial", "Courier New"); 
        pd4ml.enableDebugInfo(); 
        pd4ml.render("file:" + inputHTMLFileName, fos); 
    } 
} 

 附件中有源码,用到了pd4ml.jar,ss_css2.jar,fonts.jar(包太大全部文件在我的csdn上)下载地址:http://download.csdn.net/detail/sy456zsc/4480028

 

pd4ml技术html导出pdf,支持中文,兼容Linux

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
使用iReport,可以很简单的设计出各种报表。对于各式各样的报表,支持中文是一件很基本的事情。在iR
C#导出PDF功能是开发中经常遇到的功能,我们采用第三方的组件,比如 iTextSharp, aspose等,还能搜
iReport导出pdf中文乱码问题解决 使用iReport的过程经常遇到一些乱码的问题,最近用iReport导出pdf
本文由Suzzz原创,发布于 http://www.cnblogs.com/Suzzz/p/4129368.html,转载请保留此声明 ReText
本例可将xml格式数据按xsl模板转化为PDF 1.首先,程序结构如下: 2.FopReport.java // Step 1: Const
http://oudoud.iteye.com/blog/1755054 本例可将xml格式数据按xsl模板转化为PDF 1.首先,程序结构如
文件下载、excel导出、支持中文 导出excel、下载文件 流程:导出都是从服务器下载文件,数据库中的
import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import j
import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import j
import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import j
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号