Java 添加动态图章和图片图章到PDF

逻辑潮汐
• 阅读 2520

在日常办公中,时常需对公司内部的规章制度或对外的文件、报告等进行盖印公章,使其具有法律效力。对于纸质版文档来说,只需手动盖印。而电子档则需通过特定的方式来添加,且不同性质的文档需添加不同的图章。本文将通过使用Java程序来演示如何添加动态图章和图片图章到PDF文档中。

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

Jar文件获取及导入:

方法1:通过官网下载获取jar包。解压后将lib文件夹下的Spire.Pdf.jar文件导入Java程序。(如下图)
Java 添加动态图章和图片图章到PDF

方法2:通过maven仓库安装导入。具体安装详解参见此网页

【示例1】添加动态图章

动态图章通常由动态文字(如日期、时间)、经办人/组织名称、“已审核”等字样组成。

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("C:\\Users\\Test1\\Desktop\\Sample.pdf");  
  
        //获取第1页  
  PdfPageBase page = document.getPages().get(0);  
  
        //创建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());  
        PdfLinearGradientBrush linearGradientBrush = new PdfLinearGradientBrush(rect1,new PdfRGBColor(Color.white),new PdfRGBColor(Color.orange),PdfLinearGradientMode.Horizontal);  
  
        //创建圆角矩形路径  
  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(linearGradientBrush, path);  
        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()-120)),  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("output/DynamicStamp.pdf");  
        document.close();  
    }  
  
    //将日期转化成字符串  
  public static String dateToString(java.util.Date poDate,String pcFormat) {  
        SimpleDateFormat loFormat = new SimpleDateFormat(pcFormat);  
        return loFormat.format(poDate);  
    }  
}

动态图章添加效果:

Java 添加动态图章和图片图章到PDF

【示例2】添加图片图章

图片图章是以图片格式保存的现有印章。

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("C:\\Users\\Test1\\Desktop\\Sample.pdf");  
  
        //获取文档第1页  
  PdfPageBase page = doc.getPages().get(0);  
  
        //加载印章图片  
  PdfImage image = PdfImage.fromFile("C:\\Users\\Test1\\Desktop\\Image.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("output/ImageStamp.pdf",FileFormat.PDF);  
    }  
}

图片图章添加效果:

Java 添加动态图章和图片图章到PDF

(本文完)

点赞
收藏
评论区
推荐文章
秋桐 秋桐
2年前
通过Java将PPT转换为PDF
PPT和PDF都是非常实用的文档格式。由于PDF文件更为稳定安全且易于传输或储存,所以当需要共享或打印演示文稿时,可以先将PPT转换成PDF格式再进行操作。下面我将介绍如何通过编程的方法实现该转换,所用到的产品是Java组件FreeSpire.PresentationforJava。该方法只需简单几步操作即可实现,同时也能够维持文档内容格式不变。下面是具体方法和示例代码。
秋桐 秋桐
2年前
Java 给Word添加水印
在Word中添加水印,可以有效地保护文档的机密性和防止他人剽窃,也可以作为文档的版权声明或草稿标记,方便进行统一管理。Word中添加水印的方法有很多种,比如使用内置的“水印”功能、使用“页眉/页脚”功能、使用插入图片/文本框并调整其透明度等方式。这里我想介绍如何通过Java程序,已编程的方式来实现该功能。水印包括图片水印和文本水印。所用到的工具是FreeSpire.DocforJava。下面是具体的方法和示例代码。
阮小五 阮小五
2年前
如何将图片转换成pdf?这个小技巧只需一秒
如何快速地将图片转换为PDF文档?下面这个小技巧只需一秒就可以将图片转换成PDF,需要的小伙伴赶快get这项技能吧!首先,选中需要创建PDF文档的图片,单击右键,鼠标移动到快速操作选项,在右侧的菜单中选择创建PDF,选中的图片就被创建成了一个PDF文档了。
秋桐 秋桐
2年前
如何向Word文档中添加文本水印和图片水印
水印是在文档或图片上添加的一种透明或半透明的标记,通常用于保护文档版权、防止盗用、确认文件归属等目的,通常包含文字、图像等多种元素。通过MicrosoftWord可以向文档添加文本和图片水印。除此之外,我们也可以利用FreeSpire.DocforJava
Stella981 Stella981
3年前
Adobe Acrobat XI Pro破解版 v11.0.10中文版
安装包下载地址:百度网盘Windows软件破解软件AdobeAcrobat一款是专门的PDF工具,它和AdobeReader(同公司的PDF阅读工具)不同,除了阅读以外还支持创建、编辑和保护PDF文件,软件可以帮助您快速、自信地实现将内容数据转换为或扫描至PDF,包括纸质文档、电子邮件、照片和电子表格等等。使用AdobeAcrobat可以在
秋桐 秋桐
2年前
Java 给PDF添加文本水印
水印一般用于标注文档的版权信息、作者、所属机构或者文档属性等。与文档批注等不同,水印是绘制到页面中的元素,所以不能轻易被删除。因此,水印也是一种很好的防伪手段。水印又分为文本水印和图片水印两种。这里,以Java代码为例,我将分享通过代码给PDF文档添加文本水印的具体方法和示例代码。
秋桐 秋桐
2年前
Java 向PDF中添加图像水印
水印一般用于标注文档的版权信息、作者、所属机构或者文档属性等。不同于文本批注等,文字水印是绘制到页面中的元素,所以不会被轻易删除。因此,水印也是一种很好的防伪手段。水印又分为文本水印和图片水印两种。之前已经介绍过向PDF中添加文本水印的方法。这次,我将分享通过Java代码给PDF文档添加图像水印的具体方法和示例代码。使用到的工具是FreeSpire.PDFforJava(免费版)。
秋桐 秋桐
2年前
通过Java程序将Excel转换为PDF文档格式
Excel广泛应用于商业、教育等众多领域,具有丰富的数据处理和分析功能,包括计算、图表、排序、筛选、数据透视表等。在处理大型数据内容时,Excel绝对是最佳工具。但如果要将处理好的数据内容进行保存和传输的话,转换为PDF文档格式或许更加可靠。PDF文档的稳定布局可以避免数据内容被随意更改,即使是在多次传输后也能保证数据的准确性。将Excel转换为PDF的工具有很多。这里我将介绍如何通过编程的方法来实现该功能。以Java代码为例,使用到的产品是FreeSpire.XLSforJava(免费版)。下面是程序环境和示例代码。
秋桐 秋桐
2年前
如何通过Java压缩PDF文档
PDF文档在日常工作中应用广泛,经常用于保存公司文件,电子图书或网络资料等大篇幅内容。然而,内容过多往往也会导致PDF文件过大,不便于其保存和发送。在这种情况下,我们可以选择使用FreeSpire.PDFforJava压缩PDF文件。这一方法主要通过压缩文件内的图片、不需要的注释行和空格等来压缩文件大小,以此节约储存空间,减少文件传送时间。以下是具体的操作步骤。
秋桐 秋桐
1年前
如何通过Python代码旋转PDF页面
日常处理PDF文档时,我们时常会遇到页面颠倒、很难正常阅读或打印的情况。在这种情况下,我们可以通过旋转页面来调整文档的方向。旋转时,也可以根据具体情况,选择顺时针或逆时针旋转特定的角度,以使页面内容更加清晰可读或适应特定的显示需求。这一功能可以通过PDF处理工具或者库来实现。这篇文章将介绍如何使用PDF库在Python平台上旋转文档页面。
董承 董承
5个月前
Acrobat Pro DC 2024 中文(PDF编辑) DC 2024 win10/11详细安装教程(下载)
AcrobatDC2024是一款专业PDF文档编辑和管理软件。它提供了强大的功能,使用户可以轻松创建、编辑、共享和签署PDF文件。允许用户将纸质文档、电子表单Excel、电子邮件、网站、照片、Flash等各种内容扫描或转换为PDF文档,让你可以非常顺手的处
逻辑潮汐
逻辑潮汐
Lv1
月下飞天镜,云生结海楼。
文章
3
粉丝
0
获赞
0