精华内容
下载资源
问答
  • import java.io.File; import java.io.IOException; import java.io.InputStream; ...//网页全屏截图 public final class WebPageFullPicture { private WebPageFullPicture() {}; p...
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.UUID;
    
    //网页全屏截图
    public final class WebPageFullPicture {
    
    	private WebPageFullPicture() {};
    
    	public static void savePage(String url, String path) {
    		if (!url.startsWith("http://")) {
    			url = "http://" + url;
    		}
    
    		//String saveDir = PathUtils.getWebRootDirFilePath("flowImage");
    		String phantomDir = PathUtils.getWebRootDirFilePath("phantomjs");
    		System.out.println(phantomDir);
    
    		StringBuffer buffer = new StringBuffer();
    		buffer.append(phantomDir + "/phantomjs.exe ");
    //		buffer.append(" c://");
    		buffer.append(" --ignore-ssl-errors=yes ").append(
    				"'"+phantomDir + "/examples/rasterize.js'  '").append(url + "' ").append(
    				path);
    		
    		System.out.println(buffer.toString());
    		
    		
    
    		try {
    			Process process = Runtime.getRuntime().exec(buffer.toString());
    			InputStream eis = process.getErrorStream();
    			byte[] buf = new byte[1024];
    			int len = 0;
    			while ((len = eis.read(buf)) != -1) {
    				System.out.println(new String(buf, 0, len));
    			}
    			eis.close();
    
    			InputStream is = process.getInputStream();
    
    			buf = new byte[1024];
    			// len = 0;
    			while ((len = is.read(buf)) != -1) {
    				System.out.println(new String(buf, 0, len));
    			}
    			is.close();
    
    //			File file = new File(WebPageFullPicture.class.getResource("/").getPath(),fileName);
    //			if(file.exists()){
    //				file.renameTo(new File(saveDir,fileName));
    //			}
    			
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    	}
    
    	public static void main(String[] args) {
    		try {
    			File file = new File("D:/tmp",UUID.randomUUID()+".png");
    			WebPageFullPicture.savePage("http://www.baidu.com/index.php?tn=monline_5_dg", file.getAbsolutePath());
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    

      

        需要使用到  phantomjs

     

     

    展开全文
  • java导出html到word(带图片、富文本编辑器) 1、 首先,需要新建一个word文档,在里面编好你想要的样式,需要加入数据的地方用占位符表示,如name,需要加入图片的地方随便插一张图片就行了,富文本编辑器的地方也用...

    java导出html到word(带图片、富文本编辑器)

    1、 首先,需要新建一个word文档,在里面编好你想要的样式,需要加入数据的地方用占位符表示,如name,需要加入图片的地方随便插一张图片就行了,富文本编辑器的地方也用占位符表示,如${content}(这里我存的nr)然后另存为单个网页(.mht)格式,这个时候别心急,再用word将.mht文件打开,你会发现刚刚调好的样式变了,主要是整个文档变宽了,再进行一遍微调。
    在这里插入图片描述
    2、用编辑器.mht文件,我拉进idea调的(EditPlus也可以),把里边的us-ascii全部修改为utf-8。另外找到另外两个地方如下图(存放富文本编辑器中的图片的,我html图片直接存的Base64,我会把存地址和base64的工具类都给你们。),都做好之后把后缀改为ftl。
    在这里插入图片描述

    在这里插入图片描述

    3、 我这里直接存的Map<String,Object>,下边三个划红线的在模板中一一对应的(每个模板都不一样)。
    在这里插入图片描述
    在这里插入图片描述
    导出所需的工具类(图片为地址的格式),之前的一个例子
    https://download.csdn.net/download/jia814583973/11877541
    (图片已经为base64编码的)
    https://download.csdn.net/download/jia814583973/11877527

    注意:这里是一个导出的工具类,注释掉的是导出成压缩包(自己看着用吧)

    package com.sx.common.wordexp;
    
    import com.sx.helper.CommonTools;
    import com.sx.helper.DateHelper;
    import com.sx.helper.StringHelper;
    import freemarker.template.Configuration;
    import freemarker.template.Template;
    import freemarker.template.TemplateException;
    import sun.misc.BASE64Encoder;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.*;
    import java.util.HashMap;
    import java.util.Map;
    
    public class ExportDoc {
    
        private Configuration configuration;
        private String encoding;
    
        public ExportDoc(String encoding) {
            this.encoding = encoding;
            configuration = new Configuration(Configuration.VERSION_2_3_22);
            configuration.setDefaultEncoding(encoding);
    
            //configuration.setClassForTemplateLoading(this.getClass(), "/templates/");
            try {
                //configuration.setDirectoryForTemplateLoading(new File("G:\\ideaWorkspace\\zwxtzhzx\\src\\main\\java\\com\\sx\\common\\wordexp\\templates"));
                //请将模板文件放在resource文件夹下的templates文件夹中
                configuration.setDirectoryForTemplateLoading(new File(this.getClass().getResource("/").getPath() + "templates"));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    
        public Template getTemplate(String name) throws Exception {
            return configuration.getTemplate(name);
    
        }
        
    
        public Map<String, Object> getDataMap() {
            Map<String, Object> dataMap = new HashMap<String, Object>();
            dataMap.put("doc_gdbh", "哎呦喂哈哈");
            dataMap.put("sj_Djdh", "哎呦喂哈哈");
            //dataMap.put("doc_ldsj", "我擦勒");
            /*try {
                dataMap.put("image", getImageStr("D:\\头像.jpg"));
            } catch (IOException e) {
                e.printStackTrace();
            }*/
            return dataMap;
        }
    
        public void exportDoc(String doc, String name) throws Exception {
            Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(doc), encoding));
            Template template = getTemplate(name);
            template.process(getDataMap(), writer);
        }
    
        /**
         * 测试方法
         * @param args
         * @throws Exception
         */
        public static void main(String[] args) throws Exception {
            ExportDoc maker = new ExportDoc("UTF-8");
            maker.exportDoc("D:\\ttt.doc", "test.ftl");
            //maker.
        }
        
    
        /**
         * 浏览器导出word
         * @param modelName 模板文件名(包含后缀ftl)
         * @param fileName 导出文件名
         * @param dataMap 数据Map
         * @param request HttpServletRequest
         * @param response HttpServletResponse
         */
        public void downloadDoc(String modelName, String fileName, Map dataMap, HttpServletRequest request, HttpServletResponse response){
            Writer writer = null;
            String filename = "";
           
            try {
                //编码文件名并加上后缀
                filename = encodeChineseDownloadFileName(request, fileName) + ".doc";
            } catch (Exception e) {
                e.printStackTrace();
            }
            try {
                //设置HTTP响应头
                //response.setContentType("application/msword");
                //response.addHeader("Content-Disposition","attachment; filename="+"haha");
                response.setHeader("Content-disposition", filename);
                response.setContentType("application/msword");
                response.setHeader("Content-disposition", "attachment;filename=" + filename);
                response.setHeader("Pragma", "No-cache");
                writer = response.getWriter();
                //writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\ttt.doc"), encoding));
                Template template = this.getTemplate(modelName);
                //template.process(this.getSjDataMap(), writer);
                template.process(dataMap, writer);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (TemplateException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if(writer != null){
                    try {
                        writer.flush();
                        writer.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
    
        /**
         * 对文件流输出下载的中文文件名进行编码 屏蔽各种浏览器版本的差异性
         * @param request
         * @param pFileName
         * @return
         * @throws UnsupportedEncodingException
         */
    
        public static String encodeChineseDownloadFileName(
                HttpServletRequest request, String pFileName) throws Exception {
    
            String filename = null;
            String agent = request.getHeader("USER-AGENT");
            if (null != agent){
                if (-1 != agent.indexOf("Firefox")) {//Firefox
                    filename = "=?UTF-8?B?" + (new String(org.apache.commons.codec.binary.Base64.encodeBase64(pFileName.getBytes("UTF-8"))))+ "?=";
                }else if (-1 != agent.indexOf("Chrome")) {//Chrome
                    filename = new String(pFileName.getBytes(), "ISO8859-1");
                } else {//IE7+
                    filename = java.net.URLEncoder.encode(pFileName, "UTF-8");
                    filename = filename.replace("+", "%20");
                }
            } else {
                filename = pFileName;
            }
            return filename;
        }
    
        /**
         * 通过模板获取word流
         * @param modelName 模板文件名(包含后缀ftl)
         * @param dataMap 数据Map
         */
        public ByteArrayOutputStream wordBaos(String modelName, Map dataMap){
            ByteArrayOutputStream byteOut = null;
            Writer writer = null;
            try {
                byteOut = new ByteArrayOutputStream();
                Template template = this.getTemplate(modelName);
                writer = new OutputStreamWriter(byteOut, "UTF-8");
                template.process(dataMap, writer);
                return byteOut;
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if(writer != null){
                    try {
                        writer.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return null;
        }
    
        /**
         * 将多个文件流合并到压缩包下载
         * @param baoss 字节输出流数组
         * @param fileNames 文件名数组
         * @param response HttpServletResponse
         */
        /*public void downLoadZip(ByteArrayOutputStream[] baoss, String[] fileNames, String zipName, HttpServletRequest request, HttpServletResponse response){
            //压缩包输出流
            ZipArchiveOutputStream zous = null;
            try {
                zous = new ZipArchiveOutputStream(response.getOutputStream());
                zous.setUseZip64(Zip64Mode.AsNeeded);
                //response.setContentType("application/octet-stream");
                //编码文件名并加上后缀(压缩包内部文件名不需要编码)
                String filename = encodeChineseDownloadFileName(request, zipName) + ".zip";
                response.setHeader("Content-disposition", "attachment; filename=" + filename);
                for(int i = 0; i < baoss.length; i++){
                    ByteArrayOutputStream baos = baoss[i];
                    //给文件名
                    String fileName = fileNames[i];
                    //下面三行是吧excel的文件以流的形式转为byte[]
                    byte[] bytes = baos.toByteArray();
                    ArchiveEntry entry = new ZipArchiveEntry(fileName);
                    zous.putArchiveEntry(entry);
                    zous.write(bytes);
                    zous.closeArchiveEntry();
                    if (baos != null) {
                        baos.close();
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if(zous != null){
                        zous.flush();
                        zous.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }*/
    }
    
    展开全文
  • java导出word

    2013-05-08 17:17:36
     网页问卷调查,有复选框,有图片,在导出到word中问题与选择的答案与html上一样    难点:  1、word模板中有图片  2、word中有显示复选框与动态选中内容      解决方案:  把word转存为xml格式,...

    需求描述:

         网页问卷调查,有复选框,有图片,在导出到word中问题与选择的答案与html上一样
         
         难点:
              1、word模板中有图片
              2、word中有显示复选框与动态选中内容
     
     
         解决方案:
              把word转存为xml格式,在动态复选区域用word的标签标识出来,填空的位置用标签标识。
              从word xml中 找出复选选中的内容,复选不选的内容,分别存为不同的模板,以便动态插入
                   
    书签的内容:
                 <w:bookmarkStart w:id="2" w:name="quest3_checkbox_男"/><w:bookmarkEnd w:id="2"/>
     
             
     
              1、用java普通的io,先读取模板内容,先用正则剔除书签的结束内容
              context = context.replaceAll( "<w:bookmarkEnd w:id=\"\\d+\"/>" , "" );
     
              2、用正则找到所有的书签,进行遍历替换
              
     
               String result = "";
                if (quest == null || context == null || context.trim().length() == 0) {
                     return result;
               }
               Pattern p = Pattern.compile("<w:bookmarkStart(.[^>])*/>");
               Pattern p2 = Pattern. compile("w:name=\"(.*)\"");
               Matcher matcher = p.matcher(context);
     
               StringBuffer sBuffer = new StringBuffer();
                while (matcher.find()) {
                     // 找到book标签
                    String group = matcher.group();
                    System. out.println(group);
                     // 从标签中找到内容
                    Matcher m2 = p2.matcher(group);
                     if (m2.find()) {
                         String bookmark = m2.group(1);
                         String targetStr = repaceStr(bookmark, quest);
      
                          if (targetStr.indexOf( "<w:r") == -1) {
                                // 是字的,非符号
                               targetStr = TEXT_STR.replaceAll("\\$text\\$" , targetStr);
                                 
                         }
     
                         System. out.println(targetStr);
                         matcher.appendReplacement(sBuffer, targetStr);
                    }
               }
               matcher.appendTail(sBuffer);
               result = sBuffer.toString();
                return result;
              3、判断选中不选中的内容
                   如果是选中的,取选中的模板字符串,不选中的,选不选中的模板,替换相应的书签
     
              4、把处理好的字符串输出到文件中即可,后缀名改为xxxx.doc
     
                需注意模板编码问题,用eclipse打开选中模板有乱码,在程序中需要gkb读取,用ue或EditPlus 打开没问题
     
    展开全文
  • 转载请注明出处:https://blog.csdn.net/l1028386804/article/details/79955398最近的项目中,需要实现一个将网页中显示的内容导出图片的功能,故研究了一下可以实现这个功能的各种方式,整理在此,以供以后使用。...

    转载请注明出处:https://blog.csdn.net/l1028386804/article/details/79955398

    最近的项目中,需要实现一个将网页中显示的内容导出为图片的功能,故研究了一下可以实现这个功能的各种方式,整理在此,以供以后使用。

    前台方式

    1. 利用html2canvas实现前台截屏

    html2canvas项目的gitHub地址
    html2canvas示例

    html2canvas可以将HTML代码块进行截取,并生成快照形式的canvas,然后可以利用html5的下载功能提供图片的下载接口,供用户下载。

    优点:前台技术,实现比较容易。

    缺点:此项目使用了html5的技术,因此在对IE的兼容上,只可以在IE9+的版本上使用。

    使用时,需要引用jQuery.js和html2canvas.js。(html2canvas.js可以在github上下载)

    具体JavaScript代码如下:

    var canvas = function () {
        html2canvas($("#chart"), {
                  onrendered: function (canvas) {
                      $("#class11").html(canvas);//将id为“class11”部分的代码转换为canvas
                      var type = 'png';//图片类型为png
                      var imgData = canvas.toDataURL('png');//将图片转换为png类型的流
    
                      var _fixType = function (type) {
                          type = type.toLowerCase().replace(/jpg/i, 'jpeg');
                          var r = type.match(/png|jpeg|bmp|gif/)[0];
                          return 'image/' + r;
                      };
    
                      var saveFile = function (data, filename) {
                          var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
                          save_link.href = data;
                          save_link.download = filename;
    
                          var event = document.createEvent('MouseEvents');
                          event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                          save_link.dispatchEvent(event);
                      };
    
                      //下载时的文件名
                      var filename = 'baidufe_' + (new Date()).getTime() + '.' + type;
    
                      // 下载文件
                      saveFile(imgData, filename);
                  }
              });
    };

    后台方式(java)

    1. 利用html2image实现

    html2image的地址(google)
    html2image是可以识别html标签并将html转换成图片的java项目。

    优点:后台转换,故对浏览器的版本基本没有要求。

    缺点:对样式的识别不是很好,转换出来的图片比较简单,基本没有可以兼容的样式。

    使用方式:maven中引用如下依赖:

    <dependency>
      <groupId>com.github.xuwei-k</groupId>
      <artifactId>html2image</artifactId>
      <version>0.1.0</version>
    </dependency>

    2. 利用DJNativeSwing项目实现

    纯java代码实现。使用DJNativeSwing这个项目,构建一个swing浏览器,打开网址,之后截取图片。(需要eclipse的swt库支持)

    优点:纯java实现。

    缺点:需要多线程的支持,只在控制台方式实现过

    使用这个方法,需要引用的maven依赖如下:

    <dependency>
        <groupId>com.hynnet</groupId>
        <artifactId>DJNativeSwing</artifactId>
        <version>1.0.0</version>
    </dependency>
    
    <dependency>
        <groupId>com.hynnet</groupId>
        <artifactId>DJNativeSwing-SWT</artifactId>
        <version>1.0.0</version>
    </dependency>
    
    <dependency>                            
    	<groupId>org.eclipse.swt.org.eclipse.swt.win32.win32.x86_64.4.3.swt</groupId>
        <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
        <version>4.3</version>
    </dependency>
    实现代码如下(引用自http://blog.csdn.net/buddyuu/article/details/52699997):
    public class PrintScreen4DJNativeSwingUtils extends JPanel {
    
        private static final long serialVersionUID = 1L;
        // 行分隔符
        final static public String LS = System.getProperty("line.separator", "/n");
        // 文件分割符
        final static public String FS = System.getProperty("file.separator", "//");
        // 当网页超出目标大小时 截取
        final static public int maxWidth = 2000;
        final static public int maxHeight = 1400;
    
        /**
         * @param file
         *            预生成的图片全路径
         * @param url
         *            网页地址
         * @param width
         *            打开网页宽度 ,0 = 全屏
         * @param height
         *            打开网页高度 ,0 = 全屏
         * @return boolean
         */
        public PrintScreen4DJNativeSwingUtils(final String file, final String url, final String WithResult) {
            super(new BorderLayout());
            JPanel webBrowserPanel = new JPanel(new BorderLayout());
            final JWebBrowser webBrowser = new JWebBrowser(null);
            webBrowser.setBarsVisible(false);
            webBrowser.navigate(url);
            webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
            add(webBrowserPanel, BorderLayout.CENTER);
            JPanel panel = new JPanel(new FlowLayout());
            webBrowser.addWebBrowserListener(new WebBrowserAdapter() {
                // 监听加载进度
                public void loadingProgressChanged(WebBrowserEvent e) {
                    // 当加载完毕时
                    if (e.getWebBrowser().getLoadingProgress() == 100) {
                        String result = (String) webBrowser.executeJavascriptWithResult(WithResult);
                        int index = result == null ? -1 : result.indexOf(":");
                        NativeComponent nativeComponent = webBrowser.getNativeComponent();
                        Dimension originalSize = nativeComponent.getSize();
                        Dimension imageSize = new Dimension(Integer.parseInt(result.substring(0, index)),
                                Integer.parseInt(result.substring(index + 1)));
                        imageSize.width = Math.max(originalSize.width, imageSize.width + 50);
                        imageSize.height = Math.max(originalSize.height, imageSize.height + 50);
                        nativeComponent.setSize(imageSize);
                        BufferedImage image = new BufferedImage(imageSize.width, imageSize.height,
                                BufferedImage.TYPE_INT_RGB);
                        nativeComponent.paintComponent(image);
                        nativeComponent.setSize(originalSize);
                        // 当网页超出目标大小时
                        if (imageSize.width > maxWidth || imageSize.height > maxHeight) {
                            // 截图部分图形
                            image = image.getSubimage(0, 0, maxWidth, maxHeight);
                            // 此部分为使用缩略图
                            /*
                             * int width = image.getWidth(), height = image
                             * .getHeight(); AffineTransform tx = new
                             * AffineTransform(); tx.scale((double) maxWidth /
                             * width, (double) maxHeight / height);
                             * AffineTransformOp op = new AffineTransformOp(tx,
                             * AffineTransformOp.TYPE_NEAREST_NEIGHBOR); //缩小 image
                             * = op.filter(image, null);
                             */
                        }
                        try {
                            // 输出图像
                            ImageIO.write(image, "jpg", new File(file));
                        } catch (IOException ex) {
                            ex.printStackTrace();
                        }
                        // 退出操作
                        System.exit(0);
                    }
                }
            });
            add(panel, BorderLayout.SOUTH);
    
        }
    
        // 以javascript脚本获得网页全屏后大小
        public static String getScreenWidthHeight() {
    
            StringBuffer jsDimension = new StringBuffer();
            jsDimension.append("var width = 0;").append(LS);
            jsDimension.append("var height = 0;").append(LS);
            jsDimension.append("if(document.documentElement) {").append(LS);
            jsDimension.append("  width = Math.max(width, document.documentElement.scrollWidth);").append(LS);
            jsDimension.append("  height = Math.max(height, document.documentElement.scrollHeight);").append(LS);
            jsDimension.append("}").append(LS);
            jsDimension.append("if(self.innerWidth) {").append(LS);
            jsDimension.append("  width = Math.max(width, self.innerWidth);").append(LS);
            jsDimension.append("  height = Math.max(height, self.innerHeight);").append(LS);
            jsDimension.append("}").append(LS);
            jsDimension.append("if(document.body.scrollWidth) {").append(LS);
            jsDimension.append("  width = Math.max(width, document.body.scrollWidth);").append(LS);
            jsDimension.append("  height = Math.max(height, document.body.scrollHeight);").append(LS);
            jsDimension.append("}").append(LS);
            jsDimension.append("return width + ':' + height;");
    
            return jsDimension.toString();
        }
    
        public static boolean printUrlScreen2jpg(final String file, final String url, final int width, final int height) {
    
            NativeInterface.open();
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    String withResult = "var width = " + width + ";var height = " + height + ";return width +':' + height;";
                    if (width == 0 || height == 0)
                        withResult = getScreenWidthHeight();
    
                    JFrame frame = new JFrame("网页截图");
                    // 加载指定页面,最大保存为640x480的截图
                    frame.getContentPane().add(new PrintScreen4DJNativeSwingUtils(file, url, withResult),
                            BorderLayout.CENTER);
                    frame.setSize(640, 480);
                    // 仅初始化,但不显示
                    frame.invalidate();
    
                    frame.pack();
                    frame.setVisible(false);
                }
            });
            NativeInterface.runEventPump();
    
            return true;
        }
    
        public static void main(String[] args) {  
    
            PrintScreen4DJNativeSwingUtils.printUrlScreen2jpg("1122.jpg", "https://www.baidu.com", 1400, 900);
    
        }
    }

    3. 利用phantomJs实现

    phantomJs的GitHub地址
    phantomJs官网

    phantom利用的是webKit内核,全面支持web而不需浏览器支持,快速,原生支持各种Web标准。

    优点:速度快,使用简单。

    缺点:需要在项目的服务器端引用exe文件进行截图,并发性能有待考证。

    使用这个方式,需要去官网下载最新的phantomJs脚本。官网地址在上面的链接中。

    具体代码如下(引用自http://www.cnblogs.com/lekko/p/4796062.html):

    /**
     * 网页转图片处理类,使用外部CMD
     */
    public class PhantomTools {
    
        private static final Logger _logger = Logger.getLogger(PhantomTools.class);
    
        private static final String _tempPath = "D:/data/temp/phantom_";
        private String basePath;
        private static final String _shellCommand1 = "phantomjs ";
        private static final String _shellCommand2 = "rasterize.js ";
    
        private String _file;
        private String _size;
    
        /**
         * 构造截图类
         * @param hash 用于临时文件的目录唯一化
         * @param basePath phantomJs所在路径
         */
        public PhantomTools(int hash, String basePath) {
            _file = _tempPath + hash + ".png";
            this.basePath = basePath;
        }
    
        /**
         * 构造截图类
         * @param hash 用于临时文件的目录唯一化
         * @param size 图片的大小,如800px*600px(此时高度会裁切),或800px(此时 高度最少=宽度*9/16,高度不裁切)
         * @param basePath phantomJs所在路径
         */
        public PhantomTools(int hash, String size, String basePath) {
            _file = _tempPath + hash + ".png";
            if (size != null)
                _size = " " + size;
            this.basePath = basePath;
        }
    
        /**
         * 将目标网页转为图片字节流
         * @param url 目标网页地址
         * @return 字节流
         */
        public byte[] getByteImg(String url) throws IOException {
            BufferedInputStream in = null;
            ByteArrayOutputStream out = null;
            File file = null;
            byte[] ret = null;
            try {
                if (exeCmd(basePath + _shellCommand1 + basePath + _shellCommand2 + url + " " + _file + (_size != null ? _size : ""))) {
                    file = new File(_file);
                    if (file.exists()) {
                        out = new ByteArrayOutputStream();
                        byte[] b = new byte[5120];
                        in = new BufferedInputStream(new FileInputStream(file));
                        int n;
                        while ((n = in.read(b, 0, 5120)) != -1) {
                            out.write(b, 0, n);
                        }
                        file.delete();
                        ret = out.toByteArray();
                    }
                } else {
                    ret = new byte[] {};
                }
            } finally {
                try {
                    if (out != null) {
                        out.close();
                    }
                } catch (IOException e) {
                    _logger.error(e);
                }
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (IOException e) {
                    _logger.error(e);
                }
                if (file != null && file.exists()) {
                    file.delete();
                }
            }
            return ret;
        }
    
        /**
         * 执行CMD命令
         */
        private static boolean exeCmd(String commandStr) {
            BufferedReader br = null;
            try {
                Process p = Runtime.getRuntime().exec(commandStr);
                if (p.waitFor() != 0 && p.exitValue() == 1) {
                    return false;
                }
            } catch (Exception e) {
                _logger.error(e);
            } finally {
                if (br != null) {
                    try {
                        br.close();
                    } catch (Exception e) {
                        _logger.error(e);
                    }
                }
            }
            return true;
        }
    }

    展开全文
  • 最近的项目中,需要实现一个将网页中显示的内容导出图片的功能,故研究了一下可以实现这个功能的各种方式,整理在此,以供以后使用。
  • 需求:将网页内容导出为pdf文件,其中包含文字,图片,echarts图 原理:利用freemarker模板与数据渲染所得到的html内容,通过ITextRenderer对象解析html内容生成pdf 参考地址: 导出pdf ...带有图片 ...
  • 使用wps可以正常打开 但是office打开如果富文本不带图片内容的话 会导致打不开. 解决方案可以在java程序处理富文本字符串的时候拼接一个带有空白图片的字符串进去 问题解决
  • /**** @Description: 将网页内容导出为word*@param @paramfile*@param @throwsDocumentException*@param @throwsIOException 设定文件*@returnvoid 返回类型*@throws*/public static String exportDoc() ...
  • 借助iText这个Java库,我们可以将HTML文件保存为图片文件进而转换成PDF格式,接下来就来具体看下JavaScript+Java实现HTML页面转为PDF文件保存的方法需求是一个导出pdf的功能,多方奔走终于实现了,走了不少弯路,而且...
  • 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 在线手册: 制作ftl模版 在上面中整理代码 这里要将字符串删掉换成你所需要的key,如: 如过是多张图片则需要加一个list...
  • word模版另存为网页之后,将html格式的文件转为jsp页面,在页面上加入相应的动态值,加入的值中包含图片,这个该怎么处理??另外导出的文件需要拷贝到不同的地方(无法联网)使用。xmlns:o="urn:schemas-microsoft-...
  • /**** @Description: 将网页内容导出为word*@param @paramfile*@param @throwsDocumentException*@param @throwsIOException 设定文件*@returnvoid 返回类型*@throws*/public static String exportDoc() ...
  • 需求及前提:(1) 将web网页展示的某些图表,导出图片保存;(2) 图表可能是Canvas的(使用H5绘图组件生成的或者自己Draw的),也可能是div组合出来的;方案1:使用html2canvas(某些浏览器需要引入依赖es6-promise.min...
  • 2020-8-12|复制链接借助iText这个Java库,我们可以将HTML文件保存为图片文件进而转换成PDF格式,接下来就来具体看下JavaScript+Java实现HTML页面转为PDF文件保存的方法需求是一个导出pdf的功能,多方奔走终于实现了,...
  • JAVA使用cdp4j爬取动态渲染网页的数据欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定...
  • 针对这个问题,提供一种基于快逸报表的解决方案,快逸报表是一个纯Java开发的强大的Web报表工具软件,开发人员可以很方便地基于快逸在网页上到处PDF文件。 问题描述: 客户在通过快逸报表api导出pdf文件的时候...
  • word模版另存为网页之后,将html格式的文件转为jsp页面,在页面上加入相应的动态值,加入的值中包含图片,这个该怎么处理??另外导出的文件需要拷贝到不同的地方(无法联网)使用。 <%@ page contentType=...
  • 本文提供关于jacob配置的dll文件,java2word的运行安装文件,jacob和java2word整合jar包 ckedtior网页编辑器需要用的jar,以及使用整合后的jar对word进行插入图片、带格式文字段落、和导出word功能源码
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
  • Java资源包01

    2016-08-31 09:16:25
    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
  • java开源包101

    2016-07-13 10:11:08
    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
  • java开源包11

    热门讨论 2013-06-28 10:10:38
    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
  • java开源包2

    热门讨论 2013-06-28 09:17:39
    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
  • java开源包3

    热门讨论 2013-06-28 09:20:52
    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
  • java开源包6

    热门讨论 2013-06-28 09:48:32
    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
  • java开源包5

    热门讨论 2013-06-28 09:38:46
    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
  • java开源包10

    热门讨论 2013-06-28 10:06:40
    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...
  • java开源包4

    热门讨论 2013-06-28 09:26:54
    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 133
精华内容 53
关键字:

java导出网页图片

java 订阅