生成pdf常用的插件有iReport、和itext,这里将使用itext生成pdf文件。
多于的话不说直接上demo和需要的jar,如果pdf中有图片要画的话可以用jfreeChart画。
package com.pdf; import java.awt.Color; import java.io.File; import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.Element; import com.lowagie.text.Font; import com.lowagie.text.Image; import com.lowagie.text.PageSize; import com.lowagie.text.Phrase; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfPCell; import com.lowagie.text.pdf.PdfPTable; import com.lowagie.text.pdf.PdfWriter; public class PDFReport1 { int maxWidth = 520; private static Font keyfont; // 设置字体大小 private static Font textfont; // 设置字体大小 // 建立一个Document对象 Document document = new Document(); static { BaseFont bfChinese; try { bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); keyfont = new Font(bfChinese, 8, Font.BOLD); // 设置字体大小 textfont = new Font(bfChinese, 8, Font.NORMAL); // 设置字体大小 } catch (Exception e) { e.printStackTrace(); } } /** * 设置pdf样式 * @param file */ public PDFReport1(File file) { // 设置页面大小 document.setPageSize(PageSize.A4); try { PdfWriter.getInstance(document, new FileOutputStream(file)); document.open(); } catch (Exception e) { e.printStackTrace(); } } /** * 添加表格前的说明 * @param value * @param font * @param align * @param colspan * @param boderFlag * @return */ public PdfPCell createCell(String value, com.lowagie.text.Font font, int align, int colspan, boolean boderFlag) { PdfPCell cell = new PdfPCell(); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setHorizontalAlignment(align); cell.setColspan(colspan); cell.setPhrase(new Phrase(value, font)); cell.setPadding(3.0f); if (!boderFlag) { cell.setBorder(0); cell.setPaddingTop(15.0f); cell.setPaddingBottom(8.0f); } return cell; } /** * 向单元格添加字符串、设置单元格属性 * @param value 字符 * @param font 字体 * @param align 对齐方式 * @return */ public PdfPCell createCell(String value, com.lowagie.text.Font font, int align) { PdfPCell cell = new PdfPCell(); //设置单元格对齐方式 cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setHorizontalAlignment(align); cell.setPhrase(new Phrase(value, font)); //设置边框颜色 cell.setBorderColor(new Color(15, 15, 15)); //设置单元格背景颜色 cell.setBackgroundColor(new Color(118, 59, 167)); return cell; } /** * 向单元格添加字符串、设置单元格属性 * @param value 字符 * @param font 字体 * @return */ public PdfPCell createCell(String value, com.lowagie.text.Font font) { PdfPCell cell = new PdfPCell(); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setPhrase(new Phrase(value, font)); cell.setBorderColor(new Color(15, 15, 15)); cell.setBackgroundColor(new Color(59,162,167)); return cell; } /** * 向单元格中添加图片 * @param image 图片 */ public PdfPCell createCell() { PdfPCell cell = new PdfPCell(); try { cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setHorizontalAlignment(Element.ALIGN_CENTER); Image image = Image.getInstance ("D:\\Arrows_Black_InTable_Down.png"); //设置图片大小 // image.scaleAbsoluteWidth(7); // image.scaleAbsoluteHeight(11); image.scaleAbsolute(7,11); //添加图片 cell.addElement(image); //设置边框颜色 cell.setBorderColor(new Color(15, 15, 15)); //设置单元格背景颜色 cell.setBackgroundColor(new Color(59,162,167)); } catch (Exception e) { e.printStackTrace(); } return cell; } public PdfPCell createCell(String value, com.lowagie.text.Font font, int align, int colspan) { PdfPCell cell = new PdfPCell(); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setHorizontalAlignment(align); cell.setColspan(colspan); cell.setPhrase(new Phrase(value, font)); return cell; } public PdfPTable createTable(int colNumber) { PdfPTable table = new PdfPTable(colNumber); try { table.setTotalWidth(maxWidth); table.setLockedWidth(true); table.setHorizontalAlignment(Element.ALIGN_CENTER); table.getDefaultCell().setBorder(1); } catch (Exception e) { e.printStackTrace(); } return table; } public PdfPTable createTable(float[] widths) { PdfPTable table = new PdfPTable(widths); try { table.setTotalWidth(maxWidth); table.setLockedWidth(true); table.setHorizontalAlignment(Element.ALIGN_CENTER); table.getDefaultCell().setBorder(1); } catch (Exception e) { e.printStackTrace(); } return table; } public PdfPTable createBlankTable() { PdfPTable table = new PdfPTable(1); table.getDefaultCell().setBorder(0); table.addCell(createCell("", keyfont)); table.setSpacingAfter(20.0f); table.setSpacingBefore(20.0f); return table; } public void generatePDF() throws Exception { PdfPTable table = createTable(5); table.addCell(createCell("学生信息列表:", keyfont, Element.ALIGN_LEFT, 5, false)); table.addCell(createCell("姓名", keyfont, Element.ALIGN_CENTER)); table.addCell(createCell("年龄", keyfont, Element.ALIGN_CENTER)); table.addCell(createCell("性别", keyfont, Element.ALIGN_CENTER)); table.addCell(createCell("住址", keyfont, Element.ALIGN_CENTER)); table.addCell(createCell("升降", keyfont, Element.ALIGN_CENTER)); for (int i = 0; i < 5; i++) { table.addCell(createCell("姓名" + i, textfont)); table.addCell(createCell(i + 15 + "", textfont)); table.addCell(createCell((i % 2 == 0) ? "男" : "女", textfont)); table.addCell(createCell("地址" + i, textfont)); //添加图片 table.addCell(createCell()); } document.add(table); document.close(); } public static void main(String[] args) throws Exception { File file = new File("D:\\text.pdf"); file.createNewFile(); new PDFReport1(file).generatePDF(); } }
相关推荐
5. **运行示例**:在提供的`pdf-demo`中,应该有一个示例代码,你可以根据自己的需求进行调整并运行这个代码,生成带有中文水印的PDF文件。 通过以上步骤,你可以在Java环境中利用iTextPDF和iText-Asian库为PDF文件...
10. **PDF版本兼容**:iText库生成的PDF文件可以遵循不同的PDF标准,如PDF/A、PDF/UA等,满足不同应用场景的需求。 在实际项目中,开发者通常会结合这两个JAR文件,利用iText提供的API来实现各种PDF相关的功能。...
3. **PDF表格自动分页**: 在生成PDF文档时,如果一个表格太长以至于无法在一页内完全显示,iTextPDF可以自动将其分页。通过调整表格属性,如行高、列宽,以及设置分页策略,可以确保表格在每一页上都保持完整的结构...
iTextPDF库允许开发者动态生成PDF,比如添加文本、图像、表格、链接,甚至复杂的布局和交互元素。此外,它还支持PDF文档的合并、分割、水印添加以及表单填写等功能。 使用iText,开发者可以实现以下功能: 1. **...
这个库允许开发者动态生成PDF文档,包括添加文本、图像、表格、链接、注释等元素。同时,它还支持读取和解析现有的PDF文档,以便进行编辑或提取信息。此外,iTextPDF还提供了数字签名、加密和表单处理等功能,以满足...
在本篇中,我们将深入探讨如何使用iText库来生成PDF文件,以及相关的源码和工具应用。 首先,我们需要引入iText库的相关依赖。在提供的文件列表中,可以看到`itextpdf-5.1.1.jar`和`itextasian.jar`这两个文件。`...
在使用iText生成PDF目录时,要注意几点: - 确保每个书签都有一个对应的目标位置,否则在PDF中点击书签可能无法正确跳转。 - 避免内存泄漏,尤其是在处理大量书签时,要及时释放资源。 - 书签层次不宜过深,以免影响...
对于初学者来说,掌握使用iText生成PDF文档中的表格、一维条形码和图片是一项基本技能。此外,需要注重代码中字符串的准确性,避免由于扫描或输入错误导致的问题。熟练掌握iText库的使用,可以使开发者在处理PDF文件...
在生成PDF文档时,如果你的文本包含中文字符,此库将确保它们在输出的PDF中清晰且准确地显示。它支持Unicode,能够处理多语言环境,是处理中文PDF文档的重要工具。 `itextpdf-5.5.5.jar` 是iText库的主要部分,是一...
通过以上步骤,你应该能基本掌握使用iText生成PDF文件的方法。在实际应用中,可以根据需要调整和扩展代码,实现更丰富的PDF文档生成。如果你需要深入学习,可以参考官方文档或相关的博客资源,如提供的博文链接,...
总的来说,iText7-7.0.2的这个Java PDF库可以用于各种场景,例如创建PDF文档、添加表单字段、处理图像、生成和读取条形码、签署PDF文件,以及对PDF进行各种高级操作。开发人员可以根据自己的需求选择相应的模块,...
本教程主要探讨如何利用HTML模板和iTextPDF库来创建PDF文件,同时也会提及Apache POI和Freemarker在导出Excel方面的应用,以及如何在PDF上添加文字水印。 首先,iTextPDF是一个强大的Java库,专门用于生成和修改PDF...
这个版本支持PDF 1.4规范,意味着你可以创建符合这一标准的PDF文件。通过使用iText,开发者可以方便地在Java应用程序中集成PDF文档的生成和处理功能。 iTextAsian是iText的一个扩展,专为处理亚洲语言(如中文、...
以下是一些关于如何使用iText生成PDF的关键知识点: 1. **安装与获取iText**: 要使用iText,首先需要从其官方源代码托管平台SourceForge下载相应的.jar文件。基础的iText.jar提供了基本的PDF生成功能,但如果你...
iTextPDF作为一个强大的PDF操作工具包,为开发者提供了丰富的API,使得生成、编辑PDF文件变得简单易行。本文将详细探讨iTextPDF 5.5.5版本的核心功能和使用方法。 iTextPDF是iText库的一个子项目,专注于PDF文档的...
1. **创建PDF**:你可以使用iText动态生成PDF文档,这在报表生成、发票打印等场景中非常有用。 2. **编辑PDF**:添加文本、图像、表格、链接、注释等,或者修改已有的PDF文档内容。 3. **合并与分割PDF**:将多个PDF...
这篇博客 "freemarker+itext生成PDF" 可能详细介绍了如何结合这两者来生成PDF文件,这在报表生成、发票打印或任何需要静态化输出的场景中非常有用。 首先,让我们了解FreeMarker。FreeMarker是一个基于模板的语言,...
在本文中,我们将深入探讨如何使用iText库生成PDF文件,并特别关注在创建表格时进行单元格合并的方法。 首先,`itextpdf-5.5.10.jar`是iText库的核心组件,包含了生成和操作PDF的基本功能。这个版本的iText支持PDF ...
首先,iTextPDF的核心在于其 PdfWriter 类,它是生成PDF文件的关键。PdfWriter允许开发者创建一个新的PDF文档,或者向已存在的PDF文档添加内容。通过创建一个PdfWriter实例,开发者可以指定输出流(如文件或内存流)...