2016-11-26 27 views
0

我想爲我的Xamarin Android項目使用MuPDF閱讀器。 我試圖在我的相對佈局Xamarin安卓視圖pdf格式使用Mupdf

這裏查看PDF是我相對佈局代碼

<RelativeLayout 
    android:id="@+id/mupdf_wrapper" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    </RelativeLayout> 

,這裏是主要胡亞蓉

SetContentView(Resource.Layout.Main); 

     RelativeLayout mupdfWrapper = FindViewById<RelativeLayout>(Resource.Id.mupdf_wrapper); 



     MuPDFCore core = new MuPDFCore(this, "test.pdf"); 
     MuPDFReaderView reader = new MuPDFReaderView(this); 
     reader.Adapter = new MuPDFPageAdapter(this, new FilePicker.IFilePickerSupport() , core); 
     mupdfWrapper.AddView(reader); 

     mupdfWrapper.AddView(reader); 

但我在這裏得到錯誤

「無法創建抽象類或接口的文件」File picker .iflepickersupport「

任何人都可以幫助我解決這個問題,請。

在此先感謝。

+0

*你得到了什麼*錯誤? – JosephH

+0

謝謝,在這行reader.Adapter = new MuPDFPageAdapter(this,new FilePicker.IFilePickerSupport(),core);它說「不能創建一個抽象類或接口istance」文件選擇器.iflepickersupport'「 –

回答

0

如果你沒有使用FilePicker.IFilePickerSupport(的),然後將其設置爲null 像

reader.Adapter = new MuPDFPageAdapter(this, null , core); 

和第二件事情是,你的代碼是非常有幫助的,我有你所面對的問題,而是你的問題是我在我的項目中的解決方案,所以謝謝你。 並嘗試它會工作,我在我的代碼中使用它,它爲我工作。 最後這件事是對我的英語感到抱歉。

 protected override void OnCreate(Bundle savedInstanceState) 
    { 
       base.OnCreate(savedInstanceState); 
       File fileToDisplay = (File)fileFromAsset(this, "test.pdf"); 
       fileToDisplay.SetWritable(true); 
       RelativeLayout mupdfWrapper = FindViewById<RelativeLayout>(Resource.Id.mupdf_wrapper); 
       MuPDFCore core = new MuPDFCore(this, fileToDisplay.AbsolutePath); 

       MuPDFReaderView reader = new MuPDFReaderView(this); 
       MuPDFPageAdapter adapter = new MuPDFPageAdapter(this, null, core); 
       reader.SetAdapter(adapter); 
       mupdfWrapper.AddView(reader); 
    } 

    private object fileFromAsset(Context context, string assetName) 
    { 
     File outFile = new File(context.CacheDir, assetName); 
     copy(context.Assets.Open(assetName), outFile); 
     return outFile; 
    } 

    private void copy(Stream inputStream, File output) 
    { 
     OutputStream outputStream = null; 
     var bufferedInputStream = new BufferedInputStream(inputStream); 
     try 
     { 
      outputStream = new FileOutputStream(output); 
      int read = 0; 
      byte[] bytes = new byte[1024]; 
      while ((read = bufferedInputStream.Read(bytes)) != -1) 
      { 
       outputStream.Write(bytes, 0, read); 
      } 
     } 
     finally 
     { 
      try 
      { 
       if (inputStream != null) 
       { 
        inputStream.Close();     
        inputStream.Dispose(); 
        inputStream = null; 
       } 
      } 
      finally 
      { 
       if (outputStream != null) 
       { 
        outputStream.Close();       
        outputStream.Dispose(); 
        outputStream = null; 
       } 
      } 
     } 
    } 
+0

謝謝vishal,當我部署它說」無法打開test.pdf文件「,所以你可能有另一種方式,這段代碼不工作對我來說 –

+0

是因爲找不到這個文件。 – PixelDev

+0

那麼你是從資產中打開這個文件,然後使用代碼。我編輯我的答案。 – PixelDev