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
分享到:
相关推荐
总之,使用iTextPDF库在Java中实现HTML到PDF的转换是一项实用的技能,但需要注意库对HTML和CSS的支持限制。根据实际需求,可能需要对HTML源码进行调整,或者考虑使用其他兼容性更强的库来实现更丰富的转换效果。
1.用户导入word生成pdf -首先导入word的时候读取word里面的全部内容。调用(ReadAndWriteDoc)然后将内容 传送到createPdf里面生成pdf。导入的时候读取采用poi /生成的时候采用的是...4.将html转换成pdf(itext)
接下来,我们将编写Java代码来实现HTML到PDF的转换。`iText 7`的`HtmlConverter`类提供了便捷的方法。以下是一个简单的示例: ```java import com.itextpdf.kernel.pdf.PdfWriter; import ...
本篇将深入讲解如何使用Java和iText库将多页的TIFF(Tagged Image File Format)文件转换为多页的PDF(Portable Document Format)文件。首先,让我们了解下相关的知识点。 **1. TIFF 文件格式** TIFF是一种灵活的...
这个过程涉及到多个步骤和技术,下面将详细阐述如何使用iText 2.0.8实现HTML到PDF的转换,并特别关注其中的图片处理。 首先,我们需要理解iText的核心概念。iText是基于PDF规范的,它提供了API来创建和操作PDF文档...
在这个场景中,我们需要将Excel文件转换成PDF格式,并且在此基础上添加水印,以增强文档的安全性和版权标识。这里主要涉及两个关键的技术:itextpdf库和Excel到PDF的转换。 **itextpdf库**是一个强大的Java库,专门...
itext7 html转换为pdf;iText7页码、页眉、页脚,itext 的复杂表格实现;完整springboot项目代码
在这个场景中,我们将讨论如何利用Itext库在不修改源代码的情况下,实现HTML到PDF的转换,并处理换行问题。 首先,我们需要理解Itext不直接支持HTML到PDF的转换,但它可以通过其他方式间接实现。通常,我们会借助一...
3. **PDF表格自动分页**: 在生成PDF文档时,如果一个表格太长以至于无法在一页内完全显示,iTextPDF可以自动将其分页。通过调整表格属性,如行高、列宽,以及设置分页策略,可以确保表格在每一页上都保持完整的结构...
在IT行业中,转换数据格式是常见的任务之一,例如将Excel表格转换为PDF文档。这个过程可以方便用户在不使用特定应用程序(如Microsoft Excel)的情况下查看和打印数据。本篇文章将详细探讨如何使用Apache POI和iText...
html2pdf是iText中的一个重要模块,它通过解析HTML和CSS,将它们转换成PDF的元素和样式。这个功能的实现依赖于一个名为Flying Saucer的开源项目,它能将HTML渲染成高质量的图像流。iText 5.4.2结合Flying Saucer,...
本篇文章将详细介绍如何利用iText将HTML转换为PDF,并介绍所需的jar包以及相关知识点。 首先,我们需要准备两个关键的jar包,即`iText-2.0.8.jar`和`core-renderer-R8.jar`。`iText-2.0.8.jar`是iText的主要库,...
iText7 用于html转换pdf核心包-html2pdf-1.0.1.jar。。。。
在此,我们将深入探讨如何使用Itext实现HTML到DOC的转换,并讨论在DOC文档中保留部分HTML格式的可能性。 Itext是一个Java库,主要用于创建和修改PDF文档。虽然其主要功能是处理PDF,但通过一定的技巧,可以借助HTML...
在将HTML转换为PDF的场景中,FreeMarker可以用来处理HTML模板,填充数据并生成最终的HTML内容,然后由iTextPDF将其转化为PDF。 4. jfinal-2.0.jar:JFinal是一个基于Java的轻量级Web框架,它简化了Web应用的开发...
csv数据文件转换成pdf文件 itextpdf-5.1.3.jar iTextAsian.jar
在这个场景中,我们将深入探讨如何使用iText库将HTML内容转化为PDF。 iText是一个开源的Java库,它允许开发人员创建、修改和处理PDF文档。在Java中,iText提供了丰富的API,可以用来生成复杂的PDF文档,包括表格、...
IText5实现Html转PDF(不含图片、表格) 含:字体文件、hmtl文件、jar包、Java代码 安装字体或将字体文件放到相应的目录下。 jar包中的 core-renderer-all.jar 为其他大牛重写的,解决了中文字体和换行的问题。 Html...
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
PDF转换为图片是一种...综上所述,ITEXT和PDFBOX结合使用,可以在Java环境中方便地将PDF文档转换为图片。这为开发者提供了更多处理PDF文档的灵活性和可能性,但同时也需要根据具体需求选择合适的转换参数和优化策略。