基本的な目的は、後で電子メールに添付されたPDFレポートを生成して、PDFが表示されていなくても、ユーザーが送信したときに自動的に送信します(私はこの側のメールガンを使用しています)印刷ダイアログが表示されます。非表示WebView to PDF - 結果は空白ですか?
これは私がこれまでに持っていたコードで、空のPDFを生成します。私はこれを商用で使用しているので、iTextなどのライブラリを使用することはできません。
WebView web = new WebView(c); // c is context, provided when method called
web.loadDataWithBaseURL("file:///android_asset/", pdfTemplate, "text/html", "UTF-8", "");
PrintAttributes.Builder b = new PrintAttributes.Builder()
.setColorMode(PrintAttributes.COLOR_MODE_COLOR)
.setMediaSize(PrintAttributes.MediaSize.ISO_A4)
.setMinMargins(PrintAttributes.Margins.NO_MARGINS)
.setResolution(new PrintAttributes.Resolution("1", "label", 300, 300));
PrintedPdfDocument doco = new PrintedPdfDocument(c, b.build());
PdfDocument.Page p = doco.startPage(1);
web.draw(p.getCanvas());
doco.finishPage(p);
何も表示せずにこの作業を行うにはどうすればよいですか?
「私はこれを使用していますので、商用では、iTextなどのライブラリを使用することができません」 - iTextは[商用ライセンス](https://itextpdf.com/Pricing)を提供しています。主要な検索エンジンで 'android library generate pdf'を検索すると、他のさまざまなライブラリやサービスが表示されます。あなたの問題に関しては、 'WebView'はその内容をバックグラウンドスレッドにロードします(あなたは早すぎて印刷しようとしています)。さらに、あなたの場合、HTMLをパッケージ化してPDFを生成するのではなく、単にPDFファイルをアセットにパッケージ化する方がはるかに簡単です。 – CommonsWare
私はあなたの点を取っていますが、有料の商用ライセンスを使用する立場にない理由はさまざまです。 WebViewがロードされてからPDFコードがトリガーされるのを待つ方法はありますか? アセットでPDFをパッケージ化する場合、コンテンツの編集についてはどうすればよいでしょうか?PDFコンテンツは、以前はstring.replaceを使用していたアプリケーションのデータが入力されるたびに変わりますのプレースホルダを置き換える。 – markeh21
"WebViewがロードされてからPDFコードがトリガーされるのを待つ方法はありますか?" - あなたのHTMLに応じて、[この回答](https://stackoverflow.com/a/46525763/115145)で概説されている 'WebViewClient'アプローチがうまくいくはずです。これは意図的に非同期作業(AJAXなど)を処理しません。 「コンテンツを編集するにはどうすればいいですか」 - ごめんなさい、あなたの質問のコードを誤解しました。 – CommonsWare