svgimagemanipulator.java

来自「一套JAVA的CA证书签发系统.」· Java 代码 · 共 351 行 · 第 1/2 页

JAVA
351
字号
      // Clone document      Node originaldokument = svgdoc.cloneNode(true);            // Get Text rows      Collection texts = new ArrayList();	  NodeList list = svgdoc.getDocumentElement().getElementsByTagName("text");	  	  int numberofelements = list.getLength();	  	  for(int i=0; i<numberofelements; i++){		Node node = list.item(i);		  		if(node instanceof SVGTextElement){			  NodeList list2 = ((SVGTextElement) node).getChildNodes();		  int numberofelements2 = list2.getLength();		  for(int j=0;j<numberofelements2;j++){		  	  			  Node node2 = list2.item(j);			  			  if(node2 instanceof GenericText)			  	texts.add(node2);			    			  if(node2 instanceof SVGOMTSpanElement){			  	 SVGOMTSpanElement tspan = (SVGOMTSpanElement) node2;			  	 NodeList list3 = tspan.getChildNodes();			  	 int numberofelements3 = list3.getLength();			  	 for(int k=0;k<numberofelements3;k++){			  	 	Node node3 = list3.item(k);			  	 	if(node3 instanceof GenericText)			  	 		texts.add(node3);			    			  	 }			  }		  		  }		}		  	  }	  	  Iterator iter = texts.iterator();	  String data = "";	  while(iter.hasNext()){	  	GenericText text = (GenericText) iter.next(); 	  	data = text.getData();	  	data = processString(data, userdata, dnfields, pincodes, pukcodes,	  			hardtokensn, hardtokensnwithoutprefix,				copyoftokensn, copyoftokensnwithoutprefix,				startdate, enddate);			  	  	text.setData(data);	  }                             // Add Image      /**      if(userdata.hasimage()){        addImage(userdata);             }        */	  insertImage(userdata); // special dravel for demo            ByteArrayOutputStream baos = new ByteArrayOutputStream();                 // Write it to stream.      	  	  PrintTranscoder t = new PrintTranscoder(); 	  TranscoderInput input = new TranscoderInput(svgdoc);			  	  TranscoderOutput output = new TranscoderOutput(baos);			  // save the image	 	  t.transcode(input, output);	  t.addTranscodingHint(PrintTranscoder. KEY_SCALE_TO_PAGE, new Boolean(false));	         	  	  	   	       // Reuse original document      svgdoc = (SVGOMDocument) originaldokument;                    return t;    }        private String processString(String text, UserAdminData userdata, DNFieldExtractor dnfields,                                 String[] pincodes, String[] pukcodes,                                  String hardtokensn, String hardtokensnwithoutprefix,                                 String copyoftokensn, String copyoftokensnwithoutprefix,                                 String startdate, String enddate){    	  text = USERNAME.matcher(text).replaceAll(userdata.getUsername());	        text = CN.matcher(text).replaceAll(dnfields.getField(DNFieldExtractor.CN, 0));	  text = OU.matcher(text).replaceAll(dnfields.getField(DNFieldExtractor.OU, 0));	  text = O.matcher(text).replaceAll(dnfields.getField(DNFieldExtractor.O, 0));	  text = C.matcher(text).replaceAll(dnfields.getField(DNFieldExtractor.C, 0));	  text = LOCATION.matcher(text).replaceAll(dnfields.getField(DNFieldExtractor.L, 0));	  text = TITLE.matcher(text).replaceAll(dnfields.getField(DNFieldExtractor.T, 0));      text = INITIALS.matcher(text).replaceAll(dnfields.getField(DNFieldExtractor.INITIALS, 0));             text = SN.matcher(text).replaceAll(dnfields.getField(DNFieldExtractor.SN, 0));      text = SURNAME.matcher(text).replaceAll(dnfields.getField(DNFieldExtractor.SURNAME, 0));      text = GIVENNAME.matcher(text).replaceAll(dnfields.getField(DNFieldExtractor.GIVENNAME, 0));	  text = STARTDATE.matcher(text).replaceAll(startdate);				  text = ENDDATE.matcher(text).replaceAll(enddate);        	  text = HARDTOKENSN.matcher(text).replaceAll(hardtokensn);	  text = HARDTOKENSNWITHOUTPREFIX.matcher(text).replaceAll(hardtokensnwithoutprefix);      for(int i=0; i<pincodes.length;i++){      	text = PINS[i].matcher(text).replaceAll(pincodes[i]);      }	  for(int i=0; i<pukcodes.length;i++){		text = PUKS[i].matcher(text).replaceAll(pukcodes[i]);	  }      //text = CUSTOMTEXTROW1.matcher(text).replaceAll(?);            //text = CUSTOMTEXTROW2.matcher(text).replaceAll(?);      //text = CUSTOMTEXTROW3.matcher(text).replaceAll(?);      //text = CUSTOMTEXTROW4.matcher(text).replaceAll(?);      //text = CUSTOMTEXTROW5.matcher(text).replaceAll(?);      //text = COPYOFSN.matcher(text).replaceAll(copyoftokensn);      //text = COPYOFSNWITHOUTPREFIX.matcher(text).replaceAll(copyoftokensnwithoutprefix);      	      return text;	    }    // Private Methods    private void insertImage(UserAdminData userdata) throws FileNotFoundException, IOException{    	int imgx = 0;    	int imgy = 0;    	int imgwidth = 0;    	int imgheight = 0;    	       String transform = null;    	// Get image info from template    	NodeList list = svgdoc.getDocumentElement().getElementsByTagName("rect");    	int numberofelements = list.getLength();    	for(int i=0; i<numberofelements; i++){    		Node node = list.item(i);		      		if(node instanceof SVGRectElement){    			SVGRectElement rectnode = (SVGRectElement) node;                if(rectnode.getId().equalsIgnoreCase("USERPICTURE")){                    transform = rectnode.getAttribute("transform");                    imgx = (int) rectnode.getX().getBaseVal().getValue();                    imgy = (int) rectnode.getY().getBaseVal().getValue();                                        imgwidth = (int) rectnode.getWidth().getBaseVal().getValue();                    imgheight = (int) rectnode.getHeight().getBaseVal().getValue();                           }    		 }    	  }      	    	if(imgwidth != 0 && imgheight != 0){    	    	  // Special dravel for demo remove		  BufferedImage image = ImageIO.read(new FileInputStream("c:\\userpicture.jpg"));        // TODO get image.            		      SVGOMImageElement imageelement = new SVGOMImageElement("", svgdoc); 	      SimpleImageHandler imagehandler = new SimpleImageHandler(new ImageHandlerBase64Encoder());		        				 		  	      SVGGeneratorContext svgcxt = SVGGeneratorContext.createDefault(svgdoc);            		        				 		  	      imagehandler.handleImage((RenderedImage) image, imageelement,  	                           imgx, imgy, 	                           imgwidth, imgheight, 	                           svgcxt);                    if(transform != null && !transform.equals(""))            imageelement.setAttribute("transform", transform);            	    svgdoc.getRootElement().appendChild(imageelement);    	}	        }    // Private Variables    private SVGOMDocument svgdoc;    private long validityms;        private String hardtokensnprefix;        }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?