`
bjtale
  • 浏览: 29554 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

使用Java操作PDF文档

阅读更多

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

    示例代码:

package com.yan.exc;

import java.awt.Color;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.swing.JOptionPane;

import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;

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.对文档添加页码

    示例代码:

package com.yan.exc;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.swing.JOptionPane;

import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;


public class Pdf06C {

	public static void main(String[] args) {
		try {
			PdfReader reader = new PdfReader("C:\\EJB3.0实例教程.pdf");
			int pages = reader.getNumberOfPages();
			PdfStamper stamp = new PdfStamper(reader, new FileOutputStream("C:\\test_pre.pdf"));
			BaseFont ch = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
			PdfContentByte pager = null;
			for (int i = 1; i <= pages; i++) {
				//stamp.get
				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();
		}
	}
}

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

    关键API:

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

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

分享到:
评论

相关推荐

    java解析PDF文件

    java解析PDF格式的文件demo。JAVA实现PDF解析,对PDF文件中的文本内容可输出仅供参考学习,不喜勿喷。

    使用java生成pdf文件

    在本例中,我们看到使用的是 `iText` 库,这是一个强大的 Java 库,专门用于创建和修改 PDF 文档。以下是 `iText` 的核心概念和使用方法的详细解释: 1. **Document 对象**:`Document` 是 iText 中的基本容器,...

    java读取pdf文件属性

    PDFBox可以用来创建新的PDF文档,从现有的PDF文档中提取文本,提取元数据(如作者、标题、主题、关键词等),还可以用来渲染PDF页面到图像,以及对PDF文档进行加密和解密等操作。 ### 三、读取PDF元数据的步骤 ###...

    java使用itext实现pdf文件下载

    在Java开发中,生成和处理PDF文档是一项常见的需求。Itext是一个强大的库,它允许开发者在Java环境中创建、编辑和修改PDF文档。本教程将详细讲解如何使用Itext库实现PDF文件的下载,包括通过系统路径下载和通过...

    java操作Pdf文档详情

    在Java中,处理PDF文档是一项常见的任务,包括读取、修改、添加内容以及删除页面等操作。本篇文章将深入探讨如何在Java环境中实现对PDF文档的高效操作。 首先,我们需要引入一个可靠的库来支持PDF处理。Apache ...

    Java 读取PDF文件

    在Java编程环境中,读取PDF文件是一项常见的任务,特别是在开发桌面应用或需要处理PDF文档内容时。本篇文章将深入探讨如何使用Java来读取PDF文件,并将其内容展示在一个由JFrame和JPanel构建的GUI窗口中。 首先,...

    java 操作PDF实例

    Java操作PDF是一个常见的任务,特别是在开发企业级应用时,例如报表生成、文档处理等。IText是一个强大的开源库,专门用于生成和修改PDF文档。...通过学习和实践这些代码,可以提升在Java环境中处理PDF文档的能力。

    JavaPDF操作类库API_Free Spire.PDF for Java_5.1.0

    1.功能:该API为适用于Java平台下,通过后端程序代码调用API接口操作PDF文档,可实现如下功能: 1.1 文档转换:PDF转图片/Word/SVG/XPS/HTML/XPS/TIFF、图片转PDF 1.2 文档操作:文档创建、合并、拆分、压缩、复制...

    java_pdf.rar_JAVA.pdf _java pdf_java操作pdf

    iText是一个开源的Java库,允许开发者在PDF文档中添加文本、图像、表格等元素,甚至可以进行复杂的PDF文档操作,如签署、加密和表单填写。 描述中的"一个java操作pdf文件的开发包,很好用的"进一步确认了这个压缩包...

    Java生成pdf文件,解决中文乱码问题.pdf

    使用 iText 库生成 PDF 文件的最后一步是将文档写入到文件中。我们可以使用 PdfWriter 对象将文档写入到文件中,并生成一个 PDF 文件。 7. 总结 本文讲解了如何使用 iText 库生成 PDF 文件,解决中文乱码问题。...

    java 读取PDF文件中的内容

    1. **初始化PDF文档**:使用`PDDocument`类加载PDF文件。这是一个重要的步骤,因为`PDDocument`是处理PDF文档的主要类。 ```java File file = new File("path_to_your_pdf_file.pdf"); PDDocument document = ...

    java spire.pdf 使用 对 pdf文件的相关操作

    自己写的 spire.pdf 简单的demo ,有一些基础的使用方法,对刚接触的小伙伴会非常友善; 里面主要包含: 1.去除水印; 2.获取每页pdf的图片; 3.获取书签; 4.读取pdf将pdf转化为文字,最后由txt文件保存; 5....

    java操作pdf文件

    在Java编程环境中,处理PDF(Portable Document Format)文件是一项常见的任务,这主要涉及到读取、创建、编辑或打印PDF文档。在这个场景下,我们聚焦于使用iText库来实现Java报表打印。iText是一个强大的开源Java库...

    java实现PDF文件添加图片

    iTextPDF是一款强大的Java库,用于创建和修改PDF文档。它提供了丰富的API,使得开发者可以方便地对PDF进行各种操作,包括插入文本、绘制图形、添加链接以及我们今天关注的——插入图片。 1. **iTextPDF的安装与导入...

    Java读取PDF查找指定文字位置,并添加悬浮图片(文档签字/盖章)

    首先,我们需要理解PDF文档的结构以及如何在Java中操作PDF。 PDF(Portable Document Format)是一种用于表示文档的文件格式,包括文本格式和图像,无论软件、硬件或操作系统如何,都能保持文档的一致性。在Java中...

    java 打印pdf文件 也可批量打印

    - **Adobe Reader**:Adobe Reader是一款广泛使用的PDF阅读器软件,它不仅能够阅读PDF文件,还能打印PDF文档。 - **命令行参数**:通过向Adobe Reader传递不同的命令行参数,我们可以控制其行为,如打开、打印等操作...

    java创建和解析PDF

    总的来说,Java提供了一系列工具和库,使得开发者能够轻松地处理PDF文件,无论是创建新的PDF文档,还是从中提取文本。在实际项目中,理解并熟练运用这些方法对于提升工作效率和代码质量具有重要意义。

    Java操作pdf用到的所有jar

    在Java中操作PDF,开发者通常会依赖于一些第三方库,这些库提供了丰富的API来方便地处理PDF文档。在给定的压缩包“Java操作pdf用到的所有jar”中,包含了两个主要的库:icepdf.jar和pdfbox.jar。接下来,我们将详细...

    JAVA根据PDF模板生成PDF文件.rar

    在IT行业中,生成PDF文档是常见的需求,尤其是在Java Web应用中。这个压缩包"JAVA根据PDF模板生成PDF文件.rar"提供了实现这一功能的资源。主要包含一个Java类`PdfUtilsPic.java`,一个PDF模板文件`M8.pdf`,以及一个...

    java操作pdf,pdf-demo

    本项目“java操作pdf,pdf-demo”就是基于Java实现的PDF操作示例,它可以帮助开发者了解如何在Java环境下与PDF文档进行交互。 首先,让我们了解一些关键的Java库,它们是处理PDF文档的基础: 1. Apache PDFBox:...

Global site tag (gtag.js) - Google Analytics