Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin Android:无法将Java.IO.ByteArrayOutputStream表达式转换为System.IO.Stream类型_Java_C#_Android_Xamarin_Xamarin.android - Fatal编程技术网

Xamarin Android:无法将Java.IO.ByteArrayOutputStream表达式转换为System.IO.Stream类型

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

我使用的是XamarinAndroid和联机“document.WriteTo(outPut);”我得到了一个编译时错误。等价的代码用Java编译,但使用Xamarin和c#我遇到了一些类型的强制转换/转换问题。有人知道如何解决这个问题吗?我要做的是将我创建的pdf转换成字节数组

 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.NET
Stream
,而您通过tearrayoutputstream将其传递给Java
。要修复,请使用.NET
MemoryStream

    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类