2016-05-23 1 views
0

こんにちは私は横断歩道でのWebViewからPDFを作成しようとしていますが、私はそれを行う方法を任意の支援方法を見つけることができませんでした。現在、私は、ビットマップAndroidのは、どのように横断歩道のWebViewからPDFを作成するには?

How can I capture the whole view into a Bitmap when using crosswalk to display webpage?

を作成するには、このオプションを使用していますし、私は、私は空白のPDF(黒ページ)を取得する出力として How I can convert a bitmap into PDF format in android libにiTextのを使用してビットマップを変換してみてください。ここで

は、ビットマップのコードです:

private void createBitmap (XWalkView view) { 
    String pathToFile = Environment.getExternalStorageDirectory() +"/bitmap.jpg"; 
    view.setDrawingCacheEnabled(true); 
    view.buildDrawingCache(true); 
    Bitmap btmp = view.getDrawingCache(); 
    Canvas canvas = new Canvas(btmp); 
    Paint paint = new Paint(); 
    int height = btmp.getHeight(); 
    canvas.drawBitmap(btmp, 0, height, paint); 
    view.draw(canvas); 

    try { 
     OutputStream fOut = null; 
     File file = new File(pathToFile); 
     fOut = new FileOutputStream(file); 
     btmp.compress(Bitmap.CompressFormat.JPEG, 50, fOut); 
     fOut.flush(); 
     fOut.close(); 
     btmp.recycle(); 
     view.setDrawingCacheEnabled(false); 
     view.destroyDrawingCache(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
} 

私はちょうど:)ヒントが必要です。どうもありがとう。これは私の最初の質問です。私は誤植をお詫びします。

答えて

0

XWalkViewはスタンドアロンSurfaceView(またはTextureView)を出力ターゲットとして使用します.XWalkViewの描画またはonDrawは何も描画しません。だから、PDFファイルに何かを描画することに頼ることはできません。回避策として

、ビットマップに目に見えるウェブページをキャプチャするために使用することができる別のAPI XWalkView.captureBitmapAsyncがあります。ここではそれを使用する方法についての簡単なガイドです: 1)、)XWalkGetBitmapCallback

import org.xwalk.core.XWalkGetBitmapCallback; 
    class XWalkGetBitmapCallbackImpl extends XWalkGetBitmapCallback { 
    public XWalkGetBitmapCallbackImpl() { 
     super(); 
    } 
    //Note: onFinishGetBitmap happens at the same thread as captureBitmapAsync, usually the UI thread. 
    @Override 
    public void onFinishGetBitmap(Bitmap bitmap, int response) { 
     //if response == 0, save this bitmap into a jpg file //otherwise errors. 
    } 
} 

2を実装し、UIスレッドでキャプチャを開始します。

private void captureContent() { 
    if (xWalkView == null) return; 
    mXWalkGetBitmapCallback = new XWalkGetBitmapCallbackImpl(); 
    xWalkView.captureBitmapAsync(mXWalkGetBitmapCallback); 
} 

詳細ここにある:https://crosswalk-project.org/jira/browse/XWALK-5110

+0

それは私をたくさん助けたありがとう:) –

関連する問題