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 + -
显示快捷键?