簡體   English   中英

如何在android中從webview創建PDF?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM