[英]How to create PDF from webview in android?
我正在webview
顯示webpage
。 現在如何從webview創建PDF ?
例如:webview加載URL為"www.google.co.in"
。 現在如何將此網頁保存為圖像並創建pdf?
任何幫助,將不勝感激
試試這樣吧
WebView具有名為setPictureListener
內置方法使用該方法如下所示
webView1.setPictureListener(new PictureListener() {
public void onNewPicture(WebView view, Picture picture) {
if (picture != null) {
try {
bmp = pictureDrawable2Bitmap(new PictureDrawable(
picture));
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
為了獲得位圖,我使用了pictureDrawable2Bitmap
,這是一個
private static Bitmap pictureDrawable2Bitmap(PictureDrawable pictureDrawable) {
Bitmap bitmap = Bitmap.createBitmap(
pictureDrawable.getIntrinsicWidth(),
pictureDrawable.getIntrinsicHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawPicture(pictureDrawable.getPicture());
return bitmap;
}
現在您的位圖已准備就緒,現在將webview客戶端設置如下
webView1.setWebViewClient(new myWebClient());
這是myWebClient
public class myWebClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
Log.i("OnPageLoadFinished", url);
img.setImageBitmap(bmp);
}
如頁面加載完成所示,我已經設置了圖像位圖,它是webview上當前加載的URL的快照
現在,Bitmap已准備好使用IText Library將該位圖傳遞給Pdf
下面是在iText上使用下面的函數編寫帶有圖像的pdf的示例
public void SimplePDFTable() throws Exception {
File direct = new File(Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/AamirPDF");
if (!direct.exists()) {
if (direct.mkdir()) {
Toast.makeText(MainActivity.this,
"Folder Is created in sd card", Toast.LENGTH_SHORT)
.show();
}
}
String test = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/AamirPDF";
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(test
+ "/mypdf.pdf"));
document.open();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
Image image = Image.getInstance(byteArray);
image.scaleToFit(PageSize.A4.getHeight(), PageSize.A4.getWidth());
document.add(image);
document.close();
}
祝好運
從API 19(KitKat)開始,Android現在允許您直接打印webview 。 此外,相同的PrintManager API可用於從WebView生成PDF而無需任何外部庫。
如示例代碼所示,只需獲取PrintManager ,從相關的WebView創建PrintDocumentAdapter ,然后創建一個新的PrintJob ,您的用戶應該看到將其保存為PDF文件或打印到雲打印機的選項。 在比4.4更新的Androids上,他們還可以直觀地預覽將要打印/ PDF的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.