2016-12-06 2 views
0

私のアンドロイドアプリケーションでは、htmlコンテンツをWebViewに表示し、次にPdfDocumentを使用してpdfドキュメントを作成することで、htmlコンテンツからpdfを生成する方法を実装しました。それは完璧に(下のコードサンプル)、うまく動作しますが、画面に表示されていないhtmlコンテンツからpdfファイルを生成することが可能かどうかを知りたいですか?可視性をmPdfPreviewWebViewからGONEに設定すると、作成されたpdfは空になります。WebViewからPDFを作成するにはどうすればいいですか?

つまり、htmlからpdfを生成する必要がありますが、htmlが表示されないように(または任意のスペースをとって)画面に表示したくありません。

備考:ライセンスのため、iTextライブラリを使用しません。

private void createPDF() { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
     PdfDocument pdfDocument = new PdfDocument(); 

     PdfDocument.PageInfo pageInfo = new PdfDocument 
       .PageInfo.Builder(A4_WIDTH, A4_HEIGHT, 1).create(); 

     PdfDocument.Page page = pdfDocument.startPage(pageInfo); 

     Canvas canvas = page.getCanvas(); 
     int webViewWidth = mPdfPreviewWebView.getWidth(); 
     float scale = A4_WIDTH/(float) webViewWidth; 
     canvas.save(); 
     canvas.scale(scale, scale); 

     mPdfPreviewWebView.draw(canvas); 
     canvas.restore(); 
     pdfDocument.finishPage(page); 

     String dir = Environment.getExternalStorageDirectory() 
       + getString(R.string.three_clicks_folder); 

     try { 
      FileOutputStream fileOutputStream = null; 
      try { 
       File file = (new File(dir, "share.pdf")); 
       if (!file.exists()) { 
        file.createNewFile(); 
       } 

       fileOutputStream = new FileOutputStream(file); 

       pdfDocument.writeTo(fileOutputStream); 

       pdfDocument.close(); 
       Log.i(TAG, "PDF created"); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } finally { 
       if (fileOutputStream != null) { 
        fileOutputStream.close(); 
       } 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

答えて

0

可能です。単にアクティビティの上にフラグメントを作成し、そのフラグメントからpdfルーチンを処理するコードをアクティビティで呼び出します。変換が完了したら、フラグメントを閉じます。フラグメントは "処理中...."メッセージになり、完了したらそれを却下し、フラグメント内で何をしたいかを行います。または、断片化を解消する前に、変換したpdfで何かをしたいかもしれません。

+0

しかし、私の問題は、htmlからpdfへの変換です。私の経験から、私がpdfを生成するために使用するメソッドは、 'WebView'(または' draw'メソッドが呼び出される他の 'View')が画面上で見えるときにのみ正しく生成します。私は、バックグラウンドで「何とか」HTMLにpdfに変換する方法を探しています。 –

関連する問題