Java HTML文件在本地将其转换为图像文件

Java HTML文件在本地将其转换为图像文件,java,Java,我有一个a.html文件,其中包含一个表,我想将其转换并保存为本地图像 可能吗 为了将其保存为图像,我尝试了以下方法: ImageIO.write(image, "png", new File("image.png")); 但它是用于联机html页面的。您可以通过组合使用命令行程序来实现这一点: wkhtmltopdf将HTML文件转换为PDF文件 convert(来自ImageMagick)将PDF转换为PNG(或其他图像文件格式) 这是一个使用java提供的Swigs的程序 public

我有一个
a.html
文件,其中包含一个表,我想将其转换并保存为本地图像

可能吗

为了将其保存为图像,我尝试了以下方法:

ImageIO.write(image, "png", new File("image.png"));

但它是用于联机html页面的。

您可以通过组合使用命令行程序来实现这一点:

  • wkhtmltopdf
    将HTML文件转换为PDF文件
  • convert
    (来自ImageMagick)将PDF转换为PNG(或其他图像文件格式)

    • 这是一个使用java提供的
      Swigs
      的程序

      public class MyClass {
      
          public static void main(String[] args) throws IOException {
              URL url = MyClass.class.getResource("myhtml.html");
              Dimension size = new Dimension(200, 200);
              Image img = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
              JFrame frame = new JFrame();
              frame.setUndecorated(true);
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              JEditorPane pane = new JEditorPane(url) {
                  @Override
                  protected void paintComponent(Graphics g) {
                      super.paintComponent(g);
                  }
              };
              frame.setSize(size);
              frame.add(pane);
              frame.setVisible(true);
              Graphics g = img.getGraphics();
              pane.paintAll(g);
              ImageIO.write((RenderedImage) img, "jpg", new FileOutputStream("myimg.jpg"));
              frame.setVisible(false);
              frame.dispose();
          }
      }
      
      但它将显示一个闪光灯(未装饰的画面一秒钟)。
      下面是我使用的示例:
      myhtml.html:

      <table border="1">
          <tr><td>one</td><td>two</td><td>three</td></tr>
          <tr><td>four</td><td>five</td><td>six</td></tr>
          <tr><td>seven</td><td>eight</td><td>nine</td></tr>
      </table>
      
      
      一二三
      fourfivesix
      七九
      


      我承认这不是一个有效的方法。但是它是通过java提供的标准gui来完成的,您可以将HTML文件加载到WebView中,并按语法进行屏幕截图,然后将该屏幕截图保存到文件中。您可以将该代码段中的URL替换为本地文件

       import java.io.FileOutputStream;
       import android.app.Activity;
       import android.graphics.Bitmap;
       import android.graphics.Canvas;
       import android.graphics.Picture;
       import android.os.Bundle;
       import android.view.Menu;
       import android.webkit.WebView;
       import android.webkit.WebViewClient;
      
        public class MainActivity extends Activity {
           WebView w ;
      
           @Override
           public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              w = new WebView(this);
              w.setWebViewClient(new WebViewClient(){
                 public void onPageFinished(WebView view, String url){
                      Picture picture = view.capturePicture();
                      Bitmap  b = Bitmap.createBitmap( picture.getWidth(),
                      picture.getHeight(), Bitmap.Config.ARGB_8888);
                      Canvas c = new Canvas(b);
                      picture.draw(c);
                      FileOutputStream fos = null;
                      try {
                          fos = new FileOutputStream("mnt/sdcard/yahoo.jpg");
                          if(fos != null){
                             b.compress(Bitmap.CompressFormat.JPEG, 100, fos);
                             fos.close();
                          }
                      }catch(Exception e){}
                  }
              });
              setContentView(w);
              w.loadUrl("http://search.yahoo.com/search?p=android");
          }
      
         @Override
         public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.activity_main, menu);
            return true;
         }
      

      所以您想将表另存为图像??您可以操作dom并生成图像html文件的内容是一个表,但我要读取的文件是html扩展名,我想将其转换为图像谢谢您的回答。因为我是Java新手,所以我以前从未使用过wkhtmltopdf。据我所知,我必须使用类似ProcessBuilder pb=newProcessBuilder的东西(“wkhtmltopf.exe”,htmlFilePath,pdfFilePath);但是在那之后我应该逐行阅读文件吗?如果可能的话,你能给我举个例子吗?@Saraballiuk no这将为你的html文件生成一个pdf。然后使用ImageMagick将该pdf转换为图像文件。你不需要逐行阅读