📄 svgimagemanipulator.java
字号:
hardtokensn, hardtokensnwithoutprefix, copyoftokensn, copyoftokensnwithoutprefix, startdate, enddate); // 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 void process(String tagName, UserDataVO userdata, DNFieldExtractor dnfields, String[] pincodes, String[] pukcodes, String hardtokensn, String hardtokensnwithoutprefix, String copyoftokensn, String copyoftokensnwithoutprefix, String startdate, String enddate){ Collection texts = new ArrayList(); NodeList list = svgdoc.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.info("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) 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 = 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. BufferedImage image = null; 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -