Pdf Renderer API Android From URL



我正在寻找原生的Google Android开发的PDF渲染器API。我在文档中看到以下代码示例:

 // create a new renderer
 PdfRenderer renderer = new PdfRenderer(getSeekableFileDescriptor());
 // let us just render all pages
 final int pageCount = renderer.getPageCount();
 for (int i = 0; i < pageCount; i++) {
 Page page = renderer.openPage(i);
 // say we render for showing on the screen
 page.render(mBitmap, null, null, Page.RENDER_MODE_FOR_DISPLAY);
 // do stuff with the bitmap
 // close the page
 page.close();
 }
 // close the renderer
 renderer.close();

我认为这个例子使用了from File Object。我怎么能得到这个API的工作与一个URL从一个web服务器,如从一个网站的文档?如何在Android应用程序中加载PDF,而不需要将文件下载到本地存储?就像你可以运行Google docs查看器在webview中打开PDF一样,但是我不能采用这种方法,因为Google docs查看器在我所处的环境中被阻塞了。

我怎么能得到这个API的工作与URL从一个web服务器?

从服务器下载PDF文件到本地文件。然后,使用本地文件

我想学习的目的是如何在android应用程序中本地加载pdf,而不需要将文件下载到本地存储

恐怕你不能那样使用PdfRenderer。它需要一个可搜索的FileDescriptor,我所知道的唯一方法是创建一个本地文件。

您不能使用Pdf Renderer加载URL。但是你可以在你的webview中使用Google Docs来加载URL而不需要下载文件…

webView.loadUrl("https://docs.google.com/gview?embedded=true&url=" + YOUR_URL);

我会先下载pdf然后在pdfView中显示

 private fun downloadPdf(): File? {

        val client = OkHttpClient()
        val request = Request.Builder().url(urlString)
            .addHeader("Content-Type", "application/json")
            .build()
        val response = client.newCall(request).execute()
        val inputStream: InputStream? = response.body?.byteStream()
        
        val pdfFile = File.createTempFile("myFile", ".pdf", cacheDir)
        inputStream?.readBytes()?.let { pdfFile.writeBytes(it) }
        return pdfFile

    } 

,然后像这样做:

CoroutineScope(IO).launch {
                        val pdfDownloaded = downloadPdf()
                        if (pdfDownloaded != null) {
                            pdfView.fromFile(pdfDownloaded)
                        }
                        withContext(Main) {
                            pdfView.visibility = View.VISIBLE
                            hideProgress()
                            pdfView.show()
                        }
                    }
这里的

最新更新