Итак, я пытаюсь создать PDF-файл из Webview. Прямо сейчас я могу создать изображение из webview, но у меня возникли проблемы с разложением документа на многих страницах.Создайте PDF из Webview на Android
Во-первых, создать Bitmap из WebView:
public static Bitmap screenShot(View view) {
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(),
view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
view.draw(canvas);
return bitmap;
}
Во-вторых, я создаю и показываю PDF:
public void criaPdf(){
Bitmap bitmap = Utils.screenShot(mContratoWebview);
Document doc = new Document();
File dir = new File(getFilesDir(), "app_imageDir");
if(!dir.exists()) {
dir.mkdirs();
}
File file = new File(dir, "contratoPdf.pdf");
try {
FileOutputStream fOut = new FileOutputStream(file);
PdfWriter.getInstance(doc, fOut);
//open the document
doc.open();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
Image image = Image.getInstance(byteArray);
image.scaleToFit(PageSize.A4.getHeight(), PageSize.A4.getWidth());
doc.newPage();
doc.add(image);
} catch (DocumentException de) {
Log.e("PDFCreator", "DocumentException:" + de);
} catch (IOException e) {
Log.e("PDFCreator", "ioException:" + e);
}
finally {
doc.close();
}
mPdfView.fromFile(file)
.pages(0, 1) // all pages are displayed by default
.enableSwipe(true)
.load();
mPdfView.setVisibility(View.VISIBLE);
}
Это то, что я до сих пор:
Моя проблема: Содержимое Webview слишком велик, чтобы вписаться в PDF. Как я могу это решить?
Я пытаюсь использовать код, упомянутый в ссылке http://www.annalytics.co.uk/android/pdf/2017/04/06/Save-PDF-From-An-Android-WebView/ но когда я создаю класс PdfPrint, он дает ошибку, что PrintDocumentAdapter.WriteResultCallback не является t public и не могут быть доступны из внешнего пакета. –
Мне нужно создать пакет android.print –
Когда я создаю документ, его размер равен 0 байт –