要从WebView中打印或将HTML文档转换为PDF,可以使用以下步骤:
implementation 'androidx.webkit:webkit:1.4.0'
WebView webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true); //启用JavaScript(如果需要)
webView.getSettings().setAllowFileAccessFromFileURLs(true); //允许加载本地文件
webView.getSettings().setAllowUniversalAccessFromFileURLs(true); //允许加载通用资源
webView.setWebViewClient(new WebViewClient());
webView.setWebChromeClient(new WebChromeClient());
webView.loadUrl("https://example.com/document.html");
或者,如果要加载本地HTML文件,可以使用以下代码:
webView.loadUrl("file:///android_asset/document.html");
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_print:
PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter();
String jobName = getString(R.string.app_name) + " Document";
printManager.print(jobName, printAdapter, new PrintAttributes.Builder().build());
return true;
case R.id.menu_export_pdf:
PdfPrint pdfPrint = new PdfPrint.Builder()
.setContext(this)
.setWebView(webView)
.setFilePath("/sdcard/document.pdf")
.build();
pdfPrint.print();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
请注意,上述代码中的"menu_export_pdf"菜单项将HTML文档导出为PDF,并将其保存在设备的/sdcard目录下。您可以根据自己的需求更改文件路径。
这是一个基本的示例,您可以根据自己的情况进行修改和扩展。