- 浏览: 159430 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
wcnmbbbb:
com.lowagie.text 对应的包呢?
根据数据库注释自动生成数据库文档【支持Oracle和Mysql】 -
greatwqs:
序列化算法这篇不错 : http://greatwqs.ite ...
Java IO 中对象的序列化操作 -
litao11046:
为什么使用get的时候要把具体的方法名加入hidden作为隐藏 ...
Struts DispatchAction基本的请求分发
PDF输出用到iText包,由于PDF文档的特殊性,有可能需要一些本地的字体支持,在web应用中可能需要在服务器端放置一些字体包
常见的输出PDF有两种方式
第一种是需要建立一个固定的模版,把模版经过adobe lifecycle 处理,在需要填充文字的地方添加
一些文本框(只能是固定大小),再把文本框的边框去掉,并把属性改成readonly,注意设置好page的名字和文本框的name,注意就是,一定要保证文字不要太多,否则文本框不足以显示完全,如果中文不能显示,请尝试在lifecycle中设置文本框字体为中文字体。示例代码如下:
File file = new File("d:\\aaa.pdf");//定义一个文件 OutputStream os = new FileOutputStream(file);//定义一个输出流,如果是jsp的话,可以直接从response中获取输出流 PdfReader reader = new PdfReader("d:/Untitled3.pdf", null); //读入pdf模板 PdfStamper ps = new PdfStamper(reader, os); //定义一个PdfStamper对象 AcroFields af = ps.getAcroFields();// 获取pdf中所有的域 //给域赋值 BaseFont bfchinese = BaseFont.createFont("SIMFANG.TTF",BaseFont.IDENTITY_H, BaseFont.EMBEDDED);//定义一个字体 af.setFieldProperty("Page1.t1", "textfont",bfchinese, null);//设置字体 af.setFieldProperty("Page1.t1","textsize",11,null); //设置文字大小 af.setField("Page1.t1","程序员"); //定义文本框文字 af.setFieldProperty("Page1.t2", "textfont",bfchinese, null);//设置字体 af.setFieldProperty("Page1.t2","textsize",11,null); //设置文字大小 af.setField("Page1.t2","周哥哥"); //定义文本框文字 af.setFieldProperty("Page1.t3", "textfont",bfchinese, null);//设置字体 af.setFieldProperty("Page1.t3","textsize",11,null); //设置文字大小 af.setField("Page1.t3","24"); //定义文本框文字 //关闭资源 ps.close(); os.flush(); os.close(); //done System.out.println("done..");
第二种方式是直接由代码生成PDF文件,操作稍微繁琐一些,不需要模版支持,示例代码如下:
import java.awt.Color; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Date; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.Font; import com.lowagie.text.PageSize; import com.lowagie.text.Paragraph; 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 MyPdfEncoder { public static void main(String[] args) throws Exception{ new MyPdfEncoder().create(); System.out.println("done..."); } private Document pdfDocument; private PdfWriter pdfWriter; private OutputStream os; private String out = "2011.6 大学毕业\n2011.6 "; /** * 总方法 */ public void create() throws Exception { pdfDocument = new Document (PageSize.A4);//创建一个A4幅面的PDF文档 os = new FileOutputStream(new File("d:\\"+new Date().getTime()+".pdf")); pdfWriter = PdfWriter.getInstance (pdfDocument, os); pdfDocument.setMargins(20,20,100,30);//设置边距: pdfDocument.open(); loadTitle(); close(); } /** * 添加PDF内容 * @throws Exception */ public void loadTitle() throws Exception{ //输出标题 Paragraph titleParagraph = new Paragraph("面试表", this.getFont2(16)); titleParagraph.setAlignment(Paragraph.ALIGN_CENTER); titleParagraph.setSpacingAfter(15f);//标题下面稍微空一部分 pdfDocument.add(titleParagraph); PdfPTable table = new PdfPTable(new float[]{90,90,90,90,90,90,90,90}); //第一行 table.addCell(createCellCol("面试职位",22,12,"仿宋")); table.addCell(createCellCol("程序员",22,12,"仿宋")); table.addCell(createCellCol("姓名",22,12,"仿宋")); table.addCell(createCellCol("周哥哥",22,12,"仿宋")); table.addCell(createCellCol("年龄",22,12,"仿宋")); table.addCell(createCellCol("23",22,12,"仿宋")); table.addCell(createCellCol("面试编号",22,12,"仿宋")); table.addCell(createCellCol("001",22,12,"仿宋")); //第二行 table.addCell(createCellCol("居住地",22,12,"仿宋")); table.addCell(createCellColColSpan("xxx",22,12,"仿宋",3)); table.addCell(createCellColColSpan("联系方式",22,12,"仿宋",2)); table.addCell(createCellColColSpan("131111111",22,12,"仿宋",2)); //第三行 table.addCell(createCellCol("时间",22,12,"仿宋")); table.addCell(createCellCol("2011-1-1",22,12,"仿宋")); table.addCell(createCellColColSpan("毕业学校",22,12,"仿宋",2)); table.addCell(createCellColColSpan("111111",22,12,"仿宋",2)); table.addCell(createCellCol("专长",22,12,"仿宋")); table.addCell(createCellCol("游戏",22,12,"仿宋")); //第四行 table.addCell(createCellCol("学历",22,12,"仿宋")); table.addCell(createCellCol("博士",22,12,"仿宋")); table.addCell(createCellColColSpan("期望月薪",22,12,"仿宋",2)); table.addCell(createCellColColSpan("100000",22,12,"仿宋",2)); table.addCell(createCellCol("专业",22,12,"仿宋")); table.addCell(createCellCol("上网",22,12,"仿宋")); //第五行 table.addCell(createCellColColSpan("工作经历",22,12,"仿宋",8)); //第六行 table.setSplitLate(false);//设置单元格可以自动增高 table.setSplitRows(true);//设置单元格可以自动增高 PdfPCell cellx = createCellContent(out,8,90,10); table.addCell(cellx); //第七行 table.addCell(createCellColColSpan("",22,12,"仿宋",8)); //第八行 table.addCell(createCellColColSpan("问 题",22,12,"仿宋",3)); table.addCell(createCellColColSpan("回 答",22,12,"仿宋",3)); table.addCell(createCellColColSpan("评价(分数)",22,12,"仿宋",2)); //第九行 table.addCell(createCellColColSpan("1",44,12,"仿宋",3)); table.addCell(createCellColColSpan("Perfect!",44,12,"仿宋",3)); //9行右侧子表 PdfPTable c9 = new PdfPTable(new float[]{20,70}); c9.addCell(createCellColColSpan("5 4 3 2 1 ",22,8,"仿宋",2)); c9.addCell(createCellCol("理由",22,8,"仿宋")); c9.addCell(createCellCol("Perfect!",22,8,"仿宋")); PdfPCell cell = new PdfPCell(c9); cell.setFixedHeight(44); cell.setLeading(1, 1.2f); cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT); cell.setVerticalAlignment(PdfPCell.TOP); cell.setColspan(2); table.addCell(cell); //第10行 table.addCell(createCellColColSpan("2",44,12,"仿宋",3)); table.addCell(createCellColColSpan("Perfect!",44,12,"仿宋",3)); //10行右侧子表 PdfPTable c10 = new PdfPTable(new float[]{20,70}); c10.addCell(createCellColColSpan("5 4 3 2 1 ",22,8,"仿宋",2)); c10.addCell(createCellCol("理由",22,8,"仿宋")); c10.addCell(createCellCol("Perfect!",22,8,"仿宋")); PdfPCell cell2 = new PdfPCell(c10); cell2.setFixedHeight(44); cell2.setLeading(1, 1.2f); cell2.setHorizontalAlignment(PdfPCell.ALIGN_LEFT); cell2.setVerticalAlignment(PdfPCell.TOP); cell2.setColspan(2); table.addCell(cell2); //第11行 table.addCell(createCellColColSpan("3",44,12,"仿宋",3)); table.addCell(createCellColColSpan("Perfect!",44,12,"仿宋",3)); //11行右侧子表 PdfPTable c11 = new PdfPTable(new float[]{20,70}); c11.addCell(createCellColColSpan("5 4 3 2 1 ",22,8,"仿宋",2)); c11.addCell(createCellCol("理由",22,8,"仿宋")); c11.addCell(createCellCol("Perfect!",22,8,"仿宋")); PdfPCell cell3 = new PdfPCell(c11); cell3.setFixedHeight(44); cell3.setLeading(1, 1.2f); cell3.setHorizontalAlignment(PdfPCell.ALIGN_LEFT); cell3.setVerticalAlignment(PdfPCell.TOP); cell3.setColspan(2); table.addCell(cell3); //最后一行 table.addCell(createCellColColSpan("综合评议(分数)\nA B C D E",44,12,"仿宋",3)); table.addCell(createCellColColSpan("考官评语",44,12,"仿宋",3)); //12行右侧子表 PdfPTable c12 = new PdfPTable(new float[]{20,70}); c12.addCell(createCellCol("分数\n总计",44,8,"仿宋")); c12.addCell(createCellCol("100",44,8,"仿宋")); PdfPCell cell4 = new PdfPCell(c12); cell4.setFixedHeight(44); cell4.setLeading(1, 1.2f); cell4.setHorizontalAlignment(PdfPCell.ALIGN_LEFT); cell4.setVerticalAlignment(PdfPCell.TOP); cell4.setColspan(2); table.addCell(cell4); pdfDocument.add(table); } /** * 创建一个可以随内容多少而自动增高的单元格 * @param text * @param colspan * @param height * @param fontSize * @return */ public static PdfPCell createCellContent(String text,int colspan,int height,int fontSize) { PdfPCell cell = new PdfPCell(new Paragraph(text,getFont2(fontSize))); cell.setMinimumHeight(height);// 设置最小高度,也可以设置指定的高度 cell.setIndent(20f); cell.setLeading(1, 1.2f); cell.setHorizontalAlignment(PdfPCell.LEFT); cell.setVerticalAlignment(PdfPCell.TOP); cell.setColspan(colspan); return cell; } /** * 创建一个跨列的单元格 * @param text * @param height * @param fontSize * @param fontType * @param colspan * @return */ public static PdfPCell createCellColColSpan(String text,int height,int fontSize,String fontType,int colspan){ PdfPCell cell = new PdfPCell(new Paragraph(text,getFont(fontType,fontSize))); cell.setFixedHeight(height); cell.setLeading(1, 1.2f); cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); cell.setColspan(colspan); return cell; } /** * 创建一个不跨列的单元格 * @param text * @param height * @param fontSize * @param fontType * @return */ public static PdfPCell createCellCol(String text,int height,int fontSize,String fontType) { PdfPCell cell = new PdfPCell(new Paragraph(text,getFont(fontType,fontSize))); cell.setFixedHeight(height); cell.setLeading(1, 1.2f); cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); return cell; } /** * 获取字体 * @param type * @param fontSize * @return */ public static Font getFont(String type, int fontSize) { Font font = null; try { if ("仿宋".equals(type)) { BaseFont bf = BaseFont.createFont("SIMFANG.TTF",BaseFont.IDENTITY_H, BaseFont.EMBEDDED); //TTF是字体文件,载入字体 font=new Font(bf, fontSize); }else if ("楷体".equals(type)) { BaseFont bf = BaseFont.createFont("SIMKAI.TTF",BaseFont.IDENTITY_H, BaseFont.EMBEDDED); font=new Font(bf, fontSize); }else if ("宋体".equals(type)) { BaseFont bf = BaseFont.createFont("SIMSUN.TTC",BaseFont.IDENTITY_H, BaseFont.EMBEDDED); font=new Font(bf, fontSize); }else if ("华文中宋".equals(type)) { BaseFont bf = BaseFont.createFont("STZHONGS.TTF",BaseFont.IDENTITY_H, BaseFont.EMBEDDED); font=new Font(bf, fontSize); }else if ("华文新魏".equals(type)) { BaseFont bf = BaseFont.createFont("STXINWEI.TTF",BaseFont.IDENTITY_H, BaseFont.EMBEDDED); font=new Font(bf, fontSize); } } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return font; } /** * 关闭资源 * @throws Exception */ public void close() throws Exception{ pdfDocument.close(); os.flush(); os.close(); } /** * 获取字体 * @param fontSize * @return */ public static Font getFont2(int fontSize){ BaseFont bfchinese; Font font = null; try { bfchinese = BaseFont.createFont("SIMFANG.TTF",BaseFont.IDENTITY_H, BaseFont.EMBEDDED); font = new Font(bfchinese, fontSize); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return font; } /** * 获取字体 * @param fontSize * @return */ private Font getFont(int fontSize){ Font font = new Font(); font.setColor(Color.black); font.setSize(Float.valueOf(String.valueOf(fontSize))); return font; } }
发表评论
-
Java找到PDF中的文字并插入图片
2018-10-18 11:30 1301package gaizhang; import ja ... -
hibernate使用sqlquery原生查询转换到自定义实体
2018-07-03 15:47 819如果使用原生sql语句进行query查询时,hiberna ... -
使用Maven构建一个开源项目的代码结构
2017-01-18 12:29 962本文仅适合maven初学者,适合那些像我一样平时不使用mav ... -
Let's Encrypt 免费SSL证书申请以及nginx和tomcat的应用
2017-01-10 20:00 0一:免费SSL证书的申请 申请地址:htt ... -
Java Des算法实现高速文件加密解密
2016-06-01 15:09 1720import java.io.FileInputStream ... -
利用泛解析和Filter实现动态二级域名
2015-12-26 20:13 2320itEye等网站有个很不错的机制,就是每个用户都有一个永久 ... -
解决com.atomikos.datasource.ResourceException: Error in recovery
2015-09-02 11:36 1370项目架构是struts2+spring+jdbc 启动报错 ... -
Java比较两个数据库中所有表的区别【支持Oracle和SQLServer】
2014-12-09 14:37 5048开发过程中一般是一开发数据库 一生产数据库。 有时候在开发 ... -
根据数据库注释自动生成数据库文档【支持Oracle和Mysql】
2014-11-28 11:02 4169公司项目比较乱,很多时候都是需要先完成项目再准备文档。 数 ... -
根据SVN日志自动生成补丁包[基于Tomcat的JavaEE项目]
2014-11-25 10:08 2414项目开发过程中代码变化很频繁,需要更新文件时,每次都需要手 ... -
用批处理文件为JavaSE项目快速简单的的加载jar包
2014-02-22 10:39 686JavaSE小项目,有时候需要引入很多jar包,但是手动去修 ... -
JSP自定义标签
2011-11-14 07:24 10301.基本定义<%@ taglib uri="& ... -
java中WebService的HelloWorld
2011-11-14 07:24 1704WebService的HelloWorld 首先,在MyEc ... -
Swing中的JOptionPane类
2011-11-14 07:24 1826Swing中的JOptionPane类详解JOptionPan ... -
Java生成图片验证码
2011-11-14 07:24 2846Java生成图片验证码部分代码参考自网易博客白云城主的大作制作 ... -
java生成缩略图
2011-11-11 20:12 1097公司一些项目中经常把用户上传的原图用IMG标签改变尺寸后直接在 ... -
java读取和输出Excel
2011-11-11 20:11 1325Excel读取和输入要用到JXL包 输出Excel的代码示例 ... -
Java中Cookie的操作
2011-11-11 20:07 823一般浏览器只保存200-300个Cookie 每个站点最多20 ... -
Apache-IO实现文件上传
2011-11-11 20:06 865一般在没有部署Struts的小项目中使用 HTML表单 & ... -
ApacheClient模拟浏览器GET和POST请求
2011-11-11 20:04 2136ApacheClient简介HttpClient ...
相关推荐
其中`-d docDir`指定输出文档的目录,`-sourcepath srcDir`指定源代码的路径。 #### 三、注释的实践价值 1. **提高代码可读性**:良好的注释使得其他开发者能够更快地理解代码的功能和逻辑,尤其是在团队协作环境...
java解析PDF格式的文件demo。JAVA实现PDF解析,对PDF文件中的文本内容可输出仅供参考学习,不喜勿喷。
PDFBox可以用来创建新的PDF文档,从现有的PDF文档中提取文本,提取元数据(如作者、标题、主题、关键词等),还可以用来渲染PDF页面到图像,以及对PDF文档进行加密和解密等操作。 ### 三、读取PDF元数据的步骤 ###...
总结来说,"JAVA实现PDF转HTML"是一个利用Java编程语言开发的后端服务,其主要功能是将PDF文档转换为HTML格式,适用于在线预览和网页展示。虽然这个服务在处理某些特殊元素如水印和印章时可能有局限性,但对常规PDF...
### 动态生成PDF文档的Java实现 #### 概述 PDF(Portable Document Format)是Adobe公司公布的一种用于全球电子文档分发的开放式标准。它是一种支持多种压缩方式的文件格式,能够确保文档在不同软件平台上的一致性...
【Java技术文档PDF】是一份专门针对Java编程语言的技术性文档,它包含了广泛而深入的Java知识,旨在帮助读者理解并掌握这一强大的编程工具。这份文档可能是由董浏榆编撰或整理的,标签中的“PDF”表明了文档的格式,...
在Java中创建PDF文档,首先需要创建一个PdfWriter实例,然后通过这个实例创建PdfDocument对象。例如: ```java Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream(...
此主题聚焦于如何在Java环境下将PDF文档转换为BASE64字符串。PDF(Portable Document Format)是一种通用的文件格式,用于存储文档,包括文本、图像和图形。而BASE64是一种将二进制数据转化为ASCII字符的编码方法,...
Java读取PDF并显示在浏览器是一项常见的技术需求,特别是在Web应用中,用户可能需要预览或下载PDF文档。为了实现这一功能,我们需要了解几个关键知识点: 1. **PDF阅读器集成**:描述中提到的前提是本地电脑需要...
iText 是一个强大的 Java 库,用于生成和编辑 PDF 文档。在 Java 开发中,iText 提供了丰富的 API,使得开发者可以方便地在代码中创建 PDF 文件、添加文本、图像、表格、链接等元素,甚至进行数字签名和表单处理。在...
在Java编程环境中,生成PDF文档是一项常见的需求,特别是在企业级应用中,如报表、发票、合同等场景。本文将详细讲解如何使用Java生成包含中文字符的PDF文档,并解决中文乱码问题,主要涉及的库是iText库及其针对...
总之,删除PDF空白页是Java开发者在处理PDF文档时可能遇到的问题,通过iTextPDF和PDFBox这两个强大的库,我们可以高效地完成这一任务。无论是利用页面内容的可视化检测还是字形分析,都能帮助我们实现目标。在实践中...
这是一个重要的步骤,因为`PDDocument`是处理PDF文档的主要类。 ```java File file = new File("path_to_your_pdf_file.pdf"); PDDocument document = PDDocument.load(file); ``` 2. **获取PDF页面**:PDF文件由...
在Java编程环境中,读取PDF文件是一项常见的任务,特别是在开发桌面应用或需要处理PDF文档内容时。本篇文章将深入探讨如何使用Java来读取PDF文件,并将其内容展示在一个由JFrame和JPanel构建的GUI窗口中。 首先,...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年...通过阅读“Java学习文档PDF”,你可以系统地掌握这个强大而灵活的编程语言,并逐步成长为一名熟练的Java开发者。
2. **创建PDF文档**:创建一个`Document`对象作为PDF文档的基础,然后使用`PdfWriter`将其与输出流关联,例如输出到文件或网络流。 ```java import com.itextpdf.text.Document; import ...
在Java开发中,生成PDF文档是一项常见的任务,尤其在需要创建报告、发票或者证书等应用场景。本示例主要探讨如何利用Java技术实现PDF模板套打,包括二维码、文字和表格的插入。PDF作为一种通用的文档格式,具有良好...
在Java中生成PDF文档,开发者可以实现从数据源如数据库、文本或HTML转换为高质量的PDF输出,适用于报告、发票、证书等多种场景。 Java生成PDF文档,通常借助于一些开源库,如iText、Apache PDFBox、 Flying Saucer...
总结起来,生成包含表格的PDF文件在Java中涉及的关键技术点包括使用iText库,理解PDF文档的结构,掌握表格的创建和填充方法。如果你按照上述步骤并结合提供的代码资源,应该能够顺利地在Java项目中实现这一功能。...
iText是一个流行的Java库,用于创建和编辑PDF文档,特别适合动态生成文档。在这个小例子中,我们可能看到了如何设置文本、字体、页面布局以及可能的图像插入等基本操作。 首先,我们需要理解PDF文档的基本结构。PDF...