簡體   English   中英

Pdf 渲染器 API Android 來自 URL

[英]Pdf Renderer API Android From URL

我正在研究PDF 渲染器 API原生於 Google Android 開發。 我在文檔中看到以下代碼示例:

 // 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();

我認為這個例子使用的是文件 Object。我如何才能讓這個 API 與來自網絡服務器的 URL 一起工作,例如來自網站的文檔? 如何在不需要將文件下載到本地存儲的 Android 應用程序中本地加載 PDF? 類似於如何運行 Google 文檔查看器以在 webview 中打開 PDF - 但我不能采用這種方法,因為 Google 文檔查看器在我所在的環境中被阻止。

我如何才能使用此API來處理來自網絡服務器的URL?

將PDF從服務器下載到本地文件。 然后,使用本地文件。

我想學習的目的是如何在Android應用程序中本地加載pdf,不需要將文件下載到本地存儲

AFAIK,你不能用那種方式使用PdfRenderer 它需要一個可搜索的FileDescriptor ,而我知道創建其中一個的唯一方法是使用本地文件。

您無法使用Pdf渲染器加載URL。 但您可以在網頁瀏覽中使用Google文檔加載網址而無需下載文件...

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()
                        }

                    }

這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM