Xamarin Android视图使用MUPDF的布局中的PDF



我想将MUPDF阅读器用于我的Xamarin Android项目。我正在尝试在我的相对布局中查看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);

但是我在这里遇到错误

"无法创建对抽象类或接口'picker .filepickersupport的遗物"

任何人都可以帮我解决这个问题。

预先感谢。

如果您不使用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;
                }
            }
        }
    }

最新更新