在应用程序中显示带有网页的 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 限制可以出现在页面的 元素中的 URL。删除 https 仅使用 http【参考方案4】:

您需要将 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的主要内容,如果未能解决你的问题,请参考以下文章

网页显示PDF文件,拒绝访问

在 Swift 中从 HTML 生成带有图像的 PDF 而不显示打印界面

我的网页上显示,载入PDF时信息错误。该怎么解决

如何在网页中显示PDF文件

如何在网页中显示PDF文件

如何在没有下载的情况下在离子应用程序中显示pdf文件