java - Xamarin Android : Cannot convert Java. IO.ByteArrayOutputStream 表达式类型 System.IO.Stream

标签 java c# android xamarin xamarin.android

我正在使用 Xamarin Android 并在线“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 需要 .NET Stream,而您传递给它的是 Java ByteArrayOutputStream。要修复,请使用 .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();
    }

关于java - Xamarin Android : Cannot convert Java. IO.ByteArrayOutputStream 表达式类型 System.IO.Stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37657404/

相关文章:

android无法访问本地html

java - 为什么我的 java 交换功能不起作用?

java - Java中的Trie实现

c# - 客户端无法反序列化字符串日期时间

c# - 在android中实现滑动和点击相对布局的最佳方法是什么?

java - 如何像Javascript中的Promise一样检测Retrofit上的所有异步操作是否完成?

android - 无法运行或调试 SVN android 项目

java - OOo/LibreOffice UNO/Java : How to get calling spreadsheet cell of a calc function?

java - Synthetica JButton 边距

c# - 具有泛型返回类型的可空引用类型