0

HTMLファイルがあり、 WebViewPdfDocumentを使用してPDFバージョンに変換しようとしています。

私がやろうとしたこと:

  1. HTMLをレイアウトで表示 - これは問題なく動作します。
    private fun createDocument(uri: Uri) {
        val document = PdfDocument()
        val pageInfo = PageInfo.Builder(595, 842, 1).create()
        val page = document.startPage(pageInfo)
        val rect = Rect()
        rect.set(0, 0, 595, 842)

        val view = TextView(this)
        view.text = "ANY TEXT"

        // formatting output
        view.setBackgroundColor(getColor(R.color.colorAccent))
        val widthSpec = View.MeasureSpec.makeMeasureSpec(rect.width(), View.MeasureSpec.EXACTLY)
        val heightSpec = View.MeasureSpec.makeMeasureSpec(rect.height(), View.MeasureSpec.EXACTLY)
        view.measure(widthSpec, heightSpec)
        view.layout(0, 0, rect.width(), rect.height())
        view.draw(page.canvas)
        document.finishPage(page)
        try {
            contentResolver.openFileDescriptor(uri, "w")?.use {
                FileOutputStream(it.fileDescriptor).use {
                    document.writeTo(it);
                    document.close();
                }
            }
        } catch...
  1. 次に、 TextViewPDFに出力してみました- これも問題なく動作します。
setContentView(R.layout.activity_show)

val towebView = findViewById<WebView>(R.id.webView)
towebView.webViewClient = object : WebViewClient() {
   override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
       view?.loadUrl(url)
       return true
   }
}
towebView.loadUrl("file:///android_asset/protokol.html")
  1. 次に、ポイント1と2を組み合わせてみました。ただし、これにより空白のPDFが得られます:
    private fun createDocument(uri: Uri) {
        val document = PdfDocument()
        val pageInfo = PageInfo.Builder(595, 842, 1).create()
        val page = document.startPage(pageInfo)
        val rect = Rect()
        rect.set(0, 0, 595, 842)

        val view = WebView(this)
        view.webViewClient = object : WebViewClient() {
            override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
                view?.loadUrl(url)
                return true
            }
        }
        view.loadUrl("file:///android_asset/protokol.html")

      //formatting output
...

私が持っている唯一の変更は背景色です。

このコードの何が問題なのかについてのアイデアはありますか?

4

1 に答える 1