繁体   English   中英

android,WebView应用程序/ pdf〜空白显示

[英]android, WebView application/pdf ~ Blank Display

我正在尝试在Android上使用WebView显示PDF。 通过API下载PDF数据,然后将其封装在意图中:

    WebView webView = (WebView) findViewById(R.id.webView);
    Log.d("DEV", bIntent.getString("Data"));
    webView.loadData(bIntent.getString("Data"), "application/pdf", "UTF-8");

除了在iOS上实现正常外,我的设置完全相同。 LogCat输出(请参阅下文)确实提供了信息,但是通读它不会提示或提示我任何问题或错误。

D/JSENGINE﹕ qualcomm.jsengine.version:C.2-patch35-git:7b7ad6f
D/HostStatisticManager﹕ netstack: DNS Host Prioritization is: ON, Version: 5.0.1
I/﹕ netstack: LIB_MGR - Lib loaded: libdnshostprio.so
I/﹕ netstack: STAT_HUB - Succeeded to load plugin: libdnshostprio.so
E/﹕ netstack: LIB_MGR - Error loading lib spl_proc_plugin.so
E/﹕ netstack: STAT_HUB - Failed to load plugin: spl_proc_plugin.so
I/﹕ netstack: LIB_MGR - Lib loaded: pp_proc_plugin.so
I/﹕ netstack: STAT_HUB - Succeeded to load plugin: pp_proc_plugin.so
E/﹕ netstack:  STAT_HUB - App com.company.simonaddicott.controlpanel_1 isn't supported
V/chromium_net﹕ external/chromium/net/host_resolver_helper/host_resolver_helper.cc:66: [0512/144513:INFO:host_resolver_helper.cc(66)] DNSPreResolver::Init got hostprovider:0x5f7d700c
V/chromium_net﹕ external/chromium/net/base/host_resolver_impl.cc:1510: [0512/144513:INFO:host_resolver_impl.cc(1510)] HostResolverImpl::SetPreresolver preresolver:0x5f6499f0
D/﹕ external/chromium/net/socket/tcp_fin_aggregation_factory.cc: libtcpfinaggr.so successfully loaded
D/﹕ external/chromium/net/socket/tcp_fin_aggregation_factory.cc,: TCP Fin Aggregation initializing method was found in libtcpfinaggr.so
I/QCNEA﹕ |CAC| CAS is enabled
I/QCNEA﹕ |CAC| [CNE CLIENT STATE MACHINE] transition NOT_CONNECTED_NOT_ATTEMPTED -> CONNECTING
D/QCNEA﹕ |CAC| Connected to server socket: 81
I/QCNEA﹕ |CAC| [CNE CLIENT STATE MACHINE] transition CONNECTING -> CONNECTED_PENDING_PERM_RESPONSE
D/QCNEA﹕ |CAC| In monitor thread, performing select
D/TCPFinAggregation﹕ netstack: TCPFinAggregation is 1, Version 5.0.1
D/TCPFinAggregation﹕ system property net.tcp.fin.aggregation.wait was set, value: 20
D/TCPFinAggregation﹕ system property net.tcp.fin.aggregation.close was set, value: 300
D/TCPFinAggregation﹕ netstack: CloseUnusedSockets is ON, (TCPFinAggregation), Version 5.0.1
D/QCNEA﹕ |CAC| readCallback: read len:12, ret:0, errno:0
I/QCNEA﹕ |CAC| [CNE CLIENT STATE MACHINE] transition CONNECTED_PENDING_PERM_RESPONSE -> NOT_CONNECTED_ACCESS_DENIED
I/QCNEA﹕ |CAC| client permission denied.
D/QCNEA﹕ |CAC| readCallback: read len:0, ret:0, errno:0
E/QCNEA﹕ |CAC| readCallback: end of stream
V/QCNEA﹕ |CAC| Dispatching Latency Service Status Update [status:SERVICE_STOPPED]
V/QCNEA﹕ |CAC| Dispatching Bitrate Service Status Update [status:SERVICE_STOPPED] V/QCNEA﹕ |CAC| Clients reset
D/QCNEA﹕ |CAC| Monitor loop is terminating
D/TCPFinAggregation﹕ Failed to get network status! received ret: -6
D/Socket_Pool﹕ netstack: CloseUnusedSockets is ON
D/Socket_Pool﹕ netstack: system net.statistics value: 0
D/Socket_Pool﹕ netstack: CloseUnusedSockets is ON
D/Socket_Pool﹕ netstack: system net.statistics value: 0
D/﹕ external/chromium/net/http/http_getzip_factory.cc: libgetzip.so successfully loaded
D/﹕ external/chromium/net/http/http_getzip_factory.cc,: GETzip initializing method was found in libgetzip.so
D/netstack﹕ netstack: Request Priority is ON
D/﹕ netstack: Getzip is: ON, Version: 5.0.1
D/TilesManager﹕ Starting TG #0, 0x5f7d0170
D/TilesManager﹕ new EGLContext from framework: 5e7a9fd0
D/GLWebViewState﹕ Reinit shader
D/GLWebViewState﹕ Reinit transferQueue 

如果可能出现问题,我还将附加XML,但是不太可能

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.company.simonaddicott.controlpanel_1.PDFView">

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

我正在尝试在Android上使用WebView显示PDF

WebView不会WebView显示PDF文件。 充其量,它可以在某些第三方JavaScript(pdf.js)或网站(Google Docs)的帮助下实现。 还有许多用于渲染PDF的第三方库,它们可能或可能不会使用WebView

而且,PDF文件不是字符串,而是二进制格式,因此loadData()在任何情况下均不起作用。

最终解决方案

Lollipop现在提供了一个用于读取PDF文件的本机库 ,但是使用> API 21的任何人都无济于事。

此处找到的解决方案是利用mozilla的JS pdfviewer,并将webview指向该视图。

http://mozilla.github.io/pdf.js

WebView webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://mozilla.github.io/pdf.js/web/viewer.html");

大多数其他解决方案都涉及Google Docs作为查看PDF的代理。 由于所讨论的PDF数据的数据保护/敏感性,因此此解决方案在此处不合适。

使用JS pdf查看器,可以安装服务器端并继续直接将PDF提供给应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM