Android - Zeichnen auf eine PDF-Leinwand von WebView

Ich hatte Probleme mit dem PDF-Druck unter Android. Ich versuche, HTML in WebView zu rendern, dann den WebView-Inhalt auf eine PDF-Zeichenfläche zu zeichnen und die PDF-Datei schließlich in eine Datei zu schreiben. Das Problem, das ich habe, ist, dass beim Zeichnen auf der PDF-Leinwand der Inhalt abgeschnitten wird, obwohl noch viel Leinwand übrig ist. Ich habe versucht, die Größe der Leinwand mit dem.clipRect(Rect rect, Op op) und das hat funktioniert aber nicht so gut wie ich es mir gewünscht hätte.

Ich habe auch keine Ahnung, wie ich die HTML px-Messungen zuverlässig in PDF PostScript 1 / 72th inch-Messungen umwandeln kann.

Hier ist der Code, den ich verwende:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    WebView wv = (WebView) this.findViewById(R.id.webView1);

    wv.loadUrl("file:///android_asset/temp.html");           
}

public void button1onClick(View v)
{
    //Create PDF document
    PdfDocument doc = new PdfDocument();

    //Create A4 sized PDF page
    PageInfo pageInfo = new PageInfo.Builder(595,842,1).create();

    Page page = doc.startPage(pageInfo);

    WebView wv = (WebView) this.findViewById(R.id.webView1);

    page.getCanvas().setDensity(200);

    //Draw the webview to the canvas
    wv.draw(page.getCanvas());

    doc.finishPage(page);

    try
    {
        //Create the PDF file
        File root = Environment.getExternalStorageDirectory();          
        File file = new File(root,"webview.pdf");
        FileOutputStream out = new FileOutputStream(file);
        doc.writeTo(out);
        out.close();
        doc.close();

        //Open the PDF
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.fromFile(file), "application/pdf");
        intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
        startActivity(intent);          
    }
    catch(Exception e)
    {
        throw new RuntimeException("Error generating file", e);
    }
}

rundsätzlich lädt das Programm nur die Datei "temp.html" in die Webansicht und gibt mir eine Schaltfläche, mit der ich die PDF-Datei erstellen kan

Die Datei temp.html sieht folgendermaßen aus:

<html>
<head>
    <style>
        div.border
        {
            width:600px;
            height:800px;
            border:1px solid black;
        }
    </style>
</head>
<body>
    <div class="border"></div>
</body>

Und hier ist das Ergebnis mit einem manuell hinzugefügten schwarzen Rand, um die Skala anzuzeigen:

ch würde mich sehr über einige Tipps freuen, wie HTML auf Android zuverlässig in PDF konvertiert werden kann, ohne Bibliotheken zu verwenden, für die Lizenzen für die kommerzielle Nutzung erforderlich sin

Antworten auf die Frage(4)

Ihre Antwort auf die Frage