所以我试图从Webview创建一个PDF。现在我可以从webview创建一个图像,但是我在一些页面中分割文档时遇到了一些问题。
首先,我从webview创建一个Bitmap:
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中。我该如何解决这个问题?
答案 0 :(得分:6)
WebView具有生成PDF的内置功能,可通过使用PrintManager服务专门用于打印。但是对于您的特定用例,我建议您编写(存储)WebView的PrintAdapter的最终输出,这是一个PDF文件到本地文件并从那里开始。
此链接将引导您完成详细信息和实施。 http://www.annalytics.co.uk/android/pdf/2017/04/06/Save-PDF-From-An-Android-WebView/
您可以通过上述解决方案的小调整实现API级别19(KitKat)兼容性。
这可以解决您的问题,但是如果您遇到任何实施问题,请告诉我。
答案 1 :(得分:4)
从webview创建pdf你需要android> kitkat - > SDK> = 19
private void createWebPrintJob(WebView webView) {
PrintManager printManager = (PrintManager) this
.getSystemService(Context.PRINT_SERVICE);
PrintDocumentAdapter printAdapter =
webView.createPrintDocumentAdapter();
String jobName = getString(R.string.app_name) + " Print Test";
if (printManager != null) {
printManager.print(jobName, printAdapter,
new PrintAttributes.Builder().build());
}
}
////功能:
distances.sort(key=lambda x: x[1])
我在使用webview创建图片时遇到问题:))))