1.怎样用JAVA实现电子印章
参考如下代码:package com.wonders.cop.billing.util; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import javax.imageio.ImageIO; public class ImageMarkLogoUtil {// 水印透明度 private static float alpha = 1f;// 水印横向位置 private static int positionWidth = 82;// 水印纵向位置 private static int positionHeight = 545;// 水印文字字体 private static Font font = new Font("宋体", Font.PLAIN, 13);// 水印文字颜色 private static Color color = Color.black; public static void main(String[] args) { String srcImgPath = "d:/888880002302900_web.jpg"; String targerTextPath = "d:/qie_text.jpg"; ImageMarkLogoUtil.markImageByTexts(testValue(),BillDetailImagePosition.getPosition("888880002302900"), srcImgPath,targerTextPath); } public static Map testValue() { Map value = new HashMap(); value.put("feedPrice", "15.1"); value.put("feedCount", "20"); value.put("nowNum", "124"); value.put("drainageCount", "55"); value.put("drainagePrice", "1.5"); value.put("feedCost", "66"); value.put("cost", "66"); value.put("drainageCost", "100"); value.put("barcode", "10101010101010101"); value.put("nextCopy", "2014-12-10"); value.put("waterType", "居民生活用水"); value.put("meterReader", "测试人员"); value.put("copyNumber", "741sg"); value.put("prevCarryOver", "0.25"); value.put("nowCarryOver", "2.12"); value.put("openDate", "20141002"); value.put("nextMonth", "201402 "); value.put("remark", "您缴付的2013年03月30.80元水费,我公司已收到,谢谢!"); value.put("detailStatus", "00"); value.put("billStatus", "00"); value.put("prevMonth", "201406"); value.put("lastPayDate", "20140112"); value.put("companyName", "市北水"); value.put("type", "1"); value.put("amount", "58.1"); value.put("address", "浦秀路220弄10号101"); value.put("year","2014"); value.put("month", "04"); value.put("billId", "11111"); value.put("account", "38445450"); value.put("companyId", "888880002302900"); value.put("realName", "姚航"); return value; }/*** 给图片添加水印文字、可设置水印文字的旋转角度** @param logoText* @param srcImgPath* @param targerPath* @param degree*/ public static void markImageByTexts(Map value,Map position, String srcImgPath, String targerPath) { InputStream is = null; OutputStream os = null; try {// 1、源图片 Image srcImg = ImageIO.read(new File(srcImgPath)); BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);// 2、得到画笔对象 Iterator positionIter = position.keySet().iterator(); String key = ""; String logotext = ""; String[] xy; while (positionIter.hasNext()) { key = positionIter.next(); xy = position.get(key); logotext = value.get(key); System.out.println("key:"+key+",value:"+logotext); if (xy != null && xy.length == 2) printText(srcImg, buffImg, logotext,Integer.valueOf(xy[0]), Integer.valueOf(xy[1])); }// 10、生成图片 os = new FileOutputStream(targerPath); ImageIO.write(buffImg, "JPG", os); System.out.println("图片完成添加水印文字"); } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != is) is.close(); } catch (Exception e) { e.printStackTrace(); } try { if (null != os) os.close(); } catch (Exception e) { e.printStackTrace(); } } }/*** 在图片上打印文字** @param srcImg* @param buffImg* @param logoText* @return*/ private static void printText(Image srcImg, BufferedImage buffImg,String logoText, Integer positionX, Integer PositionY) { Graphics2D g = buffImg.createGraphics();// 3、设置对线段的锯齿状边缘处理 g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR); g.drawImage( srcImg.getScaledInstance(srcImg.getWidth(null),srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0, null);// 5、设置水印文字颜色 g.setColor(color);// 6、设置水印文字Font g.setFont(font);// 7、设置水印文字透明度 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha));// 8、第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y) g.drawString(logoText, positionX, PositionY);// 9、释放资源 g.dispose(); } }。
2.如何实现Word电子签章
找开原文件,图中红框圈定日期上面需要加盖公章。插入电子印章图片文件,选择”插入“选项卡,选择"图片”找到存储电子印章文件文件夹,选中“电子印章文件”——“打开”。
设置“图片格式”,达到逼真效果。选中图片,右键,选择“设置图片格式”弹出对话框进行选择。
选择“版式”选项卡,环绕方式选择“浮于文字上方”,水平对齐方式 选择“其他方式 "——”确定“。
设置图片透明格式,将图片拖动上日期上方。选中图片,选择“图片工具”——“设置透明色”,鼠标移动到图片上,指针变成一支笔的开关,左击,设置透明色成功,将图片拖动到精确位置,OK。
3.在java中如何实现电子签名
Java加密和数字签名编程快速入门 本文主要谈一下密码学中的加密和数字签名,以及其在java中如何进行使用。
对密码学有兴趣的伙伴,推荐看Bruce Schneier的著作:Applied Crypotography。在jdk1.5的发行版本中安全性方面有了很大的改进,也提供了对RSA算法的直接支持,现在我们从实例入手解决问题(本文仅是作为简单介绍): 一、密码学上常用的概念 1)消息摘要: 这是一种与消息认证码结合使用以确保消息完整性的技术。
主要使用单向散列函数算法,可用于检验消息的完整性,和通过散列密码直接以文本形式保存等,目前广泛使用的算法有MD4、MD5、SHA-1,jdk1.5对上面都提供了支持,在java中进行消息摘要很简单, java.security.MessageDigest提供了一个简易的操作方法: /** *MessageDigestExample.java *Copyright 2005-2-16 */ import java.security.MessageDigest; /** *单一的消息摘要算法,不使用密码.可以用来对明文消息(如:密码)隐藏保存 */ public class MessageDigestExample{ public static void main(String[] args) throws Exception{ if(args.length!=1){ System.err.println("Usage:java MessageDigestExample text"); System.exit(1); } byte[] plainText=args[0].getBytes("UTF8"); //使用getInstance("算法")来获得消息摘要,这里使用SHA-1的160位算法 MessageDigest messageDigest=MessageDigest.getInstance("SHA-1"); System.out.println("\n"+messageDigest.getProvider().getInfo()); //开始使用算法 messageDigest.update(plainText); System.out.println("\nDigest:"); //输出算法运算结果 System.out.println(new String(messageDigest.digest(),"UTF8")); } } 还可以通过消息认证码来进行加密实现,javax.crypto.Mac提供了一个解决方案,有兴趣者可以参考相关API文档,本文只是简单介绍什么是摘要算法。 2)私钥加密: 消息摘要只能检查消息的完整性,但是单向的,对明文消息并不能加密,要加密明文的消息的话,就要使用其他的算法,要确保机密性,我们需要使用私钥密码术来交换私有消息。
这种最好理解,使用对称算法。比如:A用一个密钥对一个文件加密,而B读取这个文件的话,则需要和A一样的密钥,双方共享一个私钥(而在web环境下,私钥在传递时容易被侦听): 使用私钥加密的话,首先需要一个密钥,可用javax.crypto.KeyGenerator产生一个密钥(java.security.Key),然后传递给一个加密工具(javax.crypto.Cipher),该工具再使用相应的算法来进行加密,主要对称算法有:DES(实际密钥只用到56位),AES(支持三种密钥长度:128、192、256位),通常首先128位,其他的还有DESede等,jdk1.5种也提供了对对称算法的支持,以下例子使用AES算法来加密: /** *PrivateExmaple.java *Copyright 2005-2-16 */ import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import java.security.Key; /** *私鈅加密,保证消息机密性 */ public class PrivateExample{ public static void main(String[] args) throws Exception{ if(args.length!=1){ System.err.println("Usage:java PrivateExample 公钥加密也叫不对称加密,不对称算法使用一对密钥对,一个公钥,一个私钥,使用公钥加密的数据,只有私钥能解开(可用于加密);同时,使用私钥加密的数据,只有公钥能解开(签名)。但是速度很慢(比私钥加密慢100到1000倍),公钥的主要算法有RSA,还包括Blowfish,Diffie-Helman等,jdk1.5种提供了对RSA的支持,是一个改进的地方: /** *PublicExample.java *Copyright 2005-2-16 */ import java.security.Key; import javax.crypto.Cipher; import java.security.KeyPairGenerator; import java.security.KeyPair; /** *一个简单的公鈅加密例子,Cipher类使。 参考如下代码:package com.wonders.cop.billing.util;import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Image;import java.awt.RenderingHints;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import javax.imageio.ImageIO;public class ImageMarkLogoUtil {// 水印透明度private static float alpha = 1f;// 水印横向位置private static int positionWidth = 82;// 水印纵向位置private static int positionHeight = 545;// 水印文字字体private static Font font = new Font("宋体", Font.PLAIN, 13);// 水印文字颜色private static Color color = Color.black;public static void main(String[] args) {String srcImgPath = "d:/888880002302900_web.jpg";String targerTextPath = "d:/qie_text.jpg";ImageMarkLogoUtil.markImageByTexts(testValue(),BillDetailImagePosition.getPosition("888880002302900"), srcImgPath,targerTextPath);}public static Map testValue() {Map
1、新建一个word文档并打开,在word文档的工具栏选择“插入→图形→圆形”,如图; 2、在按下Sfift键在文档中拖出一个圆,大小设置为4.2*4.2CM,设置为“无填充色”,线条宽度为2磅,颜色为红色,具体操作如图; 3、在文档中插入艺术字,选择环形艺术字,输入内容后设置字体、字号,在文本框内输入公章的名字,具体操作如图; 4、输入好文字后,把文字拖成圆形,把刚画的圆形图层放到最底层,把文字放在已经画好的圆内,可以用Ctrl键和方向键帮助移动到准确的位置,并把艺术字设置成红色,具体操作如图; 5、在word文档内的“工具栏”上选择插入,图形选择五角星,然后在文档中画出一个大小适合的五角星,并设置成红色,移动到圆中合适的位置,然后选中圆、艺术字、五角星,单击鼠标右键,选择“组合”,一个公章就制作出来了,如图; 6、看一下效果,如图; 1、新建一个word文档并打开,在word文档的工具栏选择“插入→图形→圆形”,如图; 2、在按下Sfift键在文档中拖出一个圆,大小设置为4.2*4.2CM,设置为“无填充色”,线条宽度为2磅,颜色为红色,具体操作如图; 3、在文档中插入艺术字,选择环形艺术字,输入内容后设置字体、字号,在文本框内输入公章的名字,具体操作如图; 4、输入好文字后,把文字拖成圆形,把刚画的圆形图层放到最底层,把文字放在已经画好的圆内,可以用Ctrl键和方向键帮助移动到准确的位置,并把艺术字设置成红色,具体操作如图; 5、在word文档内的“工具栏”上选择插入,图形选择五角星,然后在文档中画出一个大小适合的五角星,并设置成红色,移动到圆中合适的位置,然后选中圆、艺术字、五角星,单击鼠标右键,选择“组合”,一个公章就制作出来了,如图; 6、看一下效果,如图; 。 转载请注明出处51数据库 » java实现word电子签章4.怎样用JAVA实现电子印章
5.WORD 电子签章
6.WORD 电子签章
不学无术之徒