package test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import test.CheckboxCell2.CheckboxCellEvent;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.ExceptionConverter;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfAnnotation;
import com.itextpdf.text.pdf.PdfAppearance;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfFormField;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPCellEvent;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.RadioCheckField;
public class TestCheckBox {
public static final String DEST = "E:\\testCheck.pdf";
public static void main(String[] args) throws IOException, DocumentException {
File file = new File(DEST);
file.getParentFile().mkdirs();
new TestCheckBox().createPdf(DEST);
}
public void createPdf(String dest) throws IOException, DocumentException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
//定义字体
BaseFont bfChinese = BaseFont.createFont( "STSong-Light", "UniGB-UCS2-H", false );
Font fNormal = new Font(bfChinese, 11, Font.NORMAL);
//新建Table两列
PdfPTable table = new PdfPTable(2);
//定义每列的宽度
table.setWidths(new int[]{100,200});
//第一列start
PdfPCell head = new PdfPCell(new Phrase("状态:",fNormal));
head.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
head.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
head.setMinimumHeight(30);
table.addCell(head);
//第一列end
//第二列start
//新建table t1
PdfPTable t1 = new PdfPTable(4);
t1.setWidths(new int[]{30,60,30,60});
PdfPCell c0 = new PdfPCell();
c0.setCellEvent(new CheckboxCellEvent("1", true));
c0.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
c0.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
c0.setFixedHeight(10);
c0.setPadding(10);
PdfPCell c1 = new PdfPCell(c0);
// c1.setIndent(15);
// c1.setPadding(10);
c1.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
c1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
t1.addCell(c1);
PdfPCell c11 = new PdfPCell(new Phrase("是",fNormal));
c11.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
c11.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
c11.setMinimumHeight(30);
t1.addCell(c11);
PdfPCell c2 = new PdfPCell();
c2.setCellEvent(new CheckboxCellEvent("0", false));
c2.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
c2.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
c2.setFixedHeight(10);
c2.setMinimumHeight(30);
t1.addCell(c2);
PdfPCell c21 = new PdfPCell(new Phrase("否",fNormal));
c21.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
c21.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
c21.setMinimumHeight(30);
t1.addCell(c21);
//将t1嵌入到 第二列中
PdfPCell checkbox = new PdfPCell(t1);
table.addCell(checkbox);
//第二列end
document.add(table);
document.close();
System.out.println("===========:end");
}
class CheckboxCellEvent implements PdfPCellEvent {
// The name of the check box field
protected String name;
protected boolean flag ;
// We create a cell event
public CheckboxCellEvent(String name, boolean flag) {
this.name = name;
this.flag = flag;
}
// We create and add the check box field
public void cellLayout(PdfPCell cell, Rectangle position,
PdfContentByte[] canvases) {
PdfWriter writer = canvases[0].getPdfWriter();
// define the coordinates of the middle
float x = (position.getLeft() + position.getRight()) / 2;
float y = (position.getTop() + position.getBottom()) / 2;
// define the position of a check box that measures 20 by 20
//画勾
Rectangle rect = new Rectangle(x - 5, y - 5, x + 5, y + 5);
RadioCheckField checkbox = new RadioCheckField(writer, rect, name, "On");
checkbox.setCheckType(RadioCheckField.TYPE_CHECK);
if(flag){
//设置为选中状态
checkbox.setChecked(true);
}
else{
checkbox.setChecked(false);
}
//画框
PdfContentByte canvas = canvases[PdfPTable.LINECANVAS];
canvas.setColorStroke(BaseColor.BLACK);
canvas.setLineDash(1f);
canvas.rectangle(x - 10, y - 10, 20,20);
canvas.stroke();
try {
writer.addAnnotation(checkbox.getCheckField());
} catch (Exception e) {
throw new ExceptionConverter(e);
}
}
}
}
结果如下:
- 大小: 1.5 KB
分享到:
相关推荐
iText 是一个强大的 Java 类库,专为生成和编辑PDF文档而设计。它以其灵活性和易用性在开发社区中广受欢迎。通过iText,开发者可以轻松创建包含文本、图像、表格等各种元素的PDF文件。以下是一些关于如何使用iText...
itext看看实例,看看啊!
itext导出word 实例代码 可以下载到本地 c 盘 参考实例 模仿
本实例将重点讲解如何利用iText来导出Word表格,这对于需要将数据从应用程序导出到可编辑文档的场景非常有用。 首先,我们需要理解iText中的`Document`类是创建PDF或Word文档的基础。在创建Word表格的实例中,我们...
**iText生成PDF实例详解** 在信息技术领域,PDF(Portable Document Format)文件因其跨平台、易阅读和保真性等特点,被广泛应用于文档共享和交流。而iText是一款开源的Java库,它允许开发者轻松地创建、修改和操作...
**IText 2.1.7 动态生成PDF实例详解** 在IT行业中,PDF(Portable Document Format)是一种广泛使用的文件格式,它能够保持文档的原始格式,方便跨平台查看和打印。iText是一个强大的开源Java库,用于生成和修改PDF...
根据提供的文件信息,我们可以深入探讨如何使用iText库在Java环境中进行PDF文件的合并与拆分操作。以下是对这些操作的详细解释。 ### iText简介 iText 是一个开源库,用于生成、修改以及处理PDF文件。它支持多种...
在这个实例中,我们看到Itext被用来通过模板生成PDF文件,这种做法可以极大地简化PDF内容的构建过程。 **模板驱动的PDF生成** 模板驱动的PDF生成是一种高效的方法,特别是当需要多次重复类似内容但细节略有不同的...
在这个实例中,我们将深入探讨如何使用 `iText` 来实现 Java 中的报表打印。 1. **iText 概述** `iText` 是一个开源的 Java 库,支持创建、修改和读取 PDF 文件。它提供了一系列 API,允许开发者在 PDF 文档中添加...
相关教程 iText 简介 iText创建文档简介 iText入门实例 IText使用PDF模板输出报表的实践 我和iText第一次亲密接触 相关JAR iText-2.1.7.jar(核心) iTextAsian.jar(中文支持) iText-rups-2.1.7.jar iText-rtf-...
iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。
iText5官方提供的实例Part1,来源: http://www.itextpdf.com/。 注:由于上传限制(20M),将一个文件分割成了两个! 本文件中包含实例程序,另一个文件中包含jar包: http://download.csdn.net/source/2564863
4. **创建RtfWriter实例**:这会将你的Document对象转换为RTF格式。 ```java RtfWriter2.getInstance(document, fos); ``` 5. **添加内容**:使用`Document`对象的方法,如`add(Paragraph)`,添加文本、段落、...
至于"PDF文件制作全攻略"这个压缩包文件,很可能包含了从基础到高级的PDF文件制作教程、示例代码和相关资源。这些资料可以帮助初学者快速掌握如何使用iText和iTextSharp创建和操作PDF文档,同时也为有经验的开发者...
iText7 原生方法制作带斜线表格
【iText PDF组件详解】 在企业信息化系统中,报表生成和展示是不可或缺的功能之一,而iText是一款强大的Java组件,专门用于生成PDF文档,解决了B/S系统中的报表处理难题。iText不仅能够直接生成PDF,还能将XML或...
IText和iTextAsian是两个在Java和.NET平台上广泛使用的PDF处理库,它们主要用于创建、编辑和处理PDF文档。IText是主要的核心库,而iTextAsian则是一个扩展,专门针对亚洲字符集的支持,如中文、日文和韩文。 IText...
pdf制作 itextpdf制作 itextpdf制作 itext
1. **创建PdfWriter对象**:首先,你需要创建一个`PdfWriter`实例,它将负责将PDF内容写入文件。这通常涉及到创建一个`Document`对象,并将其与`PdfWriter`关联起来。 ```java Document document = new Document...
iText是一款强大的开源Java库,...这个压缩包提供的源程序和文档,对于学习和使用iText进行PDF文件制作是非常宝贵的资源。通过深入研究和实践,开发者可以充分利用iText的强大功能,创建出专业且富有吸引力的PDF文档。