在我们的工作中,骑缝章是经常运用到的一种盖印鉴的方式,如合同、人事档案、技术文件等比较重要的资料信息商业文档。其主要作用是为了防范风险,避免文件出现增减、修改时而不得知。本文将使用Java代码来实现给PDF文档添加骑缝章。
首先,我们先来看下添加后的效果图:
如何使用Java代码来给PDF文档添加骑缝章?
创建测试环境:
IntelliJ IDEA 2019JDK 1.8Free Spire.PDF for Java (免费)
添加依赖包到IDEA:
方式1:通过E-iceblue中文官网下载Free Spire.PDF for Java产品包,解压后将lib文件夹下的Spire.Pdf.jar手动导入IDEA。
方式2:在IDEA中创建Maven仓库,然后在pom.xml文件下引用以下代码。
com.e-iceblue
http://repo.e-iceblue.cn/repository/maven-public/
e-iceblue
spire.pdf.free
3.9.0
运行代码:
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.image.BufferedImage;
import java.io.*;
public class AddSeamSeals {
public static void main(String[] args) throws IOException {
//加载示例文档
PdfDocument doc = new PdfDocument();
doc.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.pdf");
PdfUnitConvertor convert = new PdfUnitConvertor();
PdfPageBase pageBase = null;
//获取分割后的印章图片
BufferedImage[] images = GetImage(doc.getPages().getCount());
float x = 0;
float y = 0;
//将图片画到PDF页面上的指定位置
for (int i = 0; i < doc.getPages().getCount(); i++)
{
BufferedImage image= images[ i ];
pageBase = doc.getPages().get(i);
x = (float)(pageBase.getSize().getWidth()) - convert.convertUnits(image.getWidth(), PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);
y = (float) pageBase.getSize().getHeight()/ 2;
pageBase.getCanvas().drawImage(PdfImage.fromImage(image), new Point2D.Float(x, y));
}
//保存PDF
doc.saveToFile("output/AddSeamSeals.pdf");
}
//定义GetImage方法,根据PDF页数分割印章图片
static BufferedImage[] GetImage(int num) throws IOException {
String originalImg = "C:\\Users\\Test1\\Desktop\\Stamp.png";
BufferedImage image = ImageIO.read(new File(originalImg));
int rows = 1;
int cols = num;
int chunks = rows * cols;
int chunkWidth = image.getWidth() / cols;
int chunkHeight = image.getHeight() / rows;
int count = 0;
BufferedImage[] imgs = new BufferedImage[ chunks ];
for (int x = 0; x < rows; x++) {
for (int y = 0; y < cols; y++) {
imgs[ count ] = new BufferedImage(chunkWidth, chunkHeight, image.getType());
Graphics2D gr = imgs[ count++ ].createGraphics();
gr.drawImage(image, 0, 0, chunkWidth, chunkHeight,
chunkWidth * y, chunkHeight * x,
chunkWidth * y + chunkWidth, chunkHeight * x + chunkHeight, Color.WHITE,null);
gr.dispose();
}
}
return imgs;
}
}
原创文章,作者:XIMIJC,如若转载,请注明出处:https://www.beidanyezhu.com/a/17596.html