2016-11-26 29 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