我想将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;
}
}
}
}