`
lspgdut
  • 浏览: 198982 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

将html转换成图像

阅读更多

需要eclipse的swt.jar

public class HtmlToImageUtil {
 private Display display;
 private Shell shell;
 private Browser browser;
    private boolean completed = false;
    static final ArrayList urls = new ArrayList();
 static boolean canRemove = false;
 static void initialize(final Display display, Browser browser) {  
       browser.addListener(SWT.MouseDown, new Listener() {  
         public void handleEvent(Event event) {  
           System.out.println("event.time:" + event.time);  
         }  
       });  
       browser.addOpenWindowListener(new OpenWindowListener() {  
         public void open(WindowEvent event) {  
           // Embed the new window  
           final Shell shell = new Shell(display);  
           shell.setText("New Window");  
           shell.setLayout(new FillLayout());  
           final Browser browser = new Browser(shell, SWT.NONE);  
           initialize(display, browser);  
           event.browser = browser;  
           event.display.asyncExec(new Runnable() {  
               public void run() {  
                 String url = browser.getUrl();  
                 System.out.println(url);  
                 System.out.println(browser.getText());  
                 if (urls.contains(url)){  
                   //flag to chek if the window is closed automatic  
                   canRemove = false;  
                   shell.close();  
                 }  
                 else{  
                   canRemove = true;  
                   urls.add(url);  
                 }  
                  
               }  
           });
          // System.out.println("open...............");
         }
        
       });  
       browser.addVisibilityWindowListener(new VisibilityWindowListener() {  
         public void hide(WindowEvent event) {  
           Browser browser = (Browser) event.widget;  
           Shell shell = browser.getShell();  
           shell.setVisible(false);
          // System.out.println("hide................");
         }  
  
         public void show(WindowEvent event) {  
           Browser browser = (Browser) event.widget;  
           Shell shell = browser.getShell();  
           if (event.location != null)  
               shell.setLocation(event.location);  
           if (event.size != null) {  
               Point size = event.size;  
               shell.setSize(shell.computeSize(size.x, size.y));  
           }  
           if (event.addressBar || event.menuBar || event.statusBar  
                 || event.toolBar) {  
               // Create widgets for the address bar, menu bar, status bar and/or tool bar  
               // leave enough space in the Shell to accomodate a Browser of the size  
               // given by event.size  
           }  
           shell.open(); 
           //System.out.println("show.......................");
         }  
       });  
       browser.addDisposeListener(new DisposeListener(){  
         public void widgetDisposed(DisposeEvent event){  
           Browser browser = (Browser) event.widget;  
           if (canRemove)  
               urls.remove(browser.getUrl());  
           Shell shell = browser.getShell();  
          // shell.close();
         
          // System.out.println("dispose....................");
         }  
       });  
 }
   
    public HtmlToImageUtil(){
     
    }
    /**
     * 将html地址的内容转换成图片
     * @param htmlUrl html的地址
     * @param imgUrl  生成图片的地址
     * @param xDifference 生成图片在原来的基础上的x轴方向的减量
     * @param yDifference 生成图片在原来的基础上的y轴方向的减量
     * @param imageWidth 生成图片的宽度
     * @param imageHeight 生成图片的高度
     */
    public HtmlToImageUtil(String htmlUrl,String imgUrl,int xDifference,int yDifference,int imageWidth,int imageHeight)
    {
       display = new Display();
       
        shell = new Shell(display);
        shell.setVisible(false);
        shell.setLayout(new FillLayout());
      
        browser = new Browser(shell, SWT.EMBEDDED | SWT.NO_FOCUS | SWT.NO_REDRAW_RESIZE );
        browser.refresh();
        browser.clearSessions();    
        browser.setUrl(htmlUrl);
        initialize(display, browser);
        //shell.open();
        browser.addProgressListener(new ProgressListener(){

   public void changed(ProgressEvent progressevent) {
    // TODO Auto-generated method stub
    //System.out.println("change.........");
    
   }

   public void completed(ProgressEvent progressevent) {
    // TODO Auto-generated method stub
    completed=true;
    //System.out.println("complete........");
   }
       
       });
                   
        while (!shell.isDisposed())
        {
            if (!display.readAndDispatch())
            {
             //display.update();
             if(completed){
               capture(imgUrl, xDifference, yDifference, imageWidth, imageHeight);
               completed = false;
              
               try {
     Thread.sleep(50);
     display.dispose();//注销display
      } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
     }
             }
             
             
            } else{
             //display.dispose();
            }
           
        }
        display.dispose();
    
    }
   
    /**
     * 将html的内容转换成图片
     * @param htmlText html的内容
     * @param imgUrl  生成图片的地址
     * @param xDifference 生成图片在原来的基础上的x轴方向的减量
     * @param yDifference 生成图片在原来的基础上的y轴方向的减量
     * @param imageWidth 生成图片的宽度
     * @param imageHeight 生成图片的高度
     */
    public HtmlToImageUtil(String htmlText,String imgUrl,int xDifference,int yDifference,int imageWidth,int imageHeight,Boolean isUser){
         display = new Display();
       
        shell = new Shell(display);
        shell.setVisible(false);
        shell.setLayout(new FillLayout());
      
        browser = new Browser(shell, SWT.EMBEDDED | SWT.NO_FOCUS | SWT.NO_REDRAW_RESIZE );
        browser.refresh();
        browser.clearSessions();      
        browser.setText(htmlText);
        initialize(display, browser);
        //shell.open();
        browser.addProgressListener(new ProgressListener(){

   public void changed(ProgressEvent progressevent) {
    // TODO Auto-generated method stub
    //System.out.println("change.........");
   }

   public void completed(ProgressEvent progressevent) {
    // TODO Auto-generated method stub
    completed=true;
    //System.out.println("complete........");
   }
       
       });
                   
        while (!shell.isDisposed())
        {
            if (!display.readAndDispatch())
            {
             //display.update();
             if(completed){
               capture(imgUrl, xDifference, yDifference, imageWidth, imageHeight);
               completed = false;
              
               try {
     Thread.sleep(50);
     display.dispose();//注销display
      } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
     }
             }
             
             
            } else{
             //display.dispose();
            }
           
        }
        display.dispose();
    }
   
  
   
    /**
     *
    * @param imgUrl  生成图片的地址
     * @param xDifference 生成图片在原来的基础上的x轴方向的减量
     * @param yDifference 生成图片在原来的基础上的y轴方向的减量
     */
    private void capture(String imgUrl,int xDifference,int yDifference,int imageWidth,int imageHeight)
    {
     
         GC gc = new GC(browser);
         //设置默认的宽度
         if(BlankUtil.isBlank(imageWidth)){
          imageWidth=1050;
         }
        
         //设置默认的高度
         if(BlankUtil.isBlank(imageWidth)){
          imageHeight=450;
         }
         
      
        //始终最前  (50:x轴,50:主轴,1050:图像的x轴的长度,450:图像的y轴的长度)
        OS.SetWindowPos(shell.handle , OS.HWND_TOPMOST, 50 , 50 ,imageWidth, imageHeight , SWT.NULL);
        shell.setVisible(true);
        shell.open();
        shell.layout();
        try {
   Thread.sleep(30);
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
        Point size = browser.getSize();
            
      
        Image image = new Image(display, size.x-xDifference, size.y-yDifference); 
        gc.copyArea(image, 0, 0);
        shell.setVisible(false);
       
       // BufferedImage bufferedImage=new BufferedImage(500,500,BufferedImage.TYPE_INT_RGB);
       
        ImageLoader imageLoader = new ImageLoader();
        imageLoader.data = new ImageData[] {image.getImageData()};
        imageLoader.save(imgUrl, SWT.IMAGE_JPEG);
        gc.dispose();
        image.dispose();
        //display.dispose();
       
      
        //System.out.println("captured");
    }
   
    public class BrowserProgress implements ProgressListener
    {
        public void changed(ProgressEvent a_Event)
        {
         //completed = true;
         //System.out.println("changed.......");
        }

        public void completed(ProgressEvent a_Event)
        {
            completed = true;
            //System.out.println("complete........");
        }
    }
   
   
   
   
 public static void main(String[] args) {
    /*  
        new HtmlToImageUtil("E:/test.html","D:/test.jpg",18,0,1050,450);        
  
  System.out.println("test");*/
  //new HtmlToImageUtil("aaa","F:/aa.jpg",18,0,1050,450,true);
  //new HtmlToImageUtil("F:/reportWorkSpace/JxlReport/WebContent/test.html","D:/test.jpg",18,0,1050,802);
  
  //new HtmlToImageUtil("D:/jakarta-tomcat-5.0.27/webapps/road/testImage/test.html","D:/test.jpg",18,0,1050,802);
  
  //new HtmlToImageUtil("F:/d.html","D:/test.jpg",18,0,1050,802);
 }

分享到:
评论

相关推荐

    Python-IMGKit将HTML转换成图像Python库

    **Python-IMGKit将HTML转换成图像Python库** 在Python编程中,我们经常需要处理各种数据格式,其中HTML和图像都是常见的元素。有时,我们希望将HTML内容转换为静态图像,以便于分享、嵌入或者简化展示。这就是...

    图像到html转换器

    【图像到HTML转换器】是一种创新的技术,它允许我们将图像数据转化为HTML代码,进而通过网页浏览器展示。这种技术的核心在于将图像的像素信息转化为可读的HTML文本,从而实现用色彩丰富的文字来近似地模拟原始图像的...

    ImageHtml (图像转换ASCII)

    ImageHTML是一款专用于将图像转换成ASCII字符的艺术形式的工具,它可以将图片转换为HTML格式,使得在网页上也可以展示这种独特的艺术效果。这个程序的独特之处在于它支持三种不同的图像处理模式,包括真彩色、灰度和...

    将PPT转化成HTML文件

    虽然在这个特定的转换过程中不直接涉及,但如果你需要将Word文档也转换为HTML,可以使用类似的逻辑,只是需要使用不同的库,如`python-docx`来处理Word文件,然后同样将内容转化为图片或直接转换为HTML文本。...

    图像转换文本pictxt

    OCR技术通过分析图像中的像素模式来识别并转化成文本,极大地提高了信息处理的效率和便捷性。 图像转换成文本的功能有多种应用场景。例如,对于纸质文档的数字化,用户可以拍摄或扫描文档照片,然后使用pictxt将...

    pdf转换成html转换器

    "PDF转换成HTML转换器"就是这样一个工具,专门用于将PDF文件转换为可编辑、可搜索且适应网页浏览的HTML格式。 转换过程涉及到的技术主要包括PDF解析、图像处理、文本提取、CSS样式生成等。PDF文件包含了页面布局、...

    mht 转换成html文件

    标题 "mht 转换成html文件" 描述的是一个工具的功能,该工具能够将.mht文件转换为.html文件。这种转换过程对于处理Web内容和跨浏览器兼容性问题至关重要。下面我们将深入探讨.mht和.html文件格式的区别以及转换过程...

    用于将 HTML 转换为图像 的 wkhtmltoimage工具的 Elixir 包装器_Elixir_代码_下载

    在IT领域,尤其是在Web开发中,有时候我们需要将HTML页面转换为静态图像,这在生成预览、报表或者保存页面快照时非常有用。`wkhtmltoimage`是一个流行且功能强大的开源工具,它利用WebKit渲染引擎(即WebKit背后的...

    实现word文件转换成html文件实现在线打开预览word文件

    标题和描述中提到的"实现word文件转换成html文件实现在线打开预览word文件",这是一个关于将Microsoft Word文档转换为HTML格式,以便在网页上预览的技术问题。下面将详细介绍这个过程涉及的关键知识点。 1. **...

    RTF转换成HTML的小工具

    它允许用户将RTF文档快速、便捷地转化为HTML格式,以便于在网络上传播或优化在线阅读体验。这个小工具具备了一些高级功能,如错字改错、自动排版和样式调整,这些特性极大地提升了转换的准确性和美观性。 错字改错...

    利用POI将word转换成html实现在线阅读

    总结起来,"利用POI将word转换成html实现在线阅读"涉及到的关键技术包括Apache POI库的使用,WMF到PNG的图像转换,以及HTML和CSS的构建。通过这些技术,我们可以实现将传统的离线Word文档转化为适应于网络环境的HTML...

    AI智能将图片转换成HTML和CSS代码.txt

    随着人工智能技术的快速发展,将图片转换成HTML和CSS代码的过程正变得越来越自动化,这一过程通常涉及图像识别和代码生成两个关键技术环节。目前,一些在线工具和服务如Fronty等已经能够提供这样的功能,让用户无需...

    使用java将office word pdf excel ppt文件转换成html文件

    我们可以逐页处理PDF,提取文字和图像,然后利用Flying Saucer将这些内容转化为HTML。 ### **流程概述** 通常,文件转换的流程如下: 1. 读取源文件。 2. 解析文件内容,提取文本、图像和样式信息。 3. 使用适当的...

    C# CHtmlToWord 将HTML文件转换成word文档!

    "C# CHtmlToWord 将HTML文件转换成word文档!"这个项目提供了一个解决方案,允许开发者通过C#编程语言实现这一功能,而无需在用户计算机上安装Microsoft Word软件。下面将详细介绍这个项目的实现原理、关键技术和...

    mht2html,可以将mht文件转换成html文件

    4. **生成HTML文件**:最后,`mht2html`将处理过的所有内容组合成一个HTML文件,其中包含对分离出来的资源的引用,这样转换后的文件就可以在任何支持HTML的环境中打开和浏览了。 转换工具的使用方法通常包括命令行...

    mht转换成html工具

    转换过程通常包括解析MHT文件中的所有组件,如HTML代码、图像、CSS样式和JavaScript,然后将它们重新组合成一个或多个HTML文件,同时保留原始布局和样式。这个工具的1.0版本发布于2009年6月2日,虽然可能没有最新...

    HTML5专业级图像处理引擎

    通过FileReader对象的readAsDataURL方法,可以将图片文件转换为DataURL,这个数据URL可以直接在HTML中显示,或者作为Canvas的源图像。 此外,AlloyCrop还考虑到了性能和兼容性问题。对于大型图像,它可能会导致...

    根据DOM将html转为canvas图片格式

    这是一个JavaScript库,它可以渲染DOM到Canvas上,并提供了将HTML转换为base64编码的图片的功能。在"html2img"这个压缩包中,可能包含了这个库的实现。 4. Base64编码: Base64是一种用于将任意二进制数据编码为...

    视频转字符画gif动图和html文件.zip

    视频处理则意味着这个工具能够分析视频内容,并将其转换为静态字符图像序列,再组合成动态的GIF或HTML动画。 在压缩包内的文件中,`ffmpeg.exe`是一个强大的开源跨平台多媒体处理工具,它用于处理音频和视频文件,...

Global site tag (gtag.js) - Google Analytics