`

Java 处理PDF图章(印章)——图片图章、动态图章

阅读更多

图章(印章)是一种在合同、票据、公文等文件中表明法律效应、部门机关权威的重要指示物,常见于各种格式的文件、文档中。对于纸质文档可以手动盖章,但对于电子文档,则需要通过特定的方法来实现。本篇文档分享通过Java代码在PDF文档中添加图章的方法。内容将分2部分介绍:

1. 添加图片图章。即通过加载现有的图章(以图片形式),添加到PDF指定页面位置

2. 添加动态图章。即加载PDF文档,并在动态的添加印章内容,包括印章字样、日期、时间、经办人、组织名称等。

使用工具:Free Spire.PDF for Java (免费版)

关于jar文件导入:

步骤1步骤1:在Java程序中新建一个文件夹可命名为Lib。并将产品包中的2个jar文件复制到新建的文件夹下。

步骤2复制文件后,添加到引用类库:选中这两个jar文件,点击鼠标右键,选择“Build Path” – “Add to Build Path”。完成引用。 


 

Java示例(供参考)

1. 添加图片图章

import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.annotations.PdfRubberStampAnnotation;
import com.spire.pdf.annotations.appearance.PdfAppearance;
import com.spire.pdf.graphics.PdfImage;
import com.spire.pdf.graphics.PdfTemplate;

import java.awt.geom.Rectangle2D;

public class ImageStamp {

    public static void main(String[] args) {

        //创建PdfDocument对象,加载PDF测试文档
        PdfDocument doc = new PdfDocument();
        doc.loadFromFile("test.pdf");

        //获取文档第3页
        PdfPageBase page = doc.getPages().get(2);

        //加载印章图片
        PdfImage image = PdfImage.fromFile("stamp.png");
        //获取印章图片的宽度和高度
        int width = image.getWidth();
        int height = image.getHeight();

        //创建PdfTemplate对象
        PdfTemplate template = new PdfTemplate(width, height);
        //将图片绘制到模板
        template.getGraphics().drawImage(image, 0, 0, width, height);

        //创建PdfRubebrStampAnnotation对象,指定大小和位置
        Rectangle2D rect = new Rectangle2D.Float((float) (page.getActualSize().getWidth() - width - 10), (float) (page.getActualSize().getHeight() - height - 60), width, height);
        PdfRubberStampAnnotation stamp = new PdfRubberStampAnnotation(rect);

        //创建PdfAppearance对象
        PdfAppearance pdfAppearance = new PdfAppearance(stamp);
        //将模板应用为PdfAppearance的一般状态
        pdfAppearance.setNormal(template);
        //将PdfAppearance 应用为图章的样式
        stamp.setAppearance(pdfAppearance);

        //添加图章到PDF
        page.getAnnotationsWidget().add(stamp);

        //保存文档
        doc.saveToFile("ImageStamp.pdf",FileFormat.PDF);
    }
}

 

图片图章添加效果:



 

2.添加动态图章

import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.annotations.PdfRubberStampAnnotation;
import com.spire.pdf.annotations.appearance.PdfAppearance;
import com.spire.pdf.graphics.*;

import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.text.SimpleDateFormat;

public class DynamicStamp {

    public static void main(String[] args) {

        //创建PdfDocument对象
    	PdfDocument document = new PdfDocument();

        //加载PDF文档
        document.loadFromFile("test.pdf");

        //获取第3页
        PdfPageBase page = document.getPages().get(2);

        //创建PdfTamplate对象
        PdfTemplate template = new PdfTemplate(185, 50);

        //创建两种字体
        PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial Unicode MS", Font.PLAIN  ,15), true);
        PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial Unicode MS", Font.PLAIN  ,10), true);

        //创建画刷
        PdfSolidBrush solidBrush = new PdfSolidBrush(new PdfRGBColor(Color.blue));
        Rectangle2D rect1 = new Rectangle2D.Float();
        rect1.setFrame(new Point2D.Float(0,0),template.getSize());        

        //创建圆角矩形路径
        int CornerRadius = 20;
        PdfPath path = new PdfPath();
        path.addArc(template.getBounds().getX(), template.getBounds().getY(), CornerRadius, CornerRadius, 180, 90);
        path.addArc(template.getBounds().getX() + template.getWidth() - CornerRadius,template.getBounds().getY(), CornerRadius, CornerRadius, 270, 90);
        path.addArc(template.getBounds().getX() + template.getWidth() - CornerRadius, template.getBounds().getY()+ template.getHeight() - CornerRadius, CornerRadius, CornerRadius, 0, 90);
        path.addArc(template.getBounds().getX(), template.getBounds().getY() + template.getHeight() - CornerRadius, CornerRadius, CornerRadius, 90, 90);
        path.addLine( template.getBounds().getX(), template.getBounds().getY() + template.getHeight() - CornerRadius, template.getBounds().getX(), template.getBounds().getY() + CornerRadius / 2);

        //绘制路径到模板,并进行填充       
        template.getGraphics().drawPath(PdfPens.getBlue(), path);

        //在模板上绘制文字及动态日期
        String s1 = "已审核\n";
        String s2 = "社区管理中心 " + dateToString(new java.util.Date(),"yyyy-MM-dd HH:mm:ss");
        template.getGraphics().drawString(s1, font1, solidBrush, new Point2D.Float(5, 5));
        template.getGraphics().drawString(s2, font2, solidBrush, new Point2D.Float(5, 28));

        //创建PdfRubberStampAnnotation对象,并指定其位置和大小
        Rectangle2D rect2= new Rectangle2D.Float();
        rect2.setFrame(new Point2D.Float((float)(page.getActualSize().getWidth()-250),(float)(page.getActualSize().getHeight()-150)),  template.getSize());
        PdfRubberStampAnnotation stamp = new PdfRubberStampAnnotation(rect2);

        //创建PdfAppearance对象,应用模板为一般状态
        PdfAppearance appearance = new PdfAppearance(stamp);
        appearance.setNormal(template);

        //应用样式到图章
        stamp.setAppearance(appearance);

        //添加图章到Annotation集合
        page.getAnnotationsWidget().add(stamp);

        //保存文档
        document.saveToFile("DynamicStamp.pdf");
        document.close();
    }

    //将日期转化成字符串
    public static String dateToString(java.util.Date poDate,String pcFormat) {
        SimpleDateFormat loFormat = new SimpleDateFormat(pcFormat);
        return loFormat.format(poDate);
    }
}

 

动态图章添加效果:



 

 (本文完)

 

 

 

  • 大小: 79.7 KB
  • 大小: 13.6 KB
  • 大小: 202.7 KB
  • 大小: 112.6 KB
0
0
分享到:
评论

相关推荐

    Java 处理PDF图章——图片图章、动态图章

    图章是一种在合同、票据、公文等文件中表明法律效应、部门机关权威的...本篇文档分享通过Java代码在PDF文档中添加图章的方法。内容将分两部分介绍,详细使用:https://blog.csdn.net/hj7jay/article/details/86983793

    java实现将html转pdf,并在指定位置添加印章

    在这个示例中,`addStamp`方法接受输入PDF路径、输出PDF路径和印章图片路径作为参数,首先创建一个新的PDF文档,然后在新页面上添加印章图片,最后将原PDF内容导入到带有印章的新PDF中。 总结,要实现在Java中将...

    java绘制印章图片(圆形)

    使用jdk的绘图工具来绘制印章,该代码中只绘制了圆形印章,印章中的内容包括公司名称、中间的五角星以及印章的类型

    java实现word表格指定位置盖章,并且设置印章悬浮于文字之上

    在Java编程环境中,实现Word文档中的表格指定位置盖章,并让印章悬浮于文字之上,是一项技术挑战,但可以通过一些库和技巧来实现。这个过程主要涉及到对Word文档内容的读取、修改以及重新保存,同时要确保印章图像不...

    spire.pdf-4.7.8.jar

    本篇文档分享通过Java代码在PDF文档中添加图章的方法。内容将分2部分介绍: 1. 添加图片图章。即通过加载现有的图章(以图片形式),添加到PDF指定页面位置 2. 添加动态图章。即加载PDF文档,并在动态的添加印章...

    java电子图章.doc

    Java电子图章系统是一种基于Java语言和J2EE技术框架构建的B/S架构软件,用于管理和控制电子印章的创建、审批、使用和审计。该系统采用"用户-角色-权限"的三维权限管理模式,允许根据不同的职责分配不同的权限,如...

    MVC生成下载PDF文档含标题底纹图章

    综上所述,这个项目涉及了MVC架构下的PDF生成技术,包括文本样式控制、水印添加、图章应用以及文件下载处理。开发者需要掌握相关的PDF库,理解MVC的控制器逻辑,并具备一定的前端交互知识,以实现用户友好的下载体验...

    spire.pdf-4.1.2.jar

    本篇文档分享通过Java代码在PDF文档中添加图章的方法。内容将分2部分介绍: 1. 添加图片图章。即通过加载现有的图章(以图片形式),添加到PDF指定页面位置 2. 添加动态图章。即加载PDF文档,并在动态的添加印章...

    快速图章生成软件

    【快速图章生成软件】是一种专门用于创建图章图像的工具,主要特点是用户友好和高效。这个软件包,名为"Cachet",提供了快速生成不同样式和用途的图章的功能,解压缩后即可直接运行,无需复杂的安装过程,极大地简化...

    基于Java Graphics2D生成各类圆形/椭圆图章、私章图片

    【作品名称】:基于Java Graphics2D生成各类圆形/椭圆公章、私章图片 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:...

    图片盖章程序源码.rar

    图片盖章程序是一种在图像上添加印章或签名的软件应用,通常用于电子文档的安全认证、版权保护或个人或公司的身份证明。源码是程序的核心部分,它包含了编写程序时使用的编程语言、逻辑结构和指令,使得其他人可以...

    易语言源代码印章 易语言源代码印章

    印章_API.e 印章_位图旋转.e .版本 2 hDC = 取设备场景 (画板1.取窗口句柄 ()) 画板1.底图 = { } ' 中心点 中心点X = 画板1.宽度 \ 2 中心点Y = 画板1.高度 \ 2 ' 计算字数 cnt = 取文本长度 (编辑框_主标题...

    椭圆形印章绘制算法分析及核心代码分享

    此外,生成的印章图片需要符合PDF版式文件的要求,以便于插入到电子发票中,并通过电子签名确保文件的安全性。 总之,椭圆形印章的绘制涉及多种数学原理和技术,包括椭圆几何、旋转算法和仿射变换。通过深入理解...

    Winform绘制圆形和椭圆形图章

    5. **保存图片**: 要将绘制的图章保存为图片文件,可以使用`Bitmap`类。在`OnPaint`事件中,先创建一个`Bitmap`实例,然后调用控件的`CreateGraphics`方法获取`Graphics`对象,绘制到`Bitmap`上。最后,使用`Bitmap`...

    图章生成器

    综合来看,"图章生成器"是一个方便易用的图形处理工具,专为生成专业印章设计。通过提供的控件和源码,开发者可以进一步定制功能,满足特定用户群体的需求。而其中的资源则丰富了设计选择,帮助用户创造出多样化的...

    图章制作程序

    首先,电子图章是数字化时代的产物,它替代了传统的实体印章,具有高效、便捷、环保的优点。图章制作程序能够帮助用户轻松设计和制作符合需求的个性化图章,如公司公章、部门章、个人签名等,大大提高了办公效率。 ...

    WSDN.ORG图章自动生成系统

    该系统专为用户提供便捷、高效的图章设计与生成服务,适用于各类企事业单位和个人用户,满足他们在文档处理中的个性化需求。 在技术层面,C#.NET是一种由微软开发的面向对象的编程语言,它结合了.NET框架的强大功能...

    行业资料-建筑装置-带有图章的书写用具.zip

    压缩包中的"带有图章的书写用具.pdf"文件很可能详细介绍了这类书写工具的种类、用途、选择标准以及正确使用方法。它可能涵盖了如何选择适合的图章材质,以保证图章长久耐用;如何保持图章清晰,以及如何在不同类型的...

    图章生成

    7. **编程语言与库**:虽然未具体说明,但这个例子可能使用了如Python、Java、C#等编程语言,并可能借助了如PIL(Python Imaging Library)或.NET Framework中的Graphics类来处理图像。 8. **用户界面设计**:良好...

Global site tag (gtag.js) - Google Analytics