`

html转pdf

    博客分类:
  • java
阅读更多
itextpdf是常用html转pdf的工具,但对界面布局的要求较高(比如使用div布局如position:absolute支持不好),结合flying saucer,能完美支持,整个转换过程:
vm---->html---->pdf

vm模板,其中font-family很重要(方正兰亭黑),用于支持中文(底下会讲到)
<!DOCTYPE html>
<html>
 <head>
<meta charset="utf-8" />
  <style type="text/css">
	body{
	font-family: "FZLanTingHei-R-GB18030"
	}
            .shape{ position:absolute; overflow: hidden; }
            .shape img{ width:100%;}
            .contenteditable{ display: table-cell; }
            .text-shape{ width: 100%; height: 100%; display: table; padding:0; cursor: default;  position: absolute;}
			  .vertical-line {
      width: 1px;
      height: 30mm;
      background: #000;
    }
            </style>
 </head>
 <body>
  <div style="position: relative;width: 100mm;height:150mm;">
   <div id="element_page_C7A27138B84E839E">


vm转html
public String initVelocityEngine() {
		VelocityEngine ve = new VelocityEngine();  
		Properties p = new Properties(); 
		p.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, TestVmToPdf.class.getResource("/tpl").getPath());
        ve.init(p);  
        Template template = ve.getTemplate("test.vm");
VelocityContext context = new VelocityContext(); 
context.put("username", "张三");
StringWriter writer = new StringWriter();  
        template.merge(context, writer);
        return writer.toString();
	}


html转pdf,其中使用的字体要与vm中的font-family对应,以便支持中文
public void createPDFFromString(String html, String pdf)
            throws IOException, DocumentException {
        String outputFile = pdf;  
        OutputStream os = new FileOutputStream(outputFile);  
  
        ITextRenderer renderer = new ITextRenderer();  
        // PDFEncryption pdfEncryption = new  
        // PDFEncryption(null,null,PdfWriter.ALLOW_PRINTING);  
        // renderer.setPDFEncryption(pdfEncryption); //只有打印权限的  
        //renderer.setDocument(new File(url));  
        renderer.setDocumentFromString(html);
  
        // 解决中文问题  
        ITextFontResolver fontResolver = renderer.getFontResolver();  
        try {  
            fontResolver.addFont("/configinfo/FZLTH_GB18030.TTF",  
                    BaseFont.IDENTITY_H, false);  
        } catch (DocumentException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } 
  
        renderer.layout();  
        try {  
            renderer.createPDF(os);  
        } catch (DocumentException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } 
    }


中文支持的原理:
flying saucer、会首先确认font family,如果页面设置,则取页面中的,否则取程序默认的CSSName.FONT_FAMILY(实际上就是serif)。然后,根据font family从org.xhtmlrenderer.pdf.ITextFontResolver对象中的_fontFamilies集合中取得字体,若集合中不存在对应的字体则再取默认(即Serif)
引自:http://blog.csdn.net/adverse/article/details/6105355

其他生产pdf方案,参见:
http://blog.csdn.net/zdtwyjp/article/details/5769353
分享到:
评论

相关推荐

    android_HTML转PDF

    本项目“android_HTML转PDF”提供了一个解决方案,它支持中文字符显示以及单独处理图片的功能。以下是对这个项目的详细解析: 1. **HTML与PDF的转换原理** HTML是一种标记语言,用于创建和展示网页内容,而PDF...

    go 语言实现 html 转 pdf

    总结起来,Go语言实现HTML转PDF涉及的关键技术包括HTML解析、浏览器渲染以及PDF生成。借助如gowebsite2pdf、gohpvg这样的库,开发者可以轻松地在Go环境中搭建起一个高效的HTML到PDF转换服务。不过,需要注意的是,...

    html转pdf.zip

    这个"html转pdf.zip"压缩包很可能包含一个或多个工具或脚本,用于将HTML文档转换为便携式文档格式(PDF)。下面我们将深入探讨HTML与PDF之间的转换原理、常见工具以及转换过程中的关键知识点。 首先,理解HTML和PDF...

    离线浏览,HTML转PDF非常好的工具

    离线浏览和HTML转PDF是网络技术中非常实用的功能,特别是在需要保存网页内容或在无网络环境下阅读的情况下。本文将详细介绍这一领域的知识,包括为何需要转换、如何操作以及使用工具的注意事项。 首先,理解离线...

    vue,html转pdf,下载导出及打印

    "Vue 实现 HTML 转 PDF 下载导出及打印" 在本文中,我们将介绍如何使用 Vue.js 实现 HTML 转 PDF 下载导出及打印。这个功能可以在项目中实现报表下载、打印等功能。本文将从插件安装、图片转换、HTML 转换为 PDF、...

    Java 使用itext将html转pdf并下载demo

    这个“Java使用iText将html转pdf并下载demo”的主题将深入讲解如何使用iText库实现这一功能。 首先,我们需要理解iText的基本用法。iText库提供了多种API,可以用来创建PDF文档、添加文本、图像、表格等元素。在...

    基于qt的html转换pdf代码

    在HTML转PDF的过程中,QPrinter被用来设置PDF输出的参数,如纸张大小、方向等,QPainter则负责将网页内容绘制到打印机对象上。 4. **C++编程**:这个项目是用C++语言实现的,C++是一种强大的、面向对象的编程语言,...

    java实现将html转pdf,并在指定位置添加印章

    本文将详细讲解如何使用Java实现这一功能,包括HTML转PDF以及在PDF中添加印章。 首先,我们需要一个库来处理HTML转PDF的任务。在Java中,一个常用的库是`Flying Saucer`,它能够将HTML渲染为PDF格式。`Flying ...

    html转pdf三种方式 js 和itext所需js和jar

    前端实现HTML转PDF,主要是通过JavaScript库,如`html2canvas`和`jspdf`。`html2canvas`可以将HTML元素渲染为Canvas,然后`jspdf`可以将Canvas内容转化为PDF。首先,你需要引入这两个库的文件。例如: ```html ...

    HTML转PDF插件

    HTML转PDF插件是网页内容转化为可打印或便于离线阅读的PDF文档的工具。在IT领域,这种转换经常被用于生成报告、手册或者网页的存档。在本例中,我们将关注一个名为"wkhtmltoX"的插件,它在Windows和Linux操作系统上...

    html转pdf工具

    HTML转PDF工具是一种实用软件,它能够将网页或者HTML文档转换为PDF格式,方便用户进行打印、保存或分享。在互联网环境中,HTML是最常见的网页展示语言,而PDF则是普遍用于离线阅读和打印的标准格式。这种转换过程...

    iText html转pdf jar包

    在这个例子中,提供的`itext-2.0.6.jar`是iText的一个旧版本,可能不包含HTML转PDF的功能,你可能需要更新到更现代的版本,如iText 5.x或7.x,这些版本通常已经包含了HTML处理的组件。 2. **创建PDF文档**:使用`...

    java测试工具html转pdf

    在“java测试工具html转pdf”这个主题中,我们主要关注的是如何使用Java来实现HTML文档向PDF格式的转换。这涉及到对HTML的理解、PDF的生成原理以及Java中的相关库和框架。 首先,HTML(超文本标记语言)是网页设计...

    JAVA HTML转pdf

    总的来说,`JAVA HTML转pdf`涉及到的关键知识点包括:`iTextPDF`库的使用,`Html2Pdf`扩展库,HTML读取与解析,PDF生成,以及可能的自定义配置。通过熟练掌握这些内容,你可以方便地在Java应用程序中实现HTML到PDF的...

    如何解决java html转pdf图片不显示问题的源码范例合集new(由浅入深代码范例和详细说明).docx

    Java HTML 转 PDF 图片不显示问题解决方案详解 在 Java 开发中,经常需要将 HTML 转换为 PDF,并希望在生成的 PDF 中正确显示 HTML 中的图片。但是,由于 HTML 和 PDF 的格式差异,可能会遇到图片不显示的问题。...

    phantomjs html转pdf 完美版本

    本资源提供的"phantomjs html转pdf 完美版本"是利用PhantomJS实现高质量的HTML到PDF转换的一个实例。 PhantomJS的工作原理是通过加载HTML页面,然后模拟浏览器渲染页面,最后将渲染后的结果保存为PDF文件。这个过程...

    HTML转PDF格式

    - `iText`库则是一个强大的PDF处理库,可以用来创建、修改PDF文档,也可用于HTML转PDF。 4. **使用WebView转换**: - Android的WebView组件可以加载和渲染HTML内容,通过调用其`WebView#print()`方法,可以利用...

    html转PDF源代码

    HTML转PDF的过程是为了将网页内容以更便于阅读和保存的方式呈现。 在源码中,可能采用了开源库或API来实现这一功能。常见的库有wkhtmltopdf、PhantomJS、Puppeteer(基于Chrome的Headless模式)等。这些工具通常...

    HTML转pdf工具类

    HTML转PDF工具是一种将网页内容转化为可离线阅读的PDF文档的软件或库。在IT领域,这种转换经常被用于创建电子手册、报告、发票或其他需要打印或分发的文档。"pd4ml"是其中一个知名的Java库,专门用于将HTML内容转换...

Global site tag (gtag.js) - Google Analytics