`
小杨学JAVA
  • 浏览: 900705 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

itext 在pdf显示第XX页

 
阅读更多

如果想在每页显示第x页/共y页这样的功能,实现起来没有那么轻松。
官方页面有具体实现的例子,连接地址:
http://itextdocs.lowagie.com/tutorial/directcontent/pageevents/index.php
源码:
http://itextdocs.lowagie.com/examples/com/lowagie/examples/directcontent/pageevents/PageNumbersWatermark.java

源码里面的东西比较繁多,精简以后如下:

 


Java代码
1.import java.io.FileOutputStream;
2.
3.import com.lowagie.text.Document;
4.import com.lowagie.text.Element;
5.import com.lowagie.text.ExceptionConverter;
6.import com.lowagie.text.Font;
7.import com.lowagie.text.PageSize;
8.import com.lowagie.text.Paragraph;
9.import com.lowagie.text.pdf.BaseFont;
10.import com.lowagie.text.pdf.PdfContentByte;
11.import com.lowagie.text.pdf.PdfPageEventHelper;
12.import com.lowagie.text.pdf.PdfTemplate;
13.import com.lowagie.text.pdf.PdfWriter;
14.
15.public class PdfExport extends PdfPageEventHelper{
16.
17. public PdfTemplate tpl;
18. public BaseFont bf;
19.
20. public static void main(String[] args) {
21. Document document = new Document(PageSize.A4, 20, 20, 20, 20);
22. try {
23. PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D:\\HelloItext.pdf"));
24. writer.setPageEvent(new PdfExport());
25.
26. BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
27.
28. document.open();
29.
30. Paragraph title = new Paragraph("测试内容。。。。", new Font(bfChinese,15));
31. title.setAlignment(Element.ALIGN_CENTER);
32. document.add(title);
33. } catch (Exception de) {
34. de.printStackTrace();
35. }
36. document.close();
37. }
38.
39. public void onOpenDocument(PdfWriter writer, Document document) {
40. try {
41. tpl = writer.getDirectContent().createTemplate(100, 100);
42. bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
43. }
44. catch(Exception e) {
45. throw new ExceptionConverter(e);
46. }
47. }
48.
49. public void onEndPage(PdfWriter writer, Document document) {
50. //在每页结束的时候把“第x页”信息写道模版指定位置
51. PdfContentByte cb = writer.getDirectContent();
52. cb.saveState();
53. String text = "第" + writer.getPageNumber() + "页,共";
54. cb.beginText();
55. cb.setFontAndSize(bf, 8);
56. cb.setTextMatrix(460, 786);//定位“第x页,共” 在具体的页面调试时候需要更改这xy的坐标
57. cb.showText(text);
58. cb.endText();
59. cb.addTemplate(tpl, 492, 786);//定位“y页” 在具体的页面调试时候需要更改这xy的坐标
60.
61. cb.saveState();
62. cb.stroke();
63. cb.restoreState();
64. cb.closePath();//sanityCheck();
65. }
66.
67. public void onCloseDocument(PdfWriter writer, Document document) {
68. //关闭document的时候获取总页数,并把总页数按模版写道之前预留的位置
69. tpl.beginText();
70. tpl.setFontAndSize(bf, 8);
71. tpl.showText(Integer.toString(writer.getPageNumber() - 1)+"页");
72. tpl.endText();
73. tpl.closePath();//sanityCheck();
74. }
75.}

分享到:
评论

相关推荐

    iText生成pdf解决中文不显示

    iText生成pdf解决中文不显示字库,pdf凉字不显示,由于生成iText插件生成pdf的时候中文会显示不出来,遇到过的是"凉"字,查到是字体库的原因,网上下载字体库msyh.ttc,生成的时候指定字体库,就可以解决了,小bug一...

    itext7 pdf转图片

    在IT行业中,iText是一个广泛使用的Java和.NET库,用于创建、编辑和处理PDF文档。在最新的版本iText 7中,它提供了丰富的功能,包括将PDF文档转换为图像。这个话题涉及到PDF处理和图像转换两个核心领域。下面将详细...

    itextpdf在已有pdf指定页及位置添加图片(包含jar及实例)

    // 在第一页添加图片 stamper.getUnderContent(1).addImage(image); stamper.close(); reader.close(); } catch (Exception e) { e.printStackTrace(); } ``` 请注意,上述代码只是一个基础示例,实际应用中...

    Android使用iText生成pdf并读取pdf内容

    在Android平台上,生成和读取PDF文件是一项常见的需求,特别是在数据导出、报告生成或文档共享等场景。iText是一个强大的开源库,它允许开发者在Java和.NET环境中创建、编辑和处理PDF文档。在这个场景中,我们将探讨...

    Itext删除PDF的图层

    在Itext中,我们需要遍历PDF的结构,找到OCGs,并读取它们的属性,如名称、可见性状态等。`OCGParser`可能包含解析PDF元数据,识别OCGs并存储在适当的数据结构中的逻辑。 **OCGRemover.java** `OCGRemover`类可能...

    itext 生成pdf 目录

    在使用iText生成PDF目录时,要注意几点: - 确保每个书签都有一个对应的目标位置,否则在PDF中点击书签可能无法正确跳转。 - 避免内存泄漏,尤其是在处理大量书签时,要及时释放资源。 - 书签层次不宜过深,以免影响...

    Itext导出PDF,中文不显示字体

    Itext导出PDF,中文不显示字体,在body上设置font-family: "Arial Unicode MS",同时在java中引入fontResolver.addFont("/ARIALUNI.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 就可以显示中文了

    itext导出pdf不显示中文 ITextRenderer不显示中文

    在IT行业中,生成PDF文档是常见的需求,而iText是一个广泛使用的Java库,用于创建和修改PDF文件。然而,当涉及到非英文字符,如中文时,可能会遇到显示问题。"iText导出pdf不显示中文 ITextRenderer不显示中文"这个...

    iText操作Pdf简单整理

    在使用iText时,首先需要引入相应的库文件,如压缩包中的`itextpdf-5.5.1.jar`,这是iText的主要库,包含了处理PDF文档的核心功能。如果需要处理中文字符或者亚洲语言,还需要引入`itext-asian-5.1.0.jar.zip`解压后...

    itextpdf.jar

    在实际开发中,iTextPDF库易于集成,提供了丰富的示例和文档,使得开发者能够快速上手。同时,它的性能优化也做得相当出色,即使处理大型文档也能保持高效。 总结来说,iTextPDF是Java开发中不可或缺的PDF处理工具...

    iText_pdf.rar_iText pdf_itext PDF类

    在描述中提到的“iText可以制作中文PDF文件的JAVA源程序”,意味着这个压缩包可能包含示例代码或教程,展示了如何使用iText库在Java程序中创建包含中文字符的PDF文档。通常,处理中文字符需要正确配置字体资源,并...

    Java解决Itext pdf中文不显示问题

    在Java开发中,Itext是一个常用的库,用于创建、编辑和读取PDF文档。然而,当处理中文字符时,Itext可能会出现不显示或者显示乱码的问题。这个问题主要是由于PDF编码格式与Java字符串编码不匹配导致的。下面将详细...

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

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

    itext生成PDF开发文档

    import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.Document; public class create_PDF { public static void main(String args[]) throws ...

    使用IText生成PDF和WORD文档

    import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfWriter; import java.io.FileOutputStream; import java...

    itextpdf-5.5.13

    iTextPDF 5.5.13版本在Android上的表现良好,但需要注意的是,由于PDF库通常较大,可能会影响应用的大小,因此在发布时需要考虑优化和减小APK体积。 至于"printPdfTest.java"这个示例文件,它很可能包含了一个完整...

    itextpdf jar包

    6. **事件处理**:iTextPDF允许注册事件监听器,可以在特定事件(如页面添加、文档结束等)触发时执行自定义代码,这对于添加页眉页脚、自动生成目录等功能非常实用。 7. **PDF/A兼容性**:iTextPDF支持创建符合PDF...

    itext对pdf进行编辑

    itext对pdf进行编辑.使用Adobe对pdf创建表单,itext对表单填充,下拉选,单选,文本框.复选框.itext对pdf进行编辑.使用Adobe对pdf创建表单,itext对表单填充,下拉选,单选,文本框.复选框

    itextpdf中文帮助文档.pdf

    这个中文帮助文档提供了关于如何使用iTextPDF库在Java项目中处理PDF的详细指南,适合对PDF操作有一定需求的开发者。iTextPDF不仅支持创建新的PDF文档,还能在现有文档上进行编辑,如添加文本、图像、表格、链接等,...

    iText生成pdf解决中文不显示字库,这是个中文字库

    iText生成pdf解决中文不显示字库,pdf凉字不显示,由于生成iText插件生成pdf的时候中文会显示不出来,遇到过的是"凉"字,查到是字体库的原因,网上下载字体库msyh.ttc,生成的时候指定字体库,就可以解决了,小bug一...

Global site tag (gtag.js) - Google Analytics