`

java中利用itext编辑pdf

    博客分类:
  • java
阅读更多

      最近项目需要,在调研如何在pdf中增加标识字样,用来区分版本.最后确定用itext来实现.

    itext的官网是:http://www.itextpdf.com/

代码如下:

/**
 * authory kingviker 
 * time : 2012-12-12
 */
import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfArray;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfDictionary;
import com.itextpdf.text.pdf.PdfName;
import com.itextpdf.text.pdf.PdfObject;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;

public class AddContentToPDF {

    public static void main(String[] args) throws IOException, DocumentException {

    	//创建一个pdf读入流
        PdfReader reader = new PdfReader("C:/help.pdf"); 
        //根据一个pdfreader创建一个pdfStamper.用来生成新的pdf.
        PdfStamper stamper = new PdfStamper(reader,
          new FileOutputStream("C:/help2.pdf")); 
        
        //这个字体是itext-asian.jar中自带的 所以不用考虑操作系统环境问题.
        BaseFont bf = BaseFont.createFont("STSong-Light", 
                "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); // set font
        //baseFont不支持字体样式设定.但是font字体要求操作系统支持此字体会带来移植问题.
        Font font = new Font(bf,10);
        font.setStyle(Font.BOLD);
        font.getBaseFont();
        //页数是从1开始的
        for (int i=1; i<=reader.getNumberOfPages(); i++){

           //获得pdfstamper在当前页的上层打印内容.也就是说 这些内容会覆盖在原先的pdf内容之上.
            PdfContentByte over = stamper.getOverContent(i);
            //用pdfreader获得当前页字典对象.包含了该页的一些数据.比如该页的坐标轴信息.
            PdfDictionary p = reader.getPageN(i);
            //拿到mediaBox 里面放着该页pdf的大小信息.
           PdfObject po =  p.get(new PdfName("MediaBox"));
           System.out.println(po.isArray());
           //po是一个数组对象.里面包含了该页pdf的坐标轴范围.
           PdfArray pa = (PdfArray) po;
           System.out.println(pa.size());
           //看看y轴的最大值.
           System.out.println(pa.getAsNumber(pa.size()-1));
            //开始写入文本
            over.beginText();
            //设置字体和大小
            over.setFontAndSize(font.getBaseFont(), 10); 
            //设置字体的输出位置
            over.setTextMatrix(107, 540); 
            //要输出的text
            over.showText("我要加[终稿]字样 " + i);  
            over.endText();
            //创建一个image对象.
            Image image = Image.getInstance("c:/1.jpg");
            //设置image对象的输出位置pa.getAsNumber(pa.size()-1).floatValue() 是该页pdf坐标轴的y轴的最大值
            image.setAbsolutePosition(0,pa.getAsNumber(pa.size()-1).floatValue()-100);//0, 0, 841.92, 595.32
            over.addImage(image);
           
            //画一个圈.
            over.setRGBColorStroke(0xFF, 0x00, 0x00);
            over.setLineWidth(5f);
            over.ellipse(250, 450, 350, 550);
            over.stroke();
        }

        stamper.close();

    }
}
 

 

jar我下载的都是2012-12-12的最新版

分享到:
评论

相关推荐

    adobe pdf编辑器 java利用itextpdf根据模板导出pdf配套资源

    5. **复制页面**:使用PdfStamper类从模板PDF中复制页面,并在新PDF上进行操作。PdfStamper提供了一个接口,可以在保留原始内容的同时添加、修改或删除元素。 6. **替换占位符**:遍历模板中的占位符,例如通过...

    java通过itext操作pdf模板写入pdf合同数据

    Java通过iText库操作PDF模板来写入PDF合同数据是一项常见的技术任务,尤其在文档自动化处理和企业级应用中。iText是一个强大的PDF处理库,它允许开发者创建、修改和处理PDF文档。在这个过程中,首先我们需要一个PDF...

    java使用itextpdf、itext-asian对pdf文件加水印

    通过以上步骤,你可以在Java环境中利用iTextPDF和iText-Asian库为PDF文件添加中文水印。这个过程涉及到PDF文档的读取、写入、文本样式设定以及内容的定位,是一个典型的PDF处理应用场景。在实际开发中,你可能需要...

    使用adobe acrobat DC 生成pdf模板后,用在java里使用itext填充pdf并转格式

    而Java中的iText库则是一个功能丰富的PDF处理库,允许开发者在程序中动态地填充PDF模板。下面将详细介绍如何使用Adobe Acrobat DC创建PDF模板,以及如何在Java中使用iText进行PDF填充和转换。 首先,使用Adobe ...

    利用itext操作pdf从数据库导出大量数据

    本篇文章将详细介绍如何利用iText库操作PDF,从数据库中导出大量数据。 首先,我们需要理解iText的基本概念和功能。iText提供了丰富的API,可以用于创建新的PDF文档、添加文本、图像、表格、链接等元素,以及对已有...

    使用IText生成PDF和WORD文档

    IText是一款广泛使用的Java库,专门用于创建和编辑PDF及Word文档。在本文中,我们将深入探讨如何利用IText库生成这两种格式的文档,并通过实际的源码示例来理解其工作原理。 首先,让我们从PDF(Portable Document ...

    利用ITEXT、PDFBOX将PDF转为图片

    在Java编程环境中,我们可以利用ITEXT和PDFBOX这两个库来实现这个功能。这两个库都是处理PDF的强大工具,各有其特点和优势。 首先,ITEXT是一个用于创建、修改和阅读PDF文档的Java库。它可以用于生成PDF报告、填充...

    java利用iText转换jpg为PDF格式文件

    此外,`Image`类还提供了调整大小、旋转、裁剪等方法,以便根据需要自定义图像在PDF中的显示。 除了基本的转换功能,iText还支持更复杂的操作,例如添加文本、表格、超链接、水印等。这使得iText成为处理PDF文档的...

    使用iText生成PDF.doc

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

    iTextpdf支持中文

    iTextpdf是一款强大的Java库,专门用于生成和编辑PDF文档,同时也支持在Android平台上使用。这个库使得开发者能够轻松地在应用程序中创建、修改和处理PDF文档,包括添加文本、图像、表格、链接等元素。在标题中提到...

    Android使用iText生成pdf并读取pdf内容

    在这个场景中,我们将探讨如何利用iText在Android应用中生成PDF以及读取PDF的内容。 首先,我们需要在Android项目中引入iText库。由于Android Studio默认使用Gradle作为构建工具,我们可以在`build.gradle`文件的...

    Java 使用iText7生成带页码的PDF文件(同时生成目录,但是不会合并两个PDF)

    在Java中,我们可以利用iText7轻松地生成具有复杂结构的PDF文件,包括添加页码、创建目录等。首先,为了在Gradle项目中使用iText7,你需要在项目的`build.gradle`文件中添加依赖。如下所示: ```groovy ...

    itext导出PDF所需jar包

    iText是一款广泛使用的Java库,专门用于创建和编辑PDF文档。在标题中提到的"itext导出PDF所需jar包"是指使用iText库来生成PDF文件时所需的Java类库。iText允许开发者通过编程方式生成高质量的PDF文档,包括文本、...

    Java_Pdf_itext7-7.0.5

    在实际项目中,Java_Pdf_itext7-7.0.5 可能是一个示例项目或库的封装,展示了如何在Java应用中有效利用iText7的功能。开发者可以通过阅读源代码,学习如何集成这个库,以及如何实现各种PDF操作。文件列表中的"Java_...

    完整的利用itext5、zxing、QRCore制作pdf、二维码图片插入pdf,并解析pdf中的二维码信息

    首先,iText5是一款强大的Java库,主要用于创建和编辑PDF文档,而ZXing(Zebra Crossing)是一个开源的条码读取库,支持多种条码格式,包括二维码。QRCore是ZXing的一个轻量级版本,专为Android平台设计,简化了在...

    Java用iText5生成PDF、操作pdf、水印

    在Java开发中,生成PDF文档是一项常见的需求,iText是一个非常流行且强大的PDF库,能够帮助开发者轻松地创建、编辑和操作PDF文档。本篇将详细介绍如何使用iText5库来生成PDF,以及如何对PDF进行操作,如添加水印等。...

    PDF数字签名(ITEXT+keytool)

    2. **ITEXT库**:ITEXT是Java中广泛使用的PDF处理库,能够进行创建、编辑和签名PDF文档等操作。在数字签名方面,ITEXT提供了SignatureUtils和PdfStamper类等工具,用于创建和验证PDF的数字签名。 3. **keytool**:...

    iText操作Pdf简单整理

    iText是一款强大的Java类库,专门用于生成和编辑PDF文档。这个开源项目源自sourceforge.net,为开发者提供了灵活且高效的方式来处理PDF文档的创建、更新和格式转换。iText不仅支持生成PDF和rtf格式的文档,还具备将...

    利用itext操作pdf从数据库导出大量数据--汇总(一)

    这篇博客"利用iText操作PDF从数据库导出大量数据--汇总(一)"显然讨论了如何利用iText将数据库中的数据高效地导出到PDF文件中,这对于报告生成、数据分析或者报表制作等场景非常有用。 首先,我们需要了解iText的...

    itextpdf java 转pdf jar 包

    iTextPDF是一款强大的Java库,专门用于创建、编辑和修改PDF文档。在Java开发中,如果你需要将数据或内容转换为PDF格式,iTextPDF是一个非常流行的选择。这个库提供了丰富的API,允许开发者以编程方式生成高质量的PDF...

Global site tag (gtag.js) - Google Analytics