如何在pdfactivity的webview中打开pdf文件?
How to open pdf files in webview in pdfactivity?
您好,我正在开发应用程序以在 pdf 中的 webview 中打开 pdf 文件activity。我尝试通过意图打开它重定向到系统内置应用程序而不是 pdfactivity.java。
找到下面的代码,
我在我的 webview activity,
中声明了这个
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Uri uri = WebvActivity.this.getIntent().getData();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "application/pdf");
intent.putExtra(PdfActivity.EXTRA_PDFFILENAME, "url");
startActivity(intent);
return super.shouldOverrideUrlLoading(view, url);
}
我正在使用 PdfViewer.jar 库,
在 README 文本中提到使用
Intent intent = new Intent(this, WebviewActivity.class);
intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, "PATH TO PDF GOES HERE");
startActivity(intent);
如何从 webview 中的网页获取 URL 个 pdf 文件并将它们加载到 PdfActivity 中。
见下文link供您参考,
https://sourceforge.net/p/andpdf/code/HEAD/tree/tag/Beta_0_1_11/AndroidPdfViewer/activitysrc/net/sf/andpdf/
也许这篇link对你很有帮助How to display a PDF via Android web browser without "downloading" first
您可以使用 Google 文档查看器打开 pdf。
宾果!!我的问题已解决可以直接使用 BufferedInputStream
打开 pdf
我创建了两个 activity,第一个 Activity 用于在 webview 中加载所有 pdf。当用户单击 pdf 的 link 时,pdfurl
获取 url 作为字符串,将字符串传递给下一个 activity。
PdfActivity.java
final String pdfurl = view.getHitTestResult().getExtra();
Intent intent = new Intent(PdfActivity.this,PdfViewer.class);
intent.putExtra("PDFURL",pdfurl);
startActivity(intent);
第二个 Activity 是 PdfViewer,bateksc pdfviewer 从 url 加载 pdf,编辑如上
PdfViewer.java
package ak.wp.meto.activity;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.TextView;
import android.widget.Toast;
import com.github.barteksc.pdfviewer.PDFView;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import ak.wp.meto.R;
public class PdfViewer extends Activity {
private TextView txt; // You can remove if you don't want this
private PDFView pdf;
String value = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_pdf);
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
value = bundle.getString("PDFURL");
}
System.out.println("PRINT PDFVIEWER DATA" +value);
pdf = (PDFView) findViewById(R.id.pdfView); //github.barteksc
txt = findViewById(R.id.txtPdf);
String pdfUrl = value;
try{
new RetrievePdfStream().execute(pdfUrl);
}
catch (Exception e){
Toast.makeText(this, "Failed to load Url :" + e.toString(), Toast.LENGTH_SHORT).show();
}
}
class RetrievePdfStream extends AsyncTask<String, Void, InputStream> {
@Override
protected InputStream doInBackground(String... strings) {
InputStream inputStream = null;
try {
URL url = new URL(strings[0]);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
if (urlConnection.getResponseCode() == 200) {
inputStream = new BufferedInputStream(urlConnection.getInputStream());
}
} catch (IOException e) {
return null;
}
return inputStream;
}
@Override
protected void onPostExecute(InputStream inputStream) {
pdf.fromStream(inputStream).load();
}
}
}
您好,我正在开发应用程序以在 pdf 中的 webview 中打开 pdf 文件activity。我尝试通过意图打开它重定向到系统内置应用程序而不是 pdfactivity.java。 找到下面的代码, 我在我的 webview activity,
中声明了这个 private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Uri uri = WebvActivity.this.getIntent().getData();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "application/pdf");
intent.putExtra(PdfActivity.EXTRA_PDFFILENAME, "url");
startActivity(intent);
return super.shouldOverrideUrlLoading(view, url);
}
我正在使用 PdfViewer.jar 库, 在 README 文本中提到使用
Intent intent = new Intent(this, WebviewActivity.class);
intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, "PATH TO PDF GOES HERE");
startActivity(intent);
如何从 webview 中的网页获取 URL 个 pdf 文件并将它们加载到 PdfActivity 中。 见下文link供您参考, https://sourceforge.net/p/andpdf/code/HEAD/tree/tag/Beta_0_1_11/AndroidPdfViewer/activitysrc/net/sf/andpdf/
也许这篇link对你很有帮助How to display a PDF via Android web browser without "downloading" first
您可以使用 Google 文档查看器打开 pdf。
宾果!!我的问题已解决可以直接使用 BufferedInputStream
我创建了两个 activity,第一个 Activity 用于在 webview 中加载所有 pdf。当用户单击 pdf 的 link 时,pdfurl
获取 url 作为字符串,将字符串传递给下一个 activity。
PdfActivity.java
final String pdfurl = view.getHitTestResult().getExtra();
Intent intent = new Intent(PdfActivity.this,PdfViewer.class);
intent.putExtra("PDFURL",pdfurl);
startActivity(intent);
第二个 Activity 是 PdfViewer,bateksc pdfviewer 从 url 加载 pdf,编辑如上 PdfViewer.java
package ak.wp.meto.activity;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.TextView;
import android.widget.Toast;
import com.github.barteksc.pdfviewer.PDFView;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import ak.wp.meto.R;
public class PdfViewer extends Activity {
private TextView txt; // You can remove if you don't want this
private PDFView pdf;
String value = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_pdf);
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
value = bundle.getString("PDFURL");
}
System.out.println("PRINT PDFVIEWER DATA" +value);
pdf = (PDFView) findViewById(R.id.pdfView); //github.barteksc
txt = findViewById(R.id.txtPdf);
String pdfUrl = value;
try{
new RetrievePdfStream().execute(pdfUrl);
}
catch (Exception e){
Toast.makeText(this, "Failed to load Url :" + e.toString(), Toast.LENGTH_SHORT).show();
}
}
class RetrievePdfStream extends AsyncTask<String, Void, InputStream> {
@Override
protected InputStream doInBackground(String... strings) {
InputStream inputStream = null;
try {
URL url = new URL(strings[0]);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
if (urlConnection.getResponseCode() == 200) {
inputStream = new BufferedInputStream(urlConnection.getInputStream());
}
} catch (IOException e) {
return null;
}
return inputStream;
}
@Override
protected void onPostExecute(InputStream inputStream) {
pdf.fromStream(inputStream).load();
}
}
}