>  기사  >  Java  >  PDF 스탬프 처리를 위한 Java 방법의 예(코드)

PDF 스탬프 처리를 위한 Java 방법의 예(코드)

不言
不言앞으로
2019-01-30 11:34:524081검색

이 기사는 Java에서 PDF 스탬프를 처리하는 방법에 대한 예제(코드)입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

인장(인감)은 계약서, 청구서, 공문서 및 기타 문서에서 법적 효력과 부서의 권한을 나타내는 중요한 지표입니다. 다양한 형식의 문서와 문서에서 흔히 볼 수 있습니다. 종이 문서에는 수동으로 스탬프를 찍을 수 있지만 전자 문서에는 특정 방법이 필요합니다. 이 문서에서는 Java 코드를 통해 PDF 문서에 스탬프를 추가하는 방법을 공유합니다. 내용은

1 두 부분으로 나누어 소개됩니다. 즉, 기존 스탬프(그림 형식)를 로드하고 PDF

2의 지정된 페이지 위치에 추가하면 됩니다. 즉, PDF 문서가 로드되고 인감 단어, 날짜, 시간, 담당자, 조직 이름 등을 포함한 인감 내용이 동적으로 추가됩니다.

사용 도구: Free Spire.PDF for Java v2.0.0(무료 버전)

jar 정보 파일 가져오기:

1단계: 1단계: Java 프로그램에 새 폴더를 만들고 이름을 Lib로 지정합니다. 그리고 제품 패키지에 있는 두 개의 jar 파일을 새로 생성된 폴더에 복사합니다.

2단계: 파일을 복사한 후 참조 클래스에 추가합니다. library: selected 이 두 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);
    }
}

#🎜 🎜 #동적 스탬프 추가 효과:

(이 글 끝)

위 내용은 PDF 스탬프 처리를 위한 Java 방법의 예(코드)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제