You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何在WebView打开PDF链接并直接打印不保存至设备

Android WebView直接打印在线PDF实现方案

1. 配置WebView基础设置

初始化WebView并开启必要设置,保证PDF能正常渲染:

WebView webView = findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true); // 部分PDF渲染依赖JS
webSettings.setAllowFileAccess(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setDisplayZoomControls(false);

2. 加载目标PDF链接

设置WebViewClient确保PDF在WebView内打开,并在页面加载完成后触发打印:

webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        view.loadUrl(request.getUrl().toString());
        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        // 页面加载完成后执行打印
        printWebViewContent(view);
    }
});

// 加载指定PDF链接
webView.loadUrl("https://www.adobe.com/support/products/enterprise/knowledgecenter/media/c4611_sample_explain.pdf");

3. 实现WebView内容打印逻辑

借助Android系统PrintManager发起打印请求,直接打印WebView渲染后的PDF内容:

private void printWebViewContent(WebView webView) {
    PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
    String jobName = getString(R.string.app_name) + " - PDF打印";

    // 创建WebView打印文档适配器
    PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter(jobName);

    // 发起打印任务
    printManager.print(jobName, printAdapter, new PrintAttributes.Builder().build());
}

4. 权限与注意事项

  • 需在AndroidManifest.xml中添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
  • 该方案支持Android 4.4(API 19)及以上版本,系统从该版本开始正式支持WebView打印功能
  • 若部分设备原生WebView不支持PDF渲染,可改用Google Docs在线渲染链接(格式:https://docs.google.com/gview?embedded=true&url=你的PDF链接)加载后再打印,或引入第三方PDF渲染库(如MuPDF)优化兼容性

内容的提问来源于stack exchange,提问作者XamarinInfo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:41:39