HTML文件将其转换为本地图像文件
我有a.html
文件,其中包含一个表,我想将它转换并保存为本地图像。HTML文件将其转换为本地图像文件
可能吗?
为了将其保存为图像我尝试这样做:
ImageIO.write(image, "png", new File("image.png"));
a library to convert html to image,但它是一个在线的HTML页面。
你可以通过使用命令行程序的组合:
-
wkhtmltopdf
将你的HTML文件转换成PDF文件 -
convert
(来自ImageMagick的)变成PDF到PNG(或其他图像文件格式)
谢谢您的回答。因为我在Java中很新,所以从未使用过wkhtmltopdf。据我所知,我必须使用类似于ProcessBuilder pb = new ProcessBuilder(“wkhtmltopdf.exe”,htmlFilePath,pdfFilePath);但在此之后,我应该逐行阅读文件吗?如果有可能你能给我一个例子吗? – 2014-10-20 12:52:55
@SaraBalloiuk不会这将为您的html文件生成PDF,然后使用ImageMagick将该pdf转换为图像文件。您不需要逐行阅读 – 2014-10-20 12:55:32
这里是一个使用java提供的程序swings
。
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>
我承认这是不是做这个的有效方法。但它是由java提供的标准GUI完成的
您可以将您的HTML文件加载到WebView中,并以文本方式执行屏幕截图并将该屏幕截图保存到文件中。您可以将该片段中的网址替换为您的本地文件。
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并制作图像 – 2014-10-20 12:18:51
html文件的内容是一个表格,但是我想要读取的文件是html扩展名,我想将其转换为图像 – 2014-10-20 12:32:51