Java操作PDF文档

1.文档内容的基本格式设置

示例代码:

public class Pdf05C {

public static void main(String[] args) {

Document document = new Document();

try {

PdfWriter.getInstance(document, new FileOutputStream("C:\\005.pdf"));

document.open();

BaseFont font = BaseFont.createFont(BaseFont.TIMES_ROMAN,BaseFont.CP1252,BaseFont.NOT_EMBEDDED);

BaseFont font2 = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252,BaseFont.NOT_EMBEDDED);

BaseFont font3 = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);

//BaseFont.createFont(name, encoding, embedded)

Font chinese = new Font(font3,15,Font.NORMAL);

Font content1 = new Font(font2, 12,Font.BOLD);

Font content = new Font(font, 16);

document.add(new Paragraph("This document is created by iText!",content));

document.add(new Paragraph("www.samsung.com", content1));

document.add(new Paragraph("www.samsung.com"));

document.add(new Paragraph("there are some words",FontFactory.getFont(FontFactory.HELVETICA,15,Font.UNDERLINE)));

document.add(new Paragraph("These content will be deperated!",

FontFactory.getFont(FontFactory.COURIER,15,Font.NORMAL|Font.STRIKETHRU)));

document.add(new Paragraph("中文内容也可以正常显示",chinese));

Chunk uk1 = new Chunk("Text Chunk1",FontFactory.getFont(FontFactory.COURIER_BOLD,12,Font.ITALIC));

Chunk uk2 = new Chunk("Text Chunk2",FontFactory.getFont(FontFactory.COURIER_BOLD,15,Font.BOLD));

uk2.setBackground(new Color(30, 50, 120));

document.add(uk1);

document.add(uk2);

JOptionPane.showMessageDialog(null, "文档已创建!");

document.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (DocumentException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

要点:

1)设置字体,使用BaseFont创建基准字体,通过Font类来格式化具体显示内容的字体。常见格式包括:加粗、斜体、下划线、删除线等。

2)文档块Chunk,使用Chunk类创建一个文档块用于显示在PDF文档中,这些文档块是可以在同一行内并列显示的。

3)当PDF文档中显示非英文字符时,需要使用BaseFont类的静态方法createFont(String name,String encoding,boolean embedded)来对文字进行重新编码指定。处理中文时name为具体的中文字体名称,encoding值为UniGB-UCS2-H,embedded值使用字体常量NOT_EMBEDDED。

2.对文档添加页码

示例代码:

public class Pdf06C {

/**

* @date 2015年7月7日 下午3:19:34

*/

public static void main(String[] args) {

Document document = new Document();

try {

PdfWriter.getInstance(document, new FileOutputStream("C:\\006.pdf"));

document.open();

for (int i = 1; i < 5; i++) {

document.add(new Paragraph("No."+i+"page"));

document.newPage();

}

document.close();

PdfReader reader = new PdfReader("C:\\006.pdf");

int pages = reader.getNumberOfPages();

PdfStamper stamp = new PdfStamper(reader, new FileOutputStream("C:\\006_pre.pdf"));

BaseFont ch = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);

PdfContentByte pager = null;

for (int i = 1; i <= pages; i++) {

pager = stamp.getUnderContent(i);

pager.beginText();

pager.setFontAndSize(ch, 10);

pager.setTextMatrix(280, 15);

pager.showText("第"+i+"页,共"+pages+"页");

pager.endText();

}

stamp.close();

JOptionPane.showMessageDialog(null, "操作已完成!");

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (DocumentException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

以上程序先创建了一个4页的pdf文档006.pdf,位于C盘根路径下。添加页码时,通过PdfReader类来读取这个文档,并通过PdfStamper类来完成页码添加,输出处理后的文档为006_pre.pdf。

关键API:

1)public int com.lowagie.text.pdf.PdfReader.getNumberOfPages(),该方法返回reader读取文档的总页数。

2)使用PdfStamper获取当前页面底部内容,进行页码添加,并使用setTextMatrix(float x,float y)方法设置页码的显示位置。

时间: 2024-09-30 07:01:35

Java操作PDF文档的相关文章

java导出pdf文档

java导出pdf文档,多是iText实现的,可以创建pdf文档,并向文档写入内容. 1 导入包:itext-2.0.6.jar       itext必须使用的包. iTextAsian.jar      向pdf写入中文必须的包. 2 代码: package com.exp.pdf; import java.awt.Color; import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowa

java操作xml文档

目前最常用的XML解析技术是DOM和SAX. DOM是基于XML的树结构来完成解析的,适用于多次访问的XML文档,但是DOM解析比较消耗资源:而SAX是基于事件解析,适用于大数据量的XML文档,占用资源少,内存消耗小. DOM是文档对象模型(Document Object Model) 首先DOM会将XML文档映射成一颗倒挂的树,在这棵树中,每个节点都是以节点对象的形式存在的. 我们通过操作这些对象就可以完成XML文件的读写任务了. 我们可以直接根据节点的名称或属性查找该节点对象,也可以根据一个

C#工具类:使用iTextSharp操作PDF文档

iTextSharp是一个用于操作PDF文件的组件DLL程序,在C#程序中可以引用iTextSharp组件,用于开发与PDF文件相关的报表等功能,利用iTextSharp组件提供出来的方法接口,我们可以实现很多与PDF文档有关的操作,如打开PDF文档对象.往PDF文档中添加段落.添加图片链接等等,功能非常的强大.这边简单对iTextSharp类进行了封装,提供一些常用的PDF操作方法. iTextSharp官网:http://www.itextpdf.com/ (英文好的建议直接查看原始文档).

Java生成PDF文档(表格、列表、添加图片等)

需要的两个包及下载地址: (1)iText.jar:http://download.csdn.net/source/296416 (2)iTextAsian.jar(用来进行中文的转换):http://download.csdn.net/source/172399 代码如下: 1 import java.awt.Color; 2 import java.io.FileOutputStream; 3 import com.lowagie.text.Cell; 4 import com.lowagi

[开源框架推荐]Icepdf:纯java的pdf文档的提取和转换库

ICEpdf 是一个轻量级的开源 Java 语言的 PDF 类库.通过 ICEpdf 可以用来浏览.内容提取和转换 PDF 文档,而无须一些本地PDF库的支持. 可以用来做什么? 1.从pdf文件中提取所有的文字或信息,比如给pdf文档做摘要 2.把pdf转换成图片,这个功能非常的棒,比如给pdf文件做缩略图或者直接做一个纯js的pdf阅读器. 3.pdf文档的分页打印和信息搜索. 4.pdf中添加.修改或删除批注信息. 在pdf到图片转换方面,最好的开源产品. 官方地址:http://www.

java读取pdf文档

import java.io.*;import org.pdfbox.pdmodel.PDDocument;import org.pdfbox.pdfparser.PDFParser;import org.pdfbox.util.PDFTextStripper; public class PDFReader {  public static String file_path = "F:/pdf/网易技术部的MySQL中文资料.pdf"; // 获取PDF内纯文本信息 public St

Java 在PDF文档中绘制图形

本篇文档将介绍通过Java编程在PDF文档中绘制图形的方法.包括绘制矩形.椭圆形.不规则多边形.线条.弧线.曲线.扇形等等.针对方法中提供的思路,也可以自行变换图形设计思路,如菱形.梯形或者组合图形等. 使用工具:Free Spire.PDF for Java(免费版) Jar文件导入: 步骤1:将安装包中lib文件夹下的两个文件复制到程序中新建的文件夹中(这里在程序中可新建一个文件夹并命名为Lib) 步骤2:复制文件后,将两个添加引用到程序:选中这两个jar文件,点击鼠标右键,选择"Build

itextpdf JAVA 输出PDF文档

使用JAVA生成PDF的时候,还是有些注意事项需要处理的. 第一.中文问题,默认的itext是不支持中文的,想要支持,需要做些处理. 1.直接引用操作系统的中文字体库支持,由于此方案限制性强,又绑定了操作系统,所以此处不做实现,有兴趣可在网上搜索看看. 2.引用itext-asian.jar包的字体支持,代码稍后上. 第二.表格中的设置,特别是上中下,左中右,不同的对象有不同的枚举实现,刚入手很容易混淆.其外是前景色,背景色,表格颜色等等. 第三.输出图片,很容易报错.. package com

java生成PDF文档

依赖jar包:iText-2.1.7.jar.iTextAsian.jar.itext-rtf-2.1.7.jar 代码如下: package com.servlet; import java.awt.Color; import java.io.FileOutputStream; import java.text.DecimalFormat; import java.util.Arrays; import java.util.HashSet; import java.util.List; imp