Monthly Archives: December 2015

直接把android webview中内容保存为jpg图片并发送给蓝牙打印机的代码片断

本来是想用android 4.4 KitKat 就开始拥有的新功能,云打印及wifi打印,但是无奈地发现HP Officejet 100这个特别强调移动特性的打印机,居然不支持。

最后采用这种办法来把html格式的表单转换为图片,当照片来用蓝牙(BlueTooth)分享发送给打印机,可以达到目标。只是这种办法,又慢,以费打印机和油墨。虽然,后来,我们决定采用著名第三方应用来实现了。但也在此记录一下曾经的过程中的测试代码吧。

Button button = (Button) findViewById(R.id.button1);
final WebView wv = new WebView(this);
String summary = “<html><body>You scored <b>192</b> points.</body></html>”;
wv.loadData(summary, “text/html”, null);

button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

Picture picture = wv.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(“/sdcard/” + “page.jpg”);
if (fos != null) {
b.compress(Bitmap.CompressFormat.JPEG, 90, fos);
fos.close();
}
} catch (Exception e) {
System.out.println(“—–error–” + e);
}

Intent sharingIntent = new Intent(Intent.ACTION_SEND);
Uri screenshotUri = Uri.parse(“file:///sdcard/page.jpg”);

sharingIntent.setType(“image/png”);
sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
startActivity(Intent.createChooser(sharingIntent, “打印”));
}
});

如果,你真确定要用这种办法来实现,还得注意,如果上面的html中有汉字,需要另外处理一下,不然,用这代码打印出来会发现中文全变乱码了。

关于乱码,可以这样处理,当然,还有其他办法 :

wv.loadData(summary, “text/html;charset=UTF-8”,null);