我目前正在尝试为我的Android应用程序添加pdf导出功能.
这涉及到填充一个Url,将其放入WebVIEw,然后使用来自此处的改编代码将该WebVIEw的内容写入pdf:
公共位图vIEwToBitmap(查看视图){
位图位图= Bitmap.createBitmap(vIEw.getWIDth(),vIEw.getHeight(),Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
vIEw.draw(帆布);
返回位图;
}
public voID deleteRecursive(file fileOrDirectory) { if (fileOrDirectory.isDirectory()) for (file child : fileOrDirectory.Listfiles()) deleteRecursive(child); fileOrDirectory.delete();}public voID bmpTopdfMail(Bitmap bitmap) { String GVCode = String.valueOf(System.currentTimeMillis() + "_InvoiceTest"); String root = Environment.getExternalStorageDirectory().toString(); file myDir = new file(root + "/Invoices"); if (myDir.exists()) { deleteRecursive(myDir); } myDir.mkdirs(); String fname = GVCode + ".jpg"; file file = new file(myDir, fname); if (file.exists()) { deleteRecursive(file); } try { fileOutputStream out = new fileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); out.flush(); out.close(); } catch (Exception e) { e.printstacktrace(); } document document = new document(); String input = Environment.getExternalStorageDirectory().toString() + "/Invoices/" + GVCode + ".jpg"; String output = Environment.getExternalStorageDirectory().toString() + "/Invoices/" + GVCode + ".pdf"; String stringPrintDirectory = Environment.getExternalStorageDirectory().toString() + "/Invoices/"; file myDirpdf = new file(stringPrintDirectory); if (!myDirpdf.exists()) { myDirpdf.mkdirs(); } try { fileOutputStream fos = new fileOutputStream(output); pdfWriter writer = pdfWriter.getInstance(document, fos); writer.open(); document.open(); Image img = Image.getInstance(input); document.setPageSize(img); document.newPage(); img.setabsoluteposition(0, 0); document.add(img); document.close(); writer.close(); } catch (Exception e) { e.printstacktrace(); }}
如何从WebVIEw创建pdf(隐藏部分)?
但是,当生成pdf时,我只会得到
WebVIEw,因此屏幕外的信息已被切断.
如何在WebVIEw中获取整个内容(可见部分)(可见或不可见部分)以从我的AndroID应用程序中导出pdf文件…?
解决方法:
成功加载页面后,尝试使用此方法获取位图.
public Bitmap vIEwToBitmap(WebVIEw v) { Picture picture = v.capturePicture(); Bitmap b = Bitmap.createBitmap( picture.getWIDth(), picture.getHeight(), Bitmap.Config.ARGB_8888); Canvas c = new Canvas( b ); picture.draw( c ); return b;}
由于在API级别19中不赞成使用capturePicture(),因此请使用
public Bitmap vIEwToBitmap(WebVIEw v) { float scale = v.getScale(); // Used to capture whole the content int webVIEwHeight = (int)(v.getContentHeight() * scale); Bitmap image = Bitmap.createBitmap(v.getWIDth(), webVIEwHeight, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(image); v.draw(canvas); return image;}
使用位图生成pdf.在此之前,请尝试查看位图,以确保pdf生成代码是否有问题或什么!!?
总结以上是内存溢出为你收集整理的java-如何获取Web View的全部内容以在Android中生成PDF文件?全部内容,希望文章能够帮你解决java-如何获取Web View的全部内容以在Android中生成PDF文件?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)