iText 5

https://github.com/itext/itextpdf

您可以在此处找到最新版本:

http://github.com/itext/itextpdf/releases/latest

http://jump-pilot.sourceforge.net/repository/org/apache/commons/commons-imaging/1.0-SNAPSHOT/
依赖加入:

	<properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <itext.version>5.5.1</itext.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>${itext.version}</version>
        </dependency>

        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-pdfa</artifactId>
            <version>${itext.version}</version>
        </dependency>

        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-xtra</artifactId>
            <version>${itext.version}</version>
        </dependency>

        <dependency>
            <groupId>com.itextpdf.tool</groupId>
            <artifactId>xmlworker</artifactId>
            <version>${itext.version}</version>
        </dependency>
    </dependencies>

PdfWriter

PDF的DocWriter类。
当这个PdfWriter被添加到一个特定的PdfDocument时,添加到这个文档的每个元素的PDF表示将被写入输出流。

PdfWriter 构造方法

public static PdfWriter getInstance(final Document document, final OutputStream os)

PdfWriter 常用方法

// 获取此文档的页码。如果您之前(重新)设置了页码,那么这个页码可以与实际的页码不同。
public int getPageNumber()

public int getCurrentPageNumber()

// 使用此方法获取此文档下的直接内容。只有一个直接内容,对该方法的多次调用将始终检索相同的对象。
public PdfContentByte getDirectContentUnder()
// 使用此方法获取本文档的直接内容。只有一个直接内容,对该方法的多次调用将始终检索相同的对象。
public PdfContentByte getDirectContent()

// 使用此方法可从其他PDF文档获取页面。该页面可以用作任何其他PdfTemplate。请注意,使用相同的参数多次调用此方法将检索相同的对象。
public PdfImportedPage getImportedPage(final PdfReader reader, final int pageNumber)

PdfDocument

Document

一个通用的Document类。
所有类型的文本元素都可以添加到HTMLDocument中。当添加元素时,Document向所有监听器发出信号。
备注:
创建文档之后,您可以添加一些元信息。
您还可以设置页眉/页脚。
你必须先打开文档才能写内容。
一旦打开文档,就只能写入内容(不能再写入元格式了!)
当你改变某一页的页眉/页脚时,这将从下一页开始生效。
关闭文档后,每个监听器(以及它的OutputStream)都被关闭

Document 常用方法

//打开文档。
//一旦文档被打开,您就不能再编写任何头信息或元信息了。在开始向文档主体添加内容之前,必须先打开文档。
public void open() 

//关闭文档。
//一旦所有的内容都写入了body,就必须关闭body。在那之后,任何东西都不能写入body
public void close()

//向文档添加用户定义的标头
public boolean addHeader(String name, String content)
public boolean addTitle(String title)
public boolean addSubject(String subject)
public boolean addKeywords(String keywords)
public boolean addAuthor(String author)
public boolean addCreator(String creator)
public boolean addCreationDate()



PdfContentByte

PdfContentByte是一个包含用户定位的页面文本和图形内容的对象。它知道如何应用正确的字体编码。

在PDF中当涉及到布局问题时(不再是自动地添加文本、图片等等,对元素在页面上的位置有一定的要求),有时我们希望将一些图像或者文本放置在某页的指定位置,为实现该功能,我们将使用PdfContentByte类。

PdfContent对象可以通过在使用Writer对象中使用getDirectContent()方法来得到该对象

//向页面添加图像。图像必须有绝对定位。
public void addImage(final Image image)

public void saveState()
public void restoreState()

//设置图形状态
public void setGState(final PdfGState gstate)

//创建一个新模板,它只不过是一个表单XObject。这个模板可以包含在这个PdfContentByte或其他模板中。
//只有当文档关闭,模板才写入输出。允许在第一页显示仅在最后一页定义的文本
public PdfTemplate createTemplate(final float width, final float height)

//向页面添加图像。图像的定位是通过变换矩阵完成的。使用addImage(image, image_width, 0,0, image_height, x,y)将图像定位在(x,y)处。
public void addImage(final Image image, final float a, final float b, final float c, final float d, final float e, final float f)

PdfTemplate

实现表单XObject
创建一个新模板,它只不过是一个表单XObject。这个模板可以包含在这个PdfContentByte或其他模板中。只有当文档关闭,允许在第一页显示仅在最后一页定义的文本时,模板才写入输出。

PdfPage

PdfPage是PDF page对象。
Page对象是一个字典,它的键描述了包含文本、图形和图像的单个页面。Page对象是Pages树的一个叶节点。该节点在“便携式文档格式参考手册1.3版”6.4节中描述(73-81页)

PdfName

PdfName是一个可以在pdf文件中用作名称的对象

一个名字,就像一个字符串,是一个字符序列。它必须以斜杠开头,后面跟一个32到136的ASCII字符序列(%,(,),[,],<,>,{,},/和#除外)。除了0x00之外的任何字符都可以通过将其前面带有#的两个字符的十六进制代码包含在名称中。名称的最大字符数为127。该节点在’Portable Document Format Reference Manual version 1.7’章节3.2.4 (page 56-58)中有描述。

PdfObject

PdfObject是所有PDF对象的抽象超类。
PDF支持七种基本类型的对象:布尔值、数字、字符串、名称、数组、字典和流。此外,PDF还提供了一个空对象。对象可以被标记,以便它们可以被其他对象引用。所有这些基本的PDF对象都在“便携式文档格式参考手册1.3版”第4章(37-54页)中进行了描述。

Rectangle

矩形是几何图形的表示法。矩形使用setBorderWidth(float)和setBorder(int)来支持固定宽度的边框。它们还支持使用setBorderWidthLeft(float)或setBorderColorLeft(BaseColor)等方法在每边改变宽度/颜色的边框。

//显示矩形边框的一边 可用于PdfPCell
public static final int TOP = 1
//设置左边框的宽度
public void setBorderWidthLeft(final float borderWidthLeft)

//设置矩形的背景颜色
public void setBackgroundColor(final BaseColor backgroundColor)

public Rectangle rotate() 

//设置矩形的旋转。有效值为0、90、180和270。
public void setRotation(final int rotation)

//左下角的x坐标
public float getLeft()

public void setLeft(final float llx)

//启用/禁用指定边的边框。边界被指定为常量LEFT, RIGHT, TOP, BOTTOM的整数位组合 可用于PdfPCell
public void setBorder(final int border)
// 设置矩形的背景颜色 可用于PdfPCell
sn.setBackgroundColor(BaseColor.YELLOW)

BaseColor

BaseColor 构造方法

public BaseColor(final int red, final int green, final int blue)
public BaseColor(final float red, final float green, final float blue) 

//alpha是指的透明度,这个词还出现在元件的色彩效果里,以及代码属性中。 
public BaseColor(final int red, final int green, final int blue, final int alpha)

public BaseColor(final float red, final float green, final float blue, final float alpha)

public BaseColor(final int argb)

public static final BaseColor WHITE

GrayColor

public static final GrayColor GRAYBLACK = new GrayColor(0f)

public static final GrayColor GRAYWHITE = new GrayColor(1f)

FontFactory

如果使用True Type字体,可以先将不同ttf和ttc文件的路径声明到这个静态类,然后使用一个静态getfont方法在代码中创建字体,而不必将路径作为参数输入。

add:
TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字体文件格式,随着windows的流行,已经变成最常用的一种字体文件表示方式。
"系统盘\WINDOWS\Fonts”
字库

public static Font getFont(final String fontname, final String encoding, 
    final boolean embedded, final float size, 
    final int style, final BaseColor color) 
  
public static Font getFont(final String fontname, final String encoding, final boolean embedded)

//在一个目录中注册所有字体
public static int registerDirectory(final String dir)

public static Set<String> getRegisteredFonts() 

BaseFont

支持的几种字体类型的基类

Font

包含字体的所有规格:fontfamily, size, style和color。

Font 构造方法


public Font(final FontFamily family, final float size, final int style, final BaseColor color)
//采用水平书写的Unicode编码
public static final String IDENTITY_H = "Identity-H";

public static final String IDENTITY_V = "Identity-V"
//获取Postscript字体名称
public abstract String getPostscriptFontName()

Image

Image是插入到文档中的图形元素(JPEG、PNG或GIF)的表示形式

Image 构造方法

public static Image getInstance(final String filename)

public static Image getInstance(final URL url)
public Image(final URL url) 

//复制建构函数
protected Image(final Image image)

public static Image getInstance(final PdfTemplate template)


Image 常用方法

//将图像按矩形的尺寸缩放
public void scaleAbsolute(final Rectangle rectangle)

// 设置图像的绝对位置
public void setAbsolutePosition(final float absoluteX, final float absoluteY)

//缩放图像,使其适合特定的宽度和高度
public void scaleToFit(final float fitWidth, final float fitHeight)

// 获取图像的缩放宽度 这是考虑到旋转的图像的缩放宽度。
public float getScaledWidth()

public float getScaledHeight()


PdfGState

图形状态字典

//设置当前描边alpha常数,指定透明成像模型中用于非描边操作的常数形状或常数不透明度值。
public void setFillOpacity(float ca)

ColumnText

以列形式格式化文本。文本由一系列行在左右两侧绑定。这使得柱可以有任何形状,而不仅仅是矩形。
可以设置几个参数,如第一段行缩进和段落之间的额外空格。

对go方法的调用将返回以下情况之一:列结束或文本结束。
如果列结束,可以用setColumns方法加载一个新的列定义,并且可以再次调用go方法。
如果文本结束,更多的文本可以加载与addText和方法go可以被再次调用。唯一的限制是每次必须加载一个或多个完整的段落。
支持完全的双向重排序。如果运行方向为pdfrwriter。RUN_DIRECTION_RTL水平对齐和边距的含义被镜像。

ColumnText 构造方法

//canvas 文本将被写入的地方。可以是模板
public ColumnText(final PdfContentByte canvas)

ColumnText 常用方法

// 将行输出到文档中。它等同于go(false)。
public int go() 

//设置列的边界。每个列的边界由一个float[]描述,其线点为[x1,y1,x2,y2,…]。数组必须至少有4个元素。
public void setColumns(final float leftLine[], final float rightLine[])

//显示一行文本。只写了第一行
public static void showTextAligned(final PdfContentByte canvas, final int alignment, 
    final Phrase phrase, final float x, final float y, 
    final float rotation)
//矩形柱的简化方法
public void setSimpleColumn(Rectangle rect)

//将短语添加到当前文本数组。如果addElement()之前被调用,则不会有任何效果。
public void addText(final Phrase phrase)

// 添加一个元素。支持的元素是段落,列表,PdfPTable和图像。
//也接受一个Chunk和一个短语,它们被放置在一个新的段落中。
//它删除所有使用addText()放置的文本。
public void addElement(Element element)

Element 接口

文本元素的接口。

// 段落对齐的可能值。这指定文本对齐到左缩进,额外的空白应该放在右边
public static final int ALIGN_LEFT = 0

//垂直对齐的可能值
public static final int ALIGN_TOP = 4;

Chunk

这是可以添加到文档中的最小文本重要部分。
大多数元素可以分成一个或多个Chunks。chunk是一个具有特定字体的字符串。所有其他的布局参数都应该在添加文本块的对象中定义

Chunk 构造方法

public Chunk(final String content, final Font font)
public Chunk(final String content)

public Chunk(final char c, final Font font)
public Chunk(final char c)

public Chunk(final Image image, final float offsetX, final float offsetY,
			final boolean changeLeading)
//构造一个包含图像的块
//offsetX 图像在x方向上的偏移量
public Chunk(final Image image, final float offsetX, final float offsetY)
public Chunk(final Image image, final float offsetX, final float offsetY,
			final boolean changeLeading)

Chunk 常用方法

//设置一个水平线,它可以是下划线或删除线。实际上,这条线可以在任何垂直的地
// 方,并且始终具有Chunk宽度。多次调用此方法将产生多行。
public Chunk setUnderline(final float thickness, final float yPosition)

Phrase

短语是一系列的Chunk
一个短语有一个主字体,但是短语中的一些块可以有一个不同于主字体的字体。一个短语中的所有块都有相同的引导

// 向这个短语添加一个字符串
public boolean add(final String s)

Paragraph

public void setIndentationLeft(float indentation)

PdfPTable

这个表可以放在绝对位置,也可以作为 Table 类添加到文档中

PdfPTableEvent可以与表关联,在表被渲染时进行自定义绘制。

PdfPTable 构造方法

// 用numColumns列构造一个PdfPTable
public PdfPTable(final int numColumns)

PdfPTable 常用方法

// 添加一个单元格元素。
public void addCell(final String text)
public void addCell(final Phrase phrase)
public void addCell(final Image image)

// 添加嵌套表
public void addCell(final PdfPTable table)
)
// 设置表格在页面中所占的宽度百分比
public void setWidthPercentage(final float widthPercentage)
//设置表的全宽度
public void setTotalWidth(final float totalWidth)
从绝对列宽度设置表的全宽度
public void setTotalWidth(final float columnWidth[])

//设置组成标题的顶部行数。这个标题只有当表被添加到Document并且表跨越页面时才有意义
public void setHeaderRows(int headerRows)

//设置要用于页脚的行数。从标题行中减去页脚行数。
public void setFooterRows(int footerRows)

//跳过第一个标题的打印。当连续打印属于同一打印表方面的表时使用。
public void setSkipFirstHeader(final boolean skipFirstHeader)

public void setSkipLastFooter(final boolean skipLastFooter)

//设置表的相对宽度
public void setWidths(final int relativeWidths[])

//设置此表前的间距
public void setSpacingBefore(final float spacing) 

//获取默认的PdfPCell,该PdfPCell将用作除addCell(PdfPCell)外的所有addCell方法的引用。
public PdfPCell getDefaultCell()

PdfPCell

PdfPTable中的单元格。

PdfPCell 构造方法

// 使用短语构造PdfPCell。默认 padding 为2
public PdfPCell(Phrase phrase)

//用图像构造一个PdfPCell。对于0.5的边框宽度,默认padding为0.25。
//fit True,以使图像适合单元格
public PdfPCell(Image image, boolean fit)
//The default padding is 0.
public PdfPCell(Image image)

//构造一个PdfPCell的深层副本。
public PdfPCell(PdfPCell cell)

//用PdfPtable构造一个PdfPCell。这个构造函数允许嵌套表。默认填充为0。
public PdfPCell(PdfPTable table)

// 应用于单元格的样式(可以使用getDefaultCell())
public PdfPCell(PdfPTable table, PdfPCell style)

PdfPCell 常用方法

// 属性rowspan的Setter
public void setRowspan(int rowspan)

//设置表的全宽度
public void setTotalWidth(final float totalWidth)

// 在Document.add()中使用setTotalWidth()中的值。
public void setLockedWidth(final boolean lockedWidth)

//colspan的Setter。
public void setColspan(int colspan) 

// 向单元格添加iText元素
public void addElement(Element element)

//设置单元格的水平对齐方式。它可以是Element.ALIGN_CENTER为例。
public void setHorizontalAlignment(int horizontalAlignment)

public int getVerticalAlignment()

List

List包含多个 ListItem

List 构造方法

//在生成pdf文档时,缩进是很重要的,它指示列表符号的缩进。这对于html文档并不重要
public List(final boolean numbered, final float symbolIndent)

// 创建一个列表
public List(final boolean numbered, final boolean lettered, final float symbolIndent)

List 常用方法


PdfReader

读取PDF文档

PdfReader 构造方法

//读取和解析PDF文档。
public PdfReader(final String filename)

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: iText是一个功能强大的Java库,用于处理PDF文档的创建和操作。iText 5是iText库的旧版,提供了许多用于PDF操作的API方法。 在iText 5 API中,可以通过使用Document类创建PDF文档。可以设置页面大小、页边距、文档属性等。然后,可以使用Paragraph、Chunk和Phrase类添加文本内容。可以设置字体样式、大小和颜色,还可以添加链接和水印。 此外,iText 5允许添加图像、表格和列表。可以插入图像文件,并设置其位置和大小。可以使用Table类创建表格,并在表格中添加单元格和数据。可以设置表格的边框、颜色和样式。 另外,iText 5还提供了添加注释和表单字段的功能。可以通过使用Annotation类添加文本注释或链接注释。可以使用TextField类添加文本输入字段、复选框和单选按钮。 在iText 5 API中,还可以对PDF文档进行修改和操作。可以添加页眉和页脚,设置页码和页面布局。可以分割和合并PDF文件,提取和旋转页面,设置PDF文件的版本等。 总之,iText 5提供了广泛的API方法,可以轻松地创建、修改和操作PDF文档。无论是生成报告、生成合同还是处理表单,iText 5都是一个非常有用的工具。 ### 回答2: iText 5是一个由Bruno Lowagie开发的用于生成和操作PDF文件的Java库。它是一个开源库,提供了丰富的功能和强大的API,满足了创建、修改和处理PDF文件的需求。 iText 5的API可以用于创建各种类型的PDF文档,包括报告、表单、合同等。它支持添加文本、图像、表格、链接和书签等元素到PDF文件中。使用iText 5,开发者可以轻松地创建自定义的PDF模板,并将数据填充到模板中。 除了创建PDF文件,iText 5还提供了一系列的功能来修改和处理现有的PDF文档。开发者可以使用iText 5来合并PDF文件、拆分PDF文件、提取和删除页面、添加水印和签名等。此外,iText 5还支持PDF文件的加密和解密。 iText 5还支持中文文本的处理。开发者可以使用iText的字体类来设置中文字体,并将中文字符添加到PDF文件中。iText 5还提供了一些方法来处理中文字符的布局问题,以确保中文文本的正确显示。 总之,iText 5是一个功能强大的Java库,可以用于生成和操作PDF文件。它提供了一系列的API,可以满足创建、修改和处理PDF文档的各种需求,并且支持中文文本的处理。无论是用于商业应用,还是个人项目,iText 5都是一个可靠的选择。 ### 回答3: iText 5 API 是一种用于处理 PDF 文件的开源 Java 库。它提供了丰富的功能和操作 PDF 文件所需的各种工具。iText 5 API 可以用于创建、编辑和读取 PDF 文件。 使用 iText 5 API,我们可以通过编程方式创建一个全新的 PDF 文件,并在其中添加文本、图像、表格、水印、链接等元素。我们还可以设置页面的大小、边距和方向,以及设置字体、颜色和样式来定制 PDF 的外观。 除了创建 PDFiText 5 API 还提供了一些操作 PDF 的工具。我们可以将多个 PDF 文件合并成一个,拆分一个 PDF 文件为多个文件,还可以提取 PDF 文件中的特定页面或内容。此外,我们还可以对 PDF 文件进行加密和解密操作,以保护其内容的安全性。 iText 5 API 还支持 PDF 文件的文本提取功能。我们可以使用 API 提供的方法从 PDF 文件中读取文本内容,并将其用于分析、搜索或转换为其他格式。 总体而言,iText 5 API 是一个功能强大、灵活且易于使用的工具,可以满足多种处理 PDF 文件的需求。无论是创建、编辑、读取还是转换 PDF 文件,iText 5 API 提供了一系列的功能和方法,使我们能够轻松地处理 PDF 文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值