- 浏览: 50768 次
- 性别:
- 来自: 南京
文章分类
最新评论
package pdf; import java.awt.Color; import java.io.FileOutputStream; import java.io.IOException; import com.lowagie.text.Chunk; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.Element; import com.lowagie.text.Font; import com.lowagie.text.Image; import com.lowagie.text.PageSize; import com.lowagie.text.Paragraph; import com.lowagie.text.Phrase; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfAnnotation; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfPCell; import com.lowagie.text.pdf.PdfPTable; import com.lowagie.text.pdf.PdfWriter; import com.lowagie.text.pdf.RadioCheckField; /** * * * @author ht * */ public class CreatePdfTest5 { public static void main(String[] args) throws DocumentException, IOException { // 第一步,实例化一个document对象 Document document = new Document(PageSize.A4); //document. // 第二步,设置要到出的路径 FileOutputStream out = new FileOutputStream("D:/workbook111.pdf"); // 如果是浏览器通过request请求需要在浏览器中输出则使用下面方式 // OutputStream out = response.getOutputStream(); // 第三步,设置字符 BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false); Font fontZH = new Font(bfChinese, 12.0F, 0); Font headFont = new Font(bfChinese, 15, Font.BOLD); // 第四步,将pdf文件输出到磁盘 PdfWriter writer = PdfWriter.getInstance(document, out); writer.setEncryption(null, null, PdfWriter.ALLOW_PRINTING, PdfWriter.STANDARD_ENCRYPTION_128); // 只读 // 第五步,打开生成的pdf文件 document.open(); // 第六步,设置内容 Rectangle position = new Rectangle(220, 740, 240, 760); drawCheckBox(writer, position, "0", false); position = new Rectangle(280, 740, 300, 760); drawCheckBox(writer, position, "1", true); String title = "标题"; Paragraph titleParagraph = new Paragraph(new Chunk(title, headFont).setLocalDestination(title)); titleParagraph.setAlignment(Element.ALIGN_CENTER); document.add(titleParagraph); document.add(new Paragraph("\n")); String subTitle = "国籍:中国 其他 填表日期: 年 月 日"; Chunk k = new Chunk("kk", fontZH); Paragraph subTitleParagraph = new Paragraph(new Chunk(subTitle, fontZH).setLocalDestination(subTitle)); subTitleParagraph.setAlignment(Element.ALIGN_CENTER); document.add(subTitleParagraph); document.add(new Paragraph("\n")); // 创建table,注意这里的2是两列的意思,下面通过table.addCell添加的时候必须添加整行内容的所有列 float[] widths = new float[] {0.15f, 0.15f, 0.1f, 0.1f, 0.1f, 0.2f, 0.2f}; PdfPTable table1 = new PdfPTable(widths); table1.setWidthPercentage(100.0f); PdfPCell cell = new PdfPCell(); table1.addCell(getPdfCell("姓名", fontZH)); table1.addCell(getPdfCell("张三", fontZH)); table1.addCell(getPdfCell("性别", fontZH)); table1.addCell(getPdfCell("男", fontZH)); table1.addCell(getPdfCell("出生年月", fontZH)); table1.addCell(getPdfCell("203232323", fontZH)); cell = new PdfPCell(); cell.setRowspan(4); Image img = Image.getInstance("F:/001_ibatis 时序图.png"); cell.setImage(img); table1.addCell(cell); table1.addCell(getPdfCell("张三", fontZH)); table1.addCell(getPdfCell("张三", fontZH)); table1.addCell(getPdfCell("张三", fontZH)); table1.addCell(getPdfCell("张三", fontZH)); table1.addCell(getPdfCell("张三", fontZH)); table1.addCell(getPdfCell("张三", fontZH)); table1.addCell(getPdfCell("张三", fontZH)); table1.addCell(getPdfCell("张三", fontZH)); table1.addCell(getPdfCell("张三", fontZH)); table1.addCell(getPdfCell("张三", fontZH)); // table2 widths = new float[] {0.15f, 0.25f, 0.2f, 0.4f}; PdfPTable table2 = new PdfPTable(widths); table2.setWidthPercentage(100.0f); table2.addCell(getPdfCell("电商名称", fontZH)); table2.addCell(getPdfCell("客户量", fontZH)); table2.addCell(getPdfCell("电商名称", fontZH)); table2.addCell(getPdfCell("电商名称", fontZH)); table2.addCell(getPdfCell("简介", fontZH, 120.0f)); table2.addCell(getPdfCell("实体", fontZH, 1, 3)); cell = getPdfCell("计划书", fontZH, 1, 4); cell.setUseAscender(true); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setVerticalAlignment(Element.ALIGN_CENTER); table2.addCell(cell); // 公司简介 Paragraph dataPara = new Paragraph(); dataPara.add(new Phrase("dfjlkasjdfa1,", fontZH)); dataPara.add(new Phrase("\n")); dataPara.add(new Phrase("fdsfadewrwerwe2,", fontZH)); dataPara.add(new Phrase("\n")); Paragraph datePara = new Paragraph(); datePara.add(new Paragraph("\n\n\n\n\n\n")); datePara.add(new Paragraph(" 2018年9月9日", fontZH)); dataPara.add(datePara); cell = new PdfPCell(); cell.setRowspan(1); cell.setColspan(7); cell.setPhrase(dataPara); table2.addCell(cell); document.add(table1); document.add(table2); document.add(new Paragraph("\n")); // 第七步,关闭document document.close(); } private static RadioCheckField drawCheckBox(PdfWriter writer, Rectangle position, String fieldName, boolean flag) { float x = (position.getLeft() + position.getRight()) / 2; float y = (position.getTop() + position.getBottom()) / 2; // define the position of a check box that measures 20 by 20 //画勾 Rectangle rect = new Rectangle(x - 5, y - 5, x + 5, y + 5); RadioCheckField checkbox = new RadioCheckField(writer, rect, fieldName, "On"); checkbox.setCheckType(RadioCheckField.TYPE_CHECK); if (flag) { checkbox.setChecked(true); } else { checkbox.setChecked(false); } /* * checkbox.setBorderWidth(1.0f); checkbox.setBackgroundColor(Color.WHITE); */ //画框 PdfContentByte canvas = writer.getDirectContent(); canvas.setColorStroke(Color.BLACK); //canvas.setLineDash(1f); canvas.setLineWidth(0.5f); canvas.rectangle(x - 5, y - 5, 10,10); canvas.stroke(); try { checkbox.getRadioField().setHighlighting(PdfAnnotation.HIGHLIGHT_INVERT); writer.addAnnotation(checkbox.getCheckField()); } catch (Exception e) { e.printStackTrace(); } return checkbox; } private static PdfPCell getPdfCell(String data, Font font) { PdfPCell cell = new PdfPCell(); cell.setPhrase(new Paragraph(data, font)); return cell; } private static PdfPCell getPdfCell(String data, Font font, Float height) { PdfPCell cell = new PdfPCell(); cell.setPhrase(new Paragraph(data, font)); cell.setFixedHeight(height); return cell; } private static PdfPCell getPdfCell(String data, Font font, Integer rowspan, Integer colspan) { PdfPCell cell = new PdfPCell(); cell.setPhrase(new Paragraph(data, font)); cell.setRowspan(rowspan); cell.setColspan(colspan); return cell; } }
参考:
https://blog.csdn.net/makang456/article/details/70161037
发表评论
-
微服务系统设计(元素)
2019-01-24 23:06 448以springboot框架来设计一个微服务系统,可以利用现有的 ... -
String与Long类型比较的陷阱
2018-06-06 11:30 1117public class LongTest { publi ... -
poi设置下拉框
2018-01-05 17:05 18701.下拉框数据较少时 String[] strs = new ... -
poi之getPhysicalNumberOfCells与getLastCellNum
2017-12-18 17:27 1497某次调用row.getPhysicalNumberOfCell ... -
javascript校验信息
2017-11-13 20:16 01.校验手机号 var pattern = /^1[34578 ... -
下载poi生成的excel
2017-10-18 09:28 560#xls格式 // 下载wb String fileNa ... -
弹窗列表操作-javascript
2017-08-30 18:36 789<html> <head> & ... -
反射读取解析excel模板到集合
2017-08-24 23:10 503#调用 List<ModelTest> list ... -
jquery操作table添加行
2017-02-13 18:47 823chrome可以直接测试运行 <html ... -
java后台判断浏览器属性
2017-01-25 15:51 0import java.util.regex.Matcher; ... -
前台异步交互示例
2017-01-25 15:48 0/** * <b>功能:</b>输 ...
相关推荐
在使用iText生成PDF目录时,要注意几点: - 确保每个书签都有一个对应的目标位置,否则在PDF中点击书签可能无法正确跳转。 - 避免内存泄漏,尤其是在处理大量书签时,要及时释放资源。 - 书签层次不宜过深,以免影响...
为了解决"Java使用Itext生成PDF中文不换行"的问题,我们可以采取以下几种策略: 1. **设置字体和编码**:确保使用支持中文的字体,如SimSun、Arial Unicode MS等,并正确设置PDF的编码为UTF-8。Itext中的`Font`类...
这篇博客 "freemarker+itext生成PDF" 可能详细介绍了如何结合这两者来生成PDF文件,这在报表生成、发票打印或任何需要静态化输出的场景中非常有用。 首先,让我们了解FreeMarker。FreeMarker是一个基于模板的语言,...
"itext-2.1.7源码包以及 解决iText生成pdf时中文标点存在行首问题的修改class" 这个标题提到了两个关键点。首先,`itext-2.1.7`是开源Java库iText的一个版本,用于创建、修改和操作PDF文档。这个版本的源码包提供了...
在这个场景中,我们将探讨如何利用iText在Android应用中生成PDF以及读取PDF的内容。 首先,我们需要在Android项目中引入iText库。由于Android Studio默认使用Gradle作为构建工具,我们可以在`build.gradle`文件的...
以下是一些关于如何使用iText生成PDF的关键知识点: 1. **安装与获取iText**: 要使用iText,首先需要从其官方源代码托管平台SourceForge下载相应的.jar文件。基础的iText.jar提供了基本的PDF生成功能,但如果你...
**iText生成PDF实例详解** 在信息技术领域,PDF(Portable Document Format)文件因其跨平台、易阅读和保真性等特点,被广泛应用于文档共享和交流。而iText是一款开源的Java库,它允许开发者轻松地创建、修改和操作...
2. **创建PDF文档**:使用iText生成PDF的第一步是创建一个PdfWriter实例,然后基于该实例创建一个Document对象。例如: ```java Document document = new Document(); PdfWriter.getInstance(document, new ...
iText生成pdf解决中文不显示字库,pdf凉字不显示,由于生成iText插件生成pdf的时候中文会显示不出来,遇到过的是"凉"字,查到是字体库的原因,网上下载字体库msyh.ttc,生成的时候指定字体库,就可以解决了,小bug一...
用itext方法生成 与Word一样的目录
iText生成PDF图片文档 iText是一个功能强大的Java类库,用于生成PDF文档。通过使用iText,我们可以轻松地生成PDF文档,包括图片、文字、表格等多种元素。本文将详细介绍如何使用iText生成PDF图片文档。 iText基本...
对于初学者来说,掌握使用iText生成PDF文档中的表格、一维条形码和图片是一项基本技能。此外,需要注重代码中字符串的准确性,避免由于扫描或输入错误导致的问题。熟练掌握iText库的使用,可以使开发者在处理PDF文件...
本篇将详细介绍如何使用iText生成PDF,以及所需的jar包。 首先,我们需要理解iText库的核心功能。iText允许开发者通过编程方式创建PDF文档,支持添加文本、图像、表格、链接、样式和布局等多种元素。它还提供了高级...
【Itext生成PDF详解】 Itext是一个用于生成PDF文档的Java库,对于.NET环境,有对应的iTextSharp库。在创建PDF文档时,通常需要经过五个步骤,这在描述中已有详细阐述。以下是对这些步骤的详细解释: 1. **创建...
这个压缩包提供了使用Itext生成PDF所需的全部Jar包,确保你可以一次性导入所有必要的依赖。 1. **Itext核心组件**: - `kernel`:这是Itext的核心模块,提供了基本的PDF文档操作功能,如创建、打开、修改PDF文档,...
里面包含两个demo实例,分别是itext-pdf生成pdf的,一个是itext-rtf生成word的。其中还附有学习笔记一份,上述生成的文档包括对字体的选择(本地或者iTextAsian里面的),有对图片的添加,有对样式的调整,有对table...
document.add(new Paragraph("这是使用IText生成的PDF文档!")); document.close(); } catch (DocumentException | IOException e) { e.printStackTrace(); } } } ``` 这段代码首先创建了一个`Document`对象...
接下来,我们来看看如何生成PDF报表。首先,创建一个新的PDF文档需要一个`Document`对象,这将作为整个PDF的容器: ```java Document document = new Document(); ``` 然后,我们需要一个`PdfWriter`实例,它负责将...
用itext生成pdf文档,生成的内容有表格形式,文本形式,设置字体样式,文档页边距。
总结一下,要实现在Spring Boot应用中使用iText生成带有页眉、页码、水印、目录和二维码的PDF,你需要: 1. 引入iText及相关库。 2. 创建HTML页面并将其转换为PDF。 3. 定制PDF内容,包括添加页眉、页码和水印。 4. ...