Maison >Java >javaDidacticiel >Exemple de méthode Java de traitement des tampons PDF (code)

Exemple de méthode Java de traitement des tampons PDF (code)

不言
不言avant
2019-01-30 11:34:524115parcourir

Ce que cet article vous apporte est un exemple (code) de la façon de traiter les tampons PDF en Java. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Un cachet (sceau) est un indicateur important des effets juridiques et de l'autorité des ministères et agences dans les contrats, factures, documents officiels et autres documents. On le trouve couramment dans les documents et documents de divers formats. Les documents papier peuvent être tamponnés manuellement, mais les documents électroniques nécessitent une méthode spécifique. Ce document explique comment ajouter un tampon à un document PDF via du code Java. Le contenu sera présenté en deux parties :

1. Ajouter un tampon image. Autrement dit, en chargeant un tampon existant (sous la forme d'une image) et en l'ajoutant à la position de page spécifiée du PDF

2. Ajoutez un tampon dynamique. Autrement dit, le document PDF est chargé et le contenu du sceau est ajouté dynamiquement, y compris le mot du sceau, la date, l'heure, la personne responsable, le nom de l'organisation, etc.

Outils à utiliser : Spire.PDF gratuit pour Java v2.0.0 (version gratuite)

À propos de jarImportation de fichiers :

Étape 1 : Étape 1 : Créez un nouveau dossier dans le programme Java et nommez-le Lib. Et copiez les deux fichiers jar du package du produit dans le dossier nouvellement créé.

Étape 2 : Après avoir copié les fichiers, ajoutez-les à la bibliothèque de classes de référence : sélectionnez ces deux fichiers jar et à droite -cliquez sur , sélectionnez « Chemin de construction » – « Ajouter au chemin de construction ». Complétez la citation.

Exemple Java (pour référence)

1 Ajouter un tampon d'image

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

Ajouter un effet au tampon d'image :

2.Ajouter un tampon dynamique

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

Effet d'ajout de tampon dynamique :

(Fin de cet article)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer