void WritePrintedPdfDoc(ParcelFileDescriptor destination)
 {
     var javaStream = new Java.IO.FileOutputStream(destination.FileDescriptor);
     var osi = new OutputStreamInvoker(javaStream);
     using (var mem = new MemoryStream())
     {
         document.WriteTo(mem);
         var bytes = mem.ToArray();
         osi.Write(bytes, 0, bytes.Length);
     }
 }
Example #2
0
        public override ParcelFileDescriptor OpenFile(Android.Net.Uri uri, string mode)
        {
            switch ((UriMatches)UriMatcher.Match(uri))
            {
                case UriMatches.GetIcon:
                    var iconId = (PwIcon)Enum.Parse(typeof(PwIcon), uri.GetQueryParameter(IconIdParameter));
                    var customIconUuid = new PwUuid(MemUtil.HexStringToByteArray(uri.GetQueryParameter(CustomIconUuidParameter)));

                    var iconDrawable = _db.DrawableFactory.GetIconDrawable(App.Context.Resources, _db.KpDatabase, iconId, customIconUuid) as BitmapDrawable;
                    if (iconDrawable != null)
                    {
                        var pipe = ParcelFileDescriptor.CreatePipe();
                        var outStream = new OutputStreamInvoker(new ParcelFileDescriptor.AutoCloseOutputStream(pipe[1]));

                        ThreadPool.QueueUserWorkItem(state =>
                            {
                                iconDrawable.Bitmap.Compress(Bitmap.CompressFormat.Png, 100, outStream);
                                outStream.Close();
                            });

                        return pipe[0];
                    }

                    // Couldn't get an icon for some reason.
                    return null;
                default:
                    throw new ArgumentException("Unknown Uri: " + uri, "uri");
            }
        }