`
Donald_Draper
  • 浏览: 984745 次
社区版块
存档分类
最新评论

iText制作PDFCheckbox实例

 
阅读更多
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生成PDF.doc

    iText 是一个强大的 Java 类库,专为生成和编辑PDF文档而设计。它以其灵活性和易用性在开发社区中广受欢迎。通过iText,开发者可以轻松创建包含文本、图像、表格等各种元素的PDF文件。以下是一些关于如何使用iText...

    itext看看实例

    itext看看实例,看看啊!

    itext导出word 实例代码

    itext导出word 实例代码 可以下载到本地 c 盘 参考实例 模仿

    itext 导出 word 实例

    本实例将重点讲解如何利用iText来导出Word表格,这对于需要将数据从应用程序导出到可编辑文档的场景非常有用。 首先,我们需要理解iText中的`Document`类是创建PDF或Word文档的基础。在创建Word表格的实例中,我们...

    iText生成PDF - 实例

    **iText生成PDF实例详解** 在信息技术领域,PDF(Portable Document Format)文件因其跨平台、易阅读和保真性等特点,被广泛应用于文档共享和交流。而iText是一款开源的Java库,它允许开发者轻松地创建、修改和操作...

    iText5官方提供的实例Part1

    iText5官方提供的实例Part1,来源: http://www.itextpdf.com/。 注:由于上传限制(20M),将一个文件分割成了两个! 本文件中包含实例程序,另一个文件中包含jar包: http://download.csdn.net/source/2564863

    itext2.1.7动态生成PDF实例

    **IText 2.1.7 动态生成PDF实例详解** 在IT行业中,PDF(Portable Document Format)是一种广泛使用的文件格式,它能够保持文档的原始格式,方便跨平台查看和打印。iText是一个强大的开源Java库,用于生成和修改PDF...

    itext合并和拆分PDF实例

    根据提供的文件信息,我们可以深入探讨如何使用iText库在Java环境中进行PDF文件的合并与拆分操作。以下是对这些操作的详细解释。 ### iText简介 iText 是一个开源库,用于生成、修改以及处理PDF文件。它支持多种...

    Itext利用模板生成PDF实例demo,导入即可使用,供前台下载,打印,预览等

    在这个实例中,我们看到Itext被用来通过模板生成PDF文件,这种做法可以极大地简化PDF内容的构建过程。 **模板驱动的PDF生成** 模板驱动的PDF生成是一种高效的方法,特别是当需要多次重复类似内容但细节略有不同的...

    iText2.1.7资料大全(制作PDF的java开源框)

    相关教程 iText 简介 iText创建文档简介 iText入门实例 IText使用PDF模板输出报表的实践 我和iText第一次亲密接触 相关JAR iText-2.1.7.jar(核心) iTextAsian.jar(中文支持) iText-rups-2.1.7.jar iText-rtf-...

    iText中文教程及实例

    iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。

    java 打印报表,用iText实现实例

    在这个实例中,我们将深入探讨如何使用 `iText` 来实现 Java 中的报表打印。 1. **iText 概述** `iText` 是一个开源的 Java 库,支持创建、修改和读取 PDF 文件。它提供了一系列 API,允许开发者在 PDF 文档中添加...

    iText制作pdf资料

    至于"PDF文件制作全攻略"这个压缩包文件,很可能包含了从基础到高级的PDF文件制作教程、示例代码和相关资源。这些资料可以帮助初学者快速掌握如何使用iText和iTextSharp创建和操作PDF文档,同时也为有经验的开发者...

    Java使用iText生成word文件的解决方案

    4. **创建RtfWriter实例**:这会将你的Document对象转换为RTF格式。 ```java RtfWriter2.getInstance(document, fos); ``` 5. **添加内容**:使用`Document`对象的方法,如`add(Paragraph)`,添加文本、段落、...

    iText7 原生方法制作带斜线表格

    iText7 原生方法制作带斜线表格

    itext制作pdf

    【iText PDF组件详解】 在企业信息化系统中,报表生成和展示是不可或缺的功能之一,而iText是一款强大的Java组件,专门用于生成PDF文档,解决了B/S系统中的报表处理难题。iText不仅能够直接生成PDF,还能将XML或...

    IText 和 iTextAsian

    IText和iTextAsian是两个在Java和.NET平台上广泛使用的PDF处理库,它们主要用于创建、编辑和处理PDF文档。IText是主要的核心库,而iTextAsian则是一个扩展,专门针对亚洲字符集的支持,如中文、日文和韩文。 IText...

    pdf制作 itext

    pdf制作 itextpdf制作 itextpdf制作 itext

    itext 生成pdf 目录

    1. **创建PdfWriter对象**:首先,你需要创建一个`PdfWriter`实例,它将负责将PDF内容写入文件。这通常涉及到创建一个`Document`对象,并将其与`PdfWriter`关联起来。 ```java Document document = new Document...

    iText可以制作PDF文件的JAVA源程序

    iText是一款强大的开源Java库,...这个压缩包提供的源程序和文档,对于学习和使用iText进行PDF文件制作是非常宝贵的资源。通过深入研究和实践,开发者可以充分利用iText的强大功能,创建出专业且富有吸引力的PDF文档。

Global site tag (gtag.js) - Google Analytics