Я работаю над приложением (Android 4.4 - API 20), где я создаю отчет в формате HTML. Я использую объект WebView для отображения отчета в своем приложении.
То, что я хотел бы сделать, - это преобразовать этот WebView в pdf-документ.
Я смог преобразовать его с помощью PdfDocument и сделать .draw на странице из объекта WebView. Я сохраняю файл, и это работает, за исключением того, что результатом является документ с одной страницей. Разрывов страниц нет.
View content = (View) webView;
PrintAttributes pdfPrintAttrs = new PrintAttributes.Builder().
setColorMode(PrintAttributes.COLOR_MODE_MONOCHROME).
setMediaSize(PrintAttributes.MediaSize.NA_LETTER.asLandscape()).
setResolution(new Resolution("zooey", PRINT_SERVICE, 300, 300)).
setMinMargins(PrintAttributes.Margins.NO_MARGINS).
build();
PdfDocument document = new PrintedPdfDocument(mContext,pdfPrintAttrs);
PageInfo pageInfo = new PageInfo.Builder(webView.getMeasuredWidth(), webView.getContentHeight(), 1).create();
Page page = document.startPage(pageInfo);
content.draw(page.getCanvas());
document.finishPage(page);
Если я изменю его так, чтобы я использовал PrintedPdfDocumet и не указывал, что PageInfo я получаю только видимую часть объекта WebView.
View content = (View) webView;
PrintAttributes pdfPrintAttrs = new PrintAttributes.Builder().
setColorMode(PrintAttributes.COLOR_MODE_MONOCHROME).
setMediaSize(PrintAttributes.MediaSize.NA_LETTER.asLandscape()).
setResolution(new Resolution("zooey", PRINT_SERVICE, 300, 300)).
setMinMargins(PrintAttributes.Margins.NO_MARGINS).
build();
PrintedPdfDocument document = new PrintedPdfDocument(mContext,pdfPrintAttrs);
Page page = document.startPage(0);
content.draw(page.getCanvas());
document.finishPage(page);
Если я использую PrintManager и создаю адаптер печати из объекта WebView с помощью createPrintDocumentAdapter, я могу выбрать опцию "Сохранить как PDF", а полученный файл PDF имеет разрывы страниц, как я указываю в CSS исходной веб-страницы.
PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter();
String jobName = getString(R.string.app_name) + " Report "
+ reportName;
PrintAttributes printAttrs = new PrintAttributes.Builder().
setColorMode(PrintAttributes.COLOR_MODE_MONOCHROME).
setMediaSize(PrintAttributes.MediaSize.NA_LETTER.asLandscape()).
setMinMargins(PrintAttributes.Margins.NO_MARGINS).
build();
PrintJob printJob = printManager.print(jobName, printAdapter,
printAttrs);
Мой вопрос: могу ли я указать, что я хочу, чтобы PrintManager выполнял "Сохранить как PDF" и укажите имя и расположение результирующего файла, чтобы не было взаимодействия с пользователем?
Или: Есть ли способ преобразовать объект WebView в PDF и разрешить разрывы страниц.