我想在 android 上的新活动中显示 PDF,我正在使用 webview,我有一个纯 PHP 网页,当我在 INPUT 中输入代码并按下按钮时,会打开一个新页面,其中包含创建的 PDF 文件并根据输入的代码
输入 + 按钮
新的 PDF 页面
我在安卓上有这些权限
webSetting.setJavaScriptEnabled(true);
webSetting.setDisplayZoomControls(true);
htmlWebView.getSettings().setJavaScriptEnabled(true);
htmlWebView.getSettings().setDomStorageEnabled(true);
htmlWebView.getSettings().setDatabaseEnabled(true);
htmlWebView.getSettings().setMinimumFontSize(1);
htmlWebView.getSettings().setMinimumLogicalFontSize(1);
我知道安卓不能在同一个网页视图中显示PDF(
我做了以下操作,按下网络上的按钮并开始下载已经创建的 PDF,而无需打开页面:
header("Content-Type: application/octet-stream");
$file = $_GET["file"] .".pdf";
header("Content-Disposition: attachment; filename=" . urlencode($file));
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header("Content-Length: " . filesize($file));
flush(); // this doesn't really matter.
$fp = fopen($file, "r");
while (!feof($fp))
{
echo fread($fp, 65536);
}
fclose($fp);
但它仍然不起作用,我使用以下代码下载其他文件而不打开它们,直接下载。.
htmlWebView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) {
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setMimeType(mimeType);
String cookies = CookieManager.getInstance().getCookie(url);
request.addRequestHeader("cookie", cookies);
request.addRequestHeader("User-Agent", userAgent);
request.setDescription("Downloading PDF...");
request.setTitle(URLUtil.guessFileName(url, contentDisposition, mimeType));
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalFilesDir(MainActivity.this, Environment.DIRECTORY_DOWNLOADS,".pdf");
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
dm.enqueue(request);
Toast.makeText(getApplicationContext(), "Downloading PDF...",
Toast.LENGTH_LONG).show();
}});
还有一些我不知道的其他技术,因为我研究了几天,我找不到任何东西..
您可以使用 Google 文档查看器在线阅读您的 pdf:
WebView webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
String pdf = "http://www.adobe.com/devnet/acrobat/pdfs/pdf_open_parameters.pdf";
webview.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf);