来源官网,总结用.
WebView类在Android 4.4(API Level 19)中得到了更新,使得它可以打印HTML内容。该类允许我们加载一个本地HTML资源或者从网页下载一个页面,创建一个打印任务,并把它交给Android打印服务。
1.[代码]如何构建一个HTML的字符串并将它加载到WebView中
private WebView mWebView;
private void doWebViewPrint() {
// Create a WebView object specifically for printing
WebView webView = new WebView(getActivity());
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
Log.i(TAG, "page finished loading " + url);
createWebPrintJob(view);
mWebView = null;
}
});
// Generate an HTML document on the fly:
String htmlDocument = "
Test Content
Testing, " +
"testing, testing...
";webView.loadDataWithBaseURL(null, htmlDocument, "text/HTML", "UTF-8", null);
// Keep a reference to WebView object until you pass the PrintDocumentAdapter
// to the PrintManager
mWebView = webView;
}
/**
*Note: 请确保在WebViewClient)中的onPageFinished()方法内调用创建打印任务的方法。
如果没有等到页面加载完毕就进行打印,打印的输出可能会不完整或空白,甚至可能会失败。
Note:在上面的样例代码中,保留了一个WebView对象实例的引用,
这样能够确保它不会在打印任务创建之前就被垃圾回收器所回收。
在编写代码时请务必这样做,否则打印的进程可能会无法继续执行。
*/
2.[代码]创建一个打印任务
/**
在创建了WebView并加载了我们的HTML内容之后,应用就已经几乎完成了属于它的任务。
接下来,我们需要访问PrintManager,创建一个打印适配器,并在最后创建一个打印任务。*/
private void createWebPrintJob(WebView webView) {
// Get a PrintManager instance
PrintManager printManager = (PrintManager) getActivity()
.getSystemService(Context.PRINT_SERVICE);
// Get a print adapter instance
PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter();
// Create a print job with name and adapter instance
String jobName = getString(R.string.app_name) + " Document";
PrintJob printJob = printManager.print(jobName, printAdapter,
new PrintAttributes.Builder().build());
// Save the job object for later status checking
mPrintJobs.add(printJob);
}