利用itextpdf实现简单的电子签章只需要itextpdf相关jar包,构建一个简单的javademo就可以模拟。在web项目上大同小异,只需要得到对应的文件即可以作为工具进行调用
准备:itextpdf-5.5.13.jar,itextpdf-5.5.8.jar都可以。
准备待签名文件(路径)、签章,矢量即可(直接上代码)
代码如下:
//电子签章(传入源文件,输出文件、签章图片)
public static void addMark(String inSource,String outSource,String sealPNG){
try {
//读取需要签章的文档信息
Map<String, Object> pdfMsg = getPdfMsg(inSource);
//获取文件宽度,默认pdf
float startAddress = Float.valueOf(SealUtils.getString(pdfMsg.get("width")));
PdfReader reader = new PdfReader(new FileInputStream(inSource));
PdfStamper stamper =new PdfStamper(reader, new FileOutputStream(outSource));
//利用关键字查找文件中的内容,确定签章的位置
List<String> keyWordsList = new ArrayList<String>();
keyWordsList.add("敏感字");
//查找关键字位置
List<List<float[]>> arrLists = SealUtils.findKeywords(keyWordsList,reader);
int pageNum = SealUtils.getInt(pdfMsg.get("pageSize"));
//插入水印
Image img = Image.getInstance(sealPNG);
//设置尺寸
img.scaleAbsolute(90,60);// 直接设定显示尺寸
img.setBackgroundColor(new BaseColor(0));
//如果没有找到关键字,走默认位置
if(arrLists.isEmpty()){
//默认盖章位置
img.setAbsolutePosition(startAddress - 188,70);
PdfContentByte overContent = stamper.getOverContent(pageNum);
overContent.addImage(img);
stamper.close();
reader.close();
return;
}
for (int i=pageNum;i>0;i--) {
if(!arrLists.get(0).isEmpty())