Lea*_*ira 5 pdf android webview
所以我试图从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;
}
Run Code Online (Sandbox Code Playgroud)
其次,我创建并显示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);
}
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所得到的:
所以我的问题是:Webview的内容太大而不适合PDF.我怎么解决这个问题?
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)兼容性.
这应该可以解决您的问题,但是如果您对实施有任何疑问,请告诉我.
小智 6
要从 webview 创建 pdf,您需要 android>kitkat -> sdk>=19
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
createWebPrintJob(webView);
} else {
}
}
});
Run Code Online (Sandbox Code Playgroud)
//// 功能:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
我在从 webview 创建图像时遇到问题:))))
| 归档时间: |
|
| 查看次数: |
8488 次 |
| 最近记录: |