Home  >  Article  >  Java  >  Example of Java method for processing PDF stamps (code)

Example of Java method for processing PDF stamps (code)

不言
不言forward
2019-01-30 11:34:524019browse

This article brings you an example (code) of how to process PDF stamps in Java. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

The stamp (seal) is an important indicator that indicates the legal effect and authority of the department in contracts, bills, official documents and other documents. It is commonly found in documents and documents of various formats. Paper documents can be stamped manually, but electronic documents require a specific method. This document shares how to add a stamp to a PDF document through Java code. The content will be introduced in two parts:

1. Add a picture stamp. That is, by loading an existing stamp (in the form of a picture) and adding it to the specified page position of the PDF

2. Add a dynamic stamp. That is, the PDF document is loaded and the seal content is dynamically added, including the seal word, date, time, person in charge, organization name, etc.

Tools to use:Free Spire.PDF for Java v2.0.0 (free version)

About jarFile import:

Step 1: Step 1: Create a new folder in the Java program and name it Lib. And copy the two jar files in the product package to the newly created folder.

Step 2:After copying the files, add them to the reference class library: Select these two jar files and right-click , select “Build Path” – “Add to Build Path”. Complete the citation.

Java example (for reference)

1. Add picture stamp

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);
    }
}

Add effect to picture stamp:

2.Add dynamic stamp

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);
    }
}

Dynamic stamp adding effect:

(End of this article)

The above is the detailed content of Example of Java method for processing PDF stamps (code). For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:cnblogs.com. If there is any infringement, please contact admin@php.cn delete