📄 svgimagemanipulator.java
字号:
hardtokensn, hardtokensnwithoutprefix, copyoftokensn, copyoftokensnwithoutprefix, startdate, enddate, clone); process( "svg:text", userdata, dnfields, pincodes, pukcodes, hardtokensn, hardtokensnwithoutprefix, copyoftokensn, copyoftokensnwithoutprefix, startdate, enddate, clone); // Add Image /** if(userdata.hasimage()){ addImage(userdata); } */ insertImage(userdata, clone); // special dravel for demo PrintTranscoder t = new PrintTranscoder(); TranscoderInput input = new TranscoderInput(clone); TranscoderOutput output = new TranscoderOutput(new ByteArrayOutputStream()); t.transcode(input, output); { final String aDoNot = clone.getRootElement().getAttribute("doNotScaleToPage"); t.addTranscodingHint( PrintTranscoder.KEY_SCALE_TO_PAGE, new Boolean(aDoNot==null||aDoNot.trim().length()<=0) ); } return t; } private void process(String tagName, UserDataVO userdata, DNFieldExtractor dnfields, String[] pincodes, String[] pukcodes, String hardtokensn, String hardtokensnwithoutprefix, String copyoftokensn, String copyoftokensnwithoutprefix, String startdate, String enddate, SVGDocument clone){ Collection texts = new ArrayList(); NodeList list = clone.getDocumentElement().getElementsByTagName(tagName); 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); } } private String processString(String text, UserDataVO 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 = UID.matcher(text).replaceAll(dnfields.getField(DNFieldExtractor.UID, 0)); 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=Math.min(PINS.length, pincodes.length)-1; i>=0; i--){ text = PINS[i].matcher(text).replaceAll(pincodes[i]); } for(int i=Math.min(PUKS.length, pukcodes.length)-1; i>=0; 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(?); if (StringUtils.isNotEmpty(copyoftokensn) || StringUtils.isNotEmpty(copyoftokensnwithoutprefix)) { log.debug("copyoftokensn: "+copyoftokensn+" and/or copyoftokensnwithoutprefix: "+copyoftokensnwithoutprefix+" is not used."); } //text = COPYOFSN.matcher(text).replaceAll(copyoftokensn); //text = COPYOFSNWITHOUTPREFIX.matcher(text).replaceAll(copyoftokensnwithoutprefix); return text; } // Private Methods private void insertImage(UserDataVO userdata, SVGOMDocument clone) throws FileNotFoundException, IOException{ log.debug(">insertImage("+userdata != null ? userdata.getUsername() : "null"+")"); int imgx = 0; int imgy = 0; int imgwidth = 0; int imgheight = 0; String transform = null; // Get image info from template NodeList list = clone.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. BufferedImage image = null; SVGOMImageElement imageelement = new SVGOMImageElement("", clone); SimpleImageHandler imagehandler = new SimpleImageHandler(new ImageHandlerBase64Encoder()); SVGGeneratorContext svgcxt = SVGGeneratorContext.createDefault(clone); imagehandler.handleImage((RenderedImage) image, imageelement, imgx, imgy, imgwidth, imgheight, svgcxt); if(transform != null && !transform.equals("")) imageelement.setAttribute("transform", transform); clone.getRootElement().appendChild(imageelement); } } // Private Variables final private SVGOMDocument svgdoc; final private long validityms; final private String hardtokensnprefix; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -