在应用程序中显示带有网页的 pdf
Posted
技术标签:
【中文标题】在应用程序中显示带有网页的 pdf【英文标题】:display pdf with webpage in application 【发布时间】:2018-08-15 07:17:28 【问题描述】:您好,我尝试使用 webview 显示 pdf。我正确设置了所有代码,但 pdf 没有打开。但我给了一个网页链接,效果很好。什么是我的错误我是新手对不起。
WebView wv;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_giris);
wv = (WebView) findViewById(R.id.wv);
WebSettings webSettings = wv.getSettings();
wv.setWebViewClient(new WebViewClient());
wv.getSettings().setBuiltInZoomControls(true); //zoom yapılmasına izin verir
wv.getSettings().setSupportZoom(true);
// wv.getSettings().setjavascriptEnabled(true);
wv.getSettings().setJavaScriptEnabled(true);
materialDesignFAM = (FloatingActionMenu) findViewById(R.id.social_floating_menu);
floatingActionButton1 = (FloatingActionButton) findViewById(R.id.floating_facebook);
floatingActionButton2 = (FloatingActionButton) findViewById(R.id.floating_twitter);
floatingActionButton3 = (FloatingActionButton) findViewById(R.id.floating_linkdin);
floatingActionButton4 = (FloatingActionButton) findViewById(R.id.floating_google_plus);
floatingActionButton5 = (FloatingActionButton) findViewById(R.id.floating_instagram);
floatingActionButton6 = (FloatingActionButton) findViewById(R.id.floating_youtube);
floatingActionButton1.setOnClickListener(new View.OnClickListener()
public void onClick(View v)
String fullPath = "http://aciltip.medicine.ankara.edu.tr/files/2015/09/2015_d45_acil_tip_hizmetleri.pdf";
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(fullPath));
startActivity( browserIntent);
// wv.loadUrl("https://docs.google.com/gview?embedded=true&url=http://aciltip.medicine.ankara.edu.tr/files/2015/09/2015_d45_acil_tip_hizmetleri.pdf");
// String url = "http://www.example.com";
// startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
);
floatingActionButton2.setOnClickListener(new View.OnClickListener()
public void onClick(View v)
wv.loadUrl("http://docs.google.com/viewer?embedded=true&url=http://www.ctf.edu.tr/stek/pdfs/70/7001.pdf");
wv.setWebViewClient(new WebViewClient()
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
view.loadUrl(url);
return false;
);
);
floatingActionButton3.setOnClickListener(new View.OnClickListener()
public void onClick(View v)
wv.loadUrl("http://docs.google.com/gview?embedded=true&url=http://www.ctf.edu.tr/stek/pdfs/70/7001.pdf");
);
and logcat is these:
03-07 08:50:26.577 3489-3547/com.er.ap D/EGL_emulation: eglCreateContext: 0xa3539fa0: maj 2 min 0 rcv 2 03-07 08:50:26.578 3489-3547/com.er.ap D/EGL_emulation:eglMakeCurrent:0xa3539fa0:版本 2 0 03-07 08:50:27.446 3489-3489/com.er.ap I/铬:[信息:控制台(0)] “内容安全策略指令'base-uri'已实施 在当前禁用的标志后面。 ",来源:https://accounts.google.com/o/oauth2/postmessageRelay?parent=https%3A%2F%2Fdocs.google.com&jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en_US.dLR0UQgpDEo.O%2Fm%3D__features__%2Fam%3DAQE%2Frt%3Dj%2Fd%3D1%2Frs%3DAGLTcCMdWrzahDTQIubih7dySWJqcBU_nw#rpctoken=580516055&forcesecure=1 (0)
但下面的效果很好,但它会退出我的应用程序并转到 pdf url 和我的后退按钮消失。如果有人帮我解决这个问题。这对我很有用
floatingActionButton1.setOnClickListener(new View.OnClickListener()
public void onClick(View v)
String fullPath = "https://drive.google.com/open?id=0B16f9Z9VbJmCc3RhcnRlcl9maWxl";
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(fullPath));
startActivity( browserIntent);
);
【问题讨论】:
查看***.com/a/5296125/2633909 你找到解决办法了吗? 我在那里编辑了所有代码我尝试了 3 个选项来显示 pdf,但只有第一个按钮有效,但它退出了我的应用程序并显示 pdf,但我想在我的应用程序中显示 pdf。谢谢 你有什么尝试吗?我可以加载 pdf 请查看***.com/a/49148637/2633909 【参考方案1】:试试这个,
webview = (WebView) findViewById(R.id.webView1);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("https://docs.google.com/viewer?embedded=true&url=http://www.ctf.edu.tr/stek/pdfs/70/7001.pdf");
webview.setWebViewClient(new WebViewClient()
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
view.loadUrl(url);
return false;
);
【讨论】:
我在那里编辑了所有代码我尝试了 3 个选项来显示 pdf,但只有第一个按钮有效,但它退出了我的应用程序并显示 pdf,但我想在我的应用程序中显示 pdf。谢谢【参考方案2】:请你以下代码
public class WebSample extends AppCompatActivity
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
WebView mWebview = (WebView) findViewById(R.id.web);
WebSettings webSettings = mWebview.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript
final Activity activity = this;
mWebview.setWebViewClient(new WebViewClient()
@SuppressWarnings("deprecation")
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
@TargetApi(android.os.Build.VERSION_CODES.M)
@Override
public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr)
// Redirect to deprecated method, so you can use it in all SDK versions
onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toString(), req.getUrl().toString());
);
String pdf = "http://aciltip.medicine.ankara.edu.tr/files/2015/09/2015_d45_acil_tip_hizmetleri.pdf";
mWebview.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf);
【讨论】:
谢谢,但我不能。我想还有另一个问题。所以它似乎在 uı 上工作。当我点击button1时,pdf正在工作背景页面页面顶部有一些移动,但仅此而已。不幸的是它没有打开 我的最后一个代码是工作你有什么想法可以按照我的意愿设置它,所以我编辑我的问题【参考方案3】:解决方案:-
您可以在 Google Docs Viewer 中打开 PDF,方法是将 URL 附加到:
http://docs.google.com/gview?embedded=true&url= 这将在默认浏览器或 WebView 中打开 PDF。
您可以使用这种格式。
https://docs.google.com/viewerng/viewer?url=http://yourfile.pdf
只需将http://yourfile.pdf 替换为您使用的链接即可。
【讨论】:
我刚刚使用了这些代码我的代码有什么错误?感谢您的关注。 base-uri 限制可以出现在页面的您需要将 pdf url 附加到您出错的 Google Doc Viewer 中
所以我创建了单独的变量来存储 pdf url,然后将其传递给查看器,请参阅下面的代码
floatingActionButton3.setOnClickListener(new View.OnClickListener()
public void onClick(View v)
String pdf = "http://www.ctf.edu.tr/stek/pdfs/70/7001.pdf"; //your pdf address
wv.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf); //simply append pdf address to doc viewer
);
【讨论】:
【参考方案5】:尝试启用 JavaScript。
Webview webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(pdf_url);
【讨论】:
【参考方案6】:使用此代码有帮助,您可以通过内置浏览器或 webview 两种方式下载或查看文件:-
floatingActionButton3.setOnClickListener(new View.OnClickListener()
public void onClick(View v)
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://docs.google.com/gview?embedded=true&url=http://www.ctf.edu.tr/stek/pdfs/70/7001.pdf"));
startActivity(browserIntent);
);
对于webview
:-
WebView webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
String pdf = "http://aciltip.medicine.ankara.edu.tr/files/2015/09/2015_d45_acil_tip_hizmetleri.pdf";
webview.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf);
【讨论】:
我之前试过这些代码。它工作得很好,但它不是 webview。它无法在我的应用程序中打开。所以它退出我的应用程序并转到pdf文件。你知道在我的应用程序中显示 pdf 的任何解决方案吗(不要退出我的应用程序,所以我的后退按钮必须在 uı 下方看到。)感谢您的关注 我在那里编辑了所有代码我尝试了 3 个选项来显示 pdf,但只有第一个按钮有效,但它退出了我的应用程序并显示 pdf,但我想在我的应用程序中显示 pdf。谢谢以上是关于在应用程序中显示带有网页的 pdf的主要内容,如果未能解决你的问题,请参考以下文章