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页面的。您可以通过组合使用命令行程序来实现这一点:
将HTML文件转换为PDF文件wkhtmltopdf
(来自ImageMagick)将PDF转换为PNG(或其他图像文件格式)convert
- 这是一个使用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转换为图像文件。你不需要逐行阅读