Xamarin Android:无法将Java.IO.ByteArrayOutputStream表达式转换为System.IO.Stream类型
我使用的是XamarinAndroid和联机“document.WriteTo(outPut);”我得到了一个编译时错误。等价的代码用Java编译,但使用Xamarin和c#我遇到了一些类型的强制转换/转换问题。有人知道如何解决这个问题吗?我要做的是将我创建的pdf转换成字节数组Xamarin Android:无法将Java.IO.ByteArrayOutputStream表达式转换为System.IO.Stream类型,java,c#,android,xamarin,xamarin.android,Java,C#,Android,Xamarin,Xamarin.android,我使用的是XamarinAndroid和联机“document.WriteTo(outPut);”我得到了一个编译时错误。等价的代码用Java编译,但使用Xamarin和c#我遇到了一些类型的强制转换/转换问题。有人知道如何解决这个问题吗?我要做的是将我创建的pdf转换成字节数组 Byte[] MakePDFFromImages(){ // open a new document PrintAttributes printAttributes = new Pri
Byte[] MakePDFFromImages(){
// open a new document
PrintAttributes printAttributes = new PrintAttributes.Builder().
SetColorMode(Android.Print.PrintColorMode.Color).
SetMediaSize(PrintAttributes.MediaSize.IsoA4).
SetResolution(new PrintAttributes.Resolution("zooey","test", 450, 700)).
SetMinMargins(PrintAttributes.Margins.NoMargins).
Build();
PrintedPdfDocument document = new PrintedPdfDocument (Activity.BaseContext, printAttributes);
// start a page
Android.Graphics.Pdf.PdfDocument.Page page = document.StartPage(0);
ImageView imageView = new ImageView (Activity.BaseContext);
imageView.SetImageBitmap (_imageArray [0]);
imageView.Draw(page.Canvas);
document.FinishPage(page);
ByteArrayOutputStream outPut = new ByteArrayOutputStream();
try {
document.WriteTo(outPut);
document.Close();
outPut.Close();
}
catch(Exception){
}
return outPut.ToByteArray();
}
PrintedPdfDocument.Write
expected.NETStream
,而您通过tearrayoutputstream将其传递给Java。要修复,请使用.NETMemoryStream
:
Byte[] MakePDFFromImages()
{
// open a new document
PrintAttributes printAttributes = new PrintAttributes.Builder().
SetColorMode(Android.Print.PrintColorMode.Color).
SetMediaSize(PrintAttributes.MediaSize.IsoA4).
SetResolution(new PrintAttributes.Resolution("zooey", "test", 450, 700)).
SetMinMargins(PrintAttributes.Margins.NoMargins).
Build();
PrintedPdfDocument document = new PrintedPdfDocument(Activity.BaseContext, printAttributes);
// start a page
Android.Graphics.Pdf.PdfDocument.Page page = document.StartPage(0);
ImageView imageView = new ImageView(Activity.BaseContext);
imageView.SetImageBitmap(_imageArray[0]);
imageView.Draw(page.Canvas);
document.FinishPage(page);
var outPut = new MemoryStream();
try
{
document.WriteTo(outPut);
document.Close();
outPut.Close();
}
catch (Exception)
{
}
return outPut.ToArray();
}
如果您阅读了Xamarin API文档,则的方法需要的是.NET System.IO.Stream,而不是Java流
这显示了如何在Xamarin中使用PDFDocument类