私のアンドロイドアプリケーションでは、htmlコンテンツをWebViewに表示し、次にPdfDocumentを使用してpdfドキュメントを作成することで、htmlコンテンツからpdfを生成する方法を実装しました。それは完璧に(下のコードサンプル)、うまく動作しますが、画面に表示されていないhtmlコンテンツからpdfファイルを生成することが可能かどうかを知りたいですか?可視性をmPdfPreviewWebView
からGONE
に設定すると、作成されたpdfは空になります。WebViewからPDFを作成するにはどうすればいいですか?
つまり、htmlからpdfを生成する必要がありますが、htmlが表示されないように(または任意のスペースをとって)画面に表示したくありません。
備考:ライセンスのため、iTextライブラリを使用しません。
private void createPDF() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
PdfDocument pdfDocument = new PdfDocument();
PdfDocument.PageInfo pageInfo = new PdfDocument
.PageInfo.Builder(A4_WIDTH, A4_HEIGHT, 1).create();
PdfDocument.Page page = pdfDocument.startPage(pageInfo);
Canvas canvas = page.getCanvas();
int webViewWidth = mPdfPreviewWebView.getWidth();
float scale = A4_WIDTH/(float) webViewWidth;
canvas.save();
canvas.scale(scale, scale);
mPdfPreviewWebView.draw(canvas);
canvas.restore();
pdfDocument.finishPage(page);
String dir = Environment.getExternalStorageDirectory()
+ getString(R.string.three_clicks_folder);
try {
FileOutputStream fileOutputStream = null;
try {
File file = (new File(dir, "share.pdf"));
if (!file.exists()) {
file.createNewFile();
}
fileOutputStream = new FileOutputStream(file);
pdfDocument.writeTo(fileOutputStream);
pdfDocument.close();
Log.i(TAG, "PDF created");
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (fileOutputStream != null) {
fileOutputStream.close();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
しかし、私の問題は、htmlからpdfへの変換です。私の経験から、私がpdfを生成するために使用するメソッドは、 'WebView'(または' draw'メソッドが呼び出される他の 'View')が画面上で見えるときにのみ正しく生成します。私は、バックグラウンドで「何とか」HTMLにpdfに変換する方法を探しています。 –