`
xiongzhenhui
  • 浏览: 209675 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

itext实现html转换成pdf (将带分页execl的html转换成pdf)

阅读更多


 1.首先下载itext2.08,iTextAsian(亚洲国际化包支持pdf中显示中文),core-Renderer(解析xhtml转换成pdf支持包),jtidy(html转换成xhtml支持包).其中core-Renderer包必须配合itext2.08版本的包,否则会抛出没有是public int[] getCharBBox(char c) 方法异常。

 

2.使用HttpURLConnection类发送一个post 请求。并利用HttpURLConnection中getInputStream方法获取生成的html的流。

3.利用jtidy将html流转换成xhtml流。并将xhtml流生成xhtml的document文档,最后利用ITextRenderer解析xhtml的document文档生成pdf的OutPutStream流生成pdf.



 注意:如果网页html的栏位太多,使网页html转换成pdf只会显示一半,这样就必须将字体变小

 如将上面字体12px改成11px或更小就可以:

 style.setTextContent("body { font-family: SimHei;font-size:11px;}");

 

4.通过拦截器获html并将html转换成excel和pdf

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
   ServletException {
  String queryString = ((HttpServletRequest) request).getQueryString();
  String uri = ((HttpServletRequest) request).getRequestURI();
  if (queryString == null) {
   chain.doFilter(request, response);
   return;
  }
  response.setCharacterEncoding("UTF-8");

  WapperedResponse wrapper = new WapperedResponse((HttpServletResponse) response);
  chain.doFilter(request, wrapper);
  byte[] excelBytes = wrapper.getResponseData();
  ByteArrayInputStream bis = new ByteArrayInputStream(excelBytes);
  java.io.BufferedOutputStream bos = null;
  HttpServletResponse httpResp = (HttpServletResponse) response;
  httpResp.reset();
  if (!p.matcher(queryString).find()) {
   response.setCharacterEncoding("UTF-8");
   httpResp.setHeader("Pragma", "no-cache");
   httpResp.setHeader("Cache-Control", "no-cache");
   httpResp.setDateHeader("Expires", 0);
   httpResp.setContentType("application/vnd.ms-excel");
   httpResp.setHeader("Content-disposition", "attachment; filename="
     + encodingFileName(getFileName(uri).replaceAll(".pdf", ".xls")));
   String filePath = ApplicationSetting.getProperty("save_report_excelTemp");
   if (!new File(filePath).exists())
    new File(filePath).mkdirs();
   String htmlName = filePath + UUID.randomUUID().toString().replace("-", "") + ".html";
   String excelName = filePath + UUID.randomUUID().toString().replace("-", "") + ".xls";
   FileOutputStream stream = new FileOutputStream(new File(htmlName));
   stream.write(excelBytes);
   stream.close();
   stream = null;
   bis = null;
   excelBytes = null;
   System.gc();
   try {
    htmlToExcel(htmlName, excelName);// 一般耗時在打開html檔上
   } catch (Exception e) {
    e.printStackTrace();
   } finally {
    if (new File(htmlName).exists())
     new File(htmlName).delete();
   }
   FileInputStream inStream = new FileInputStream(new File(excelName));
   byte[] content = new byte[1000];
   while (inStream.read(content) != -1) {
    response.getOutputStream().write(content);
   }
   if (inStream != null)
    inStream.close();
   if (response.getOutputStream() != null)
    response.getOutputStream().close();
   if (new File(excelName).exists())
    new File(excelName).delete();
  } else {
   httpResp.setHeader("Content-Disposition", " attachment; filename=\"my.pdf\"");
   httpResp.setHeader("Expires", "0");
   httpResp.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
   httpResp.setHeader("Pragma", "public");
   String fileName = getFileName(uri);
   try {
    OutputStream ou = response.getOutputStream();
    bos = new java.io.BufferedOutputStream(ou);
    httpResp.setContentType("application/pdf");
    httpResp.setHeader("Content-disposition", "attachment; filename=" + encodingFileName(fileName));
    String pdfFontSize = ((HttpServletRequest) request).getParameter("pdfFontSize");
    PdfRender.html2pdf(bis, "utf-8", pdfFontSize).writeTo(bos);
   } catch (Exception e) {
    e.printStackTrace();
   }
  }

 }

4.部分参考资料网址

http://www.iteye.com/topic/509417?page=6

http://today.java.net/pub/a/today/2007/06/26/generating-pdfs-with-flying-saucer-and-itext.html

http://blog.csdn.net/zdtwyjp/archive/2010/07/27/5769353.aspx

  • 大小: 97.3 KB
  • 大小: 147.9 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    JAVA使用itextpdf实现HTML转PDF

    总之,使用iTextPDF库在Java中实现HTML到PDF的转换是一项实用的技能,但需要注意库对HTML和CSS的支持限制。根据实际需求,可能需要对HTML源码进行调整,或者考虑使用其他兼容性更强的库来实现更丰富的转换效果。

    poi创建word、生成html、itext将html转换成pdf。pd4ml将jsp转成pdf

    1.用户导入word生成pdf -首先导入word的时候读取word里面的全部内容。调用(ReadAndWriteDoc)然后将内容 传送到createPdf里面生成pdf。导入的时候读取采用poi /生成的时候采用的是...4.将html转换成pdf(itext)

    itext7 html转换为pdf

    接下来,我们将编写Java代码来实现HTML到PDF的转换。`iText 7`的`HtmlConverter`类提供了便捷的方法。以下是一个简单的示例: ```java import com.itextpdf.kernel.pdf.PdfWriter; import ...

    java Itext 将tif转换成PDF 包含多页

    本篇将深入讲解如何使用Java和iText库将多页的TIFF(Tagged Image File Format)文件转换为多页的PDF(Portable Document Format)文件。首先,让我们了解下相关的知识点。 **1. TIFF 文件格式** TIFF是一种灵活的...

    使用iText-2.0.8将Html转换为pdf,带图片功能

    这个过程涉及到多个步骤和技术,下面将详细阐述如何使用iText 2.0.8实现HTML到PDF的转换,并特别关注其中的图片处理。 首先,我们需要理解iText的核心概念。iText是基于PDF规范的,它提供了API来创建和操作PDF文档...

    使用itextpdf将excel转化为pdf + pdf加水印

    在这个场景中,我们需要将Excel文件转换成PDF格式,并且在此基础上添加水印,以增强文档的安全性和版权标识。这里主要涉及两个关键的技术:itextpdf库和Excel到PDF的转换。 **itextpdf库**是一个强大的Java库,专门...

    iText7 html转换为pdf生成页码、页眉、页脚DEMO

    itext7 html转换为pdf;iText7页码、页眉、页脚,itext 的复杂表格实现;完整springboot项目代码

    利用Itext实现html转pdf

    在这个场景中,我们将讨论如何利用Itext库在不修改源代码的情况下,实现HTML到PDF的转换,并处理换行问题。 首先,我们需要理解Itext不直接支持HTML到PDF的转换,但它可以通过其他方式间接实现。通常,我们会借助一...

    itextpdf 导出pdf 表格 自动分页中文 目录

    3. **PDF表格自动分页**: 在生成PDF文档时,如果一个表格太长以至于无法在一页内完全显示,iTextPDF可以自动将其分页。通过调整表格属性,如行高、列宽,以及设置分页策略,可以确保表格在每一页上都保持完整的结构...

    使用POI和IText将Excel转换成PDF

    在IT行业中,转换数据格式是常见的任务之一,例如将Excel表格转换为PDF文档。这个过程可以方便用户在不使用特定应用程序(如Microsoft Excel)的情况下查看和打印数据。本篇文章将详细探讨如何使用Apache POI和iText...

    itext5.4.2 html2pdf

    html2pdf是iText中的一个重要模块,它通过解析HTML和CSS,将它们转换成PDF的元素和样式。这个功能的实现依赖于一个名为Flying Saucer的开源项目,它能将HTML渲染成高质量的图像流。iText 5.4.2结合Flying Saucer,...

    利用itext将html转为pdf带图片所需jar

    本篇文章将详细介绍如何利用iText将HTML转换为PDF,并介绍所需的jar包以及相关知识点。 首先,我们需要准备两个关键的jar包,即`iText-2.0.8.jar`和`core-renderer-R8.jar`。`iText-2.0.8.jar`是iText的主要库,...

    iText7 itextpdf/html2pdf

    iText7 用于html转换pdf核心包-html2pdf-1.0.1.jar。。。。

    Itext实现Html转化为Doc源码、Doc中部分代码为html转化

    在此,我们将深入探讨如何使用Itext实现HTML到DOC的转换,并讨论在DOC文档中保留部分HTML格式的可能性。 Itext是一个Java库,主要用于创建和修改PDF文档。虽然其主要功能是处理PDF,但通过一定的技巧,可以借助HTML...

    itextpdf将html生成pdf所需要的全部jar

    在将HTML转换为PDF的场景中,FreeMarker可以用来处理HTML模板,填充数据并生成最终的HTML内容,然后由iTextPDF将其转化为PDF。 4. jfinal-2.0.jar:JFinal是一个基于Java的轻量级Web框架,它简化了Web应用的开发...

    itext实现csv文件转PDF文件

    csv数据文件转换成pdf文件 itextpdf-5.1.3.jar iTextAsian.jar

    java 调用itext 把html转成pdf文档

    在这个场景中,我们将深入探讨如何使用iText库将HTML内容转化为PDF。 iText是一个开源的Java库,它允许开发人员创建、修改和处理PDF文档。在Java中,iText提供了丰富的API,可以用来生成复杂的PDF文档,包括表格、...

    IText5实现Html转PDF.zip

    IText5实现Html转PDF(不含图片、表格) 含:字体文件、hmtl文件、jar包、Java代码 安装字体或将字体文件放到相应的目录下。 jar包中的 core-renderer-all.jar 为其他大牛重写的,解决了中文字体和换行的问题。 Html...

    itext 将html转pdf中文显示换行以及字体问题

    1、itext将静态html转pdf中文显示及换行问题 2、itext将静态html转pdf 字体问题 3、html转pdf 参考我的另外一篇博文https://blog.csdn.net/qq_38616723/article/details/125188407?spm=1001.2014.3001.5502

    利用ITEXT、PDFBOX将PDF转为图片

    PDF转换为图片是一种...综上所述,ITEXT和PDFBOX结合使用,可以在Java环境中方便地将PDF文档转换为图片。这为开发者提供了更多处理PDF文档的灵活性和可能性,但同时也需要根据具体需求选择合适的转换参数和优化策略。

Global site tag (gtag.js) - Google Analytics