⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svgexport.java

📁 完全基于java开发的svg矢量绘图工具
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                                Graphics2D g2=(Graphics2D)wImage.getGraphics();                                                                //getting the graphics node that will be painted                                GraphicsNode gn=getGraphicsNode();                                                                //computing the graphics transformation so that the image is scaled to the defined size                                Dimension canvasSize=getCanvasSize();                                gn.setTransform(AffineTransform.getScaleInstance(width/canvasSize.width, height/canvasSize.height));                                                                //painting the image                                g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);                                g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);                                g2.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);                                g2.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);                                g2.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);                                g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);                                g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);                                g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);                                g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);                                                                g2.setColor(Color.white);                                g2.fillRect(0, 0, (int)width, (int)height);                                gn.paint(g2);                                                                //creating the IIOImage                                IIOImage iioImage=new IIOImage(wImage, null, null);                                Iterator<ImageWriter> it=ImageIO.getImageWritersByMIMEType("image/tiff");                                                                ImageWriter w=null;                                                                while(it.hasNext()) {                                                                        w=it.next();                                                                        if(w instanceof TIFFImageWriter) {                                                                                break;                                    }                                }                                                                //getting the image writer                                final ImageWriter writer=w;                                //writing the image                                ImageOutputStream out=ImageIO.createImageOutputStream(new File(new URI(fpath)));                                writer.setOutput(out);                                //adding the listener to the writer                                writer.addIIOWriteProgressListener(new IIOWriteProgressListener() {                                                                        public void imageComplete(ImageWriter wr) {                                                                                writer.removeIIOWriteProgressListener(this);                                        progressBar.setVisible(false);                                    }                                                                        public void writeAborted(ImageWriter wr) {                                                                                writer.removeIIOWriteProgressListener(this);                                        progressBar.setVisible(false);                                    }                                                                        public void imageProgress(ImageWriter wr, float value) {                                                                                progressBar.setProgressBarValue(25+3*value/4, 0, 100);                                                                                if(progressBar.cancelAction()) {                                                                                        writer.abort();                                                                                        JOptionPane.showMessageDialog(  getSVGEditor().getParent(),                                                     messageexporterror, labelerror, JOptionPane.WARNING_MESSAGE);                                            }                                    }                                                                        public void imageStarted(ImageWriter wr, int arg1) {}                                                                        public void thumbnailComplete(ImageWriter wr) {}                                                                        public void thumbnailProgress(ImageWriter wr, float arg1) {}                                                                        public void thumbnailStarted(ImageWriter wr, int arg1, int arg2) {}                                });                                                                writer.write(null, iioImage, writer.getDefaultWriteParam());                                //cleaning up                                out.flush();                                writer.removeAllIIOWriteProgressListeners();                                progressBar.setVisible(false);                                writer.dispose();                                out.close();                            }catch (Exception ex){                                ex.printStackTrace();                                                                progressBar.setVisible(false);                                                                SwingUtilities.invokeLater(new Runnable() {                                                                        public void run() {                                                                                JOptionPane.showMessageDialog(  getSVGEditor().getParent(),                                                 messageexporterror, labelerror, JOptionPane.WARNING_MESSAGE);                                                                                    }                                });                                                                try{                                    //removing the file that had to be written                                    new File(new URI(fpath)).delete();                                }catch (Exception ex2) {}                            }                        }                    };                }                                break;                            case PDF_FORMAT :                                //getting the compression quality                res=pdfExportDialog.showExportDialog(frame);                                if(res==ExportDialog.OK_ACTION) {                                        //initializing the progress bar and showing it                    progressBar.setIndeterminate(true, true);                    progressBar.setVisible(true);                                        //getting all information                    final com.lowagie.text.Rectangle pageSize=pdfExportDialog.getPageSize();                    final boolean isPortrait=pdfExportDialog.isPortrait();                    final Insets margin=pdfExportDialog.getMargins();                    final String    title=pdfExportDialog.getTitle(),                    author=pdfExportDialog.getAuthor(),                    subject=pdfExportDialog.getSubject(),                    keywords=pdfExportDialog.getKeywords(),                    creator=pdfExportDialog.getCreator();                                        //creating the canvas that will be used to generate the pdf file                    new ExportCanvas(frame.getScrollPane().getSVGCanvas().getDocument(), progressBar) {                                                /**                         * whether the pdf document is open or not                         */                        protected boolean pdfDocOpen=false;                                                @Override                        protected void doWhenRenderingDone() {                                                        //setting that the state of the progress bar is indeterminate                            progressBar.setIndeterminate(true, false);                                                        try{                                //the output stream used to write the pdf file                                final BufferedOutputStream out=new BufferedOutputStream(                                        new FileOutputStream(new File(new URI(fpath))));                                                                com.lowagie.text.Rectangle rect=pageSize;                                                                //setting if the orientation of the pdf                                rect=isPortrait?rect:rect.rotate();                                                                //creating the pdf document and the writer                                final com.lowagie.text.Document pdfDoc=new Document(  rect, margin.left, margin.right,                                                                                                                                   margin.top, margin.bottom) {                                    public void open() {                                                                                super.open();                                        pdfDocOpen=true;                                    }                                                                        public void close() {                                                                                try{super.close();}catch (Exception ex) {}                                        pdfDocOpen=false;                                    }                                };                                //adding meta data                                pdfDoc.addTitle(title);                                pdfDoc.addAuthor(author);                                pdfDoc.addSubject(subject);                                pdfDoc.addKeywords(keywords);                                pdfDoc.addCreator(creator);                                                                PdfWriter writer=PdfWriter.getInstance(pdfDoc, out);                                  pdfDoc.open();                                //getting the pdf graphics                                PdfContentByte cb=writer.getDirectContent();                                final PdfTemplate tp=cb.createTemplate(rect.width(), rect.height());                                tp.setWidth(rect.width());                                tp.setHeight(rect.height());                                                                Graphics2D g2=tp.createGraphics(rect.width(), rect.height(), new DefaultFontMapper());                                                                g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);                                g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);                                g2.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);                                g2.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);                                g2.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);                                g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);                                g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);                                g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);                                g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);                                //the thread checking the pdf document state                                Thread thread=new Thread() {                                                                           @Override                                    public void run() {                                           while(pdfDocOpen) {                                           if(progressBar.cancelAction()) {                                               pdfDocOpen=false;                                                                                              try {                                                   tp.reset();                                                   pdfDoc.close();                                               }catch (Exception ex) {ex.printStackTrace();}                                                                                              try {                                                   out.close();                                                   new File(new URI(fpath)).delete();                                               }catch (Exception ex) {ex.printStackTrace();}                                               break;                                           }                                                                                      try {sleep(500);}catch (Exception ex) {}                                       }                                                                              progressBar.setVisible(false);                                    }                                 };                                                                thread.start();                                //painting                                getGraphicsNode().paint(g2);                                                                g2.dispose();                                cb.addTemplate(tp, 0, 0);                                                                //closing the document                                pdfDoc.close();                                                                out.flush();                                out.close();                                                                progressBar.setVisible(false);                            }catch (Exception ex){                                                                ex.printStackTrace();                                                                progressBar.setVisible(false);                                                                SwingUtilities.invokeLater(new Runnable() {                                                                        public void run() {                                                                                JOptionPane.showMessageDialog(  getSVGEditor().getParent(),                                                 messageexporterror, labelerror, JOptionPane.WARNING_MESSAGE);              

⌨️ 快捷键说明

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