Ejemplo n.º 1
0
		public override void OnWrite (PageRange[] pages, ParcelFileDescriptor destination, CancellationSignal cancellationSignal, Android.Print.PrintDocumentAdapter.WriteResultCallback callback)
		{
			InputStream input = null;
			OutputStream output = null;

			try {


				input = new FileInputStream (PathToDoc);
				output = new FileOutputStream (destination.FileDescriptor);

				byte[] buf = new byte[1024];
				int bytesRead;

				while ((bytesRead = input.Read (buf)) > 0) {
					output.Write (buf, 0, bytesRead);
				}

				callback.OnWriteFinished (new PageRange[]{ PageRange.AllPages });

			} catch (System.IO.FileNotFoundException ee) {
				Insights.Report (ee);
			} catch (Exception e) {
				Insights.Report (e);
			} finally {
				try {
					input.Close ();
					output.Close ();
				} catch (Java.IO.IOException e) {
					e.PrintStackTrace ();
				}
			}
		}
 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);
     }
 }
        public void CommitWrite()
        {
            ParcelFileDescriptor fileDescriptor = _ctx.ContentResolver.OpenFileDescriptor(Android.Net.Uri.Parse(_path), "rwt");

            using (var outputStream = new FileOutputStream(fileDescriptor.FileDescriptor))
            {
                byte[] data = _memoryStream.ToArray();

                outputStream.Write(data);
                outputStream.Close();
            }
            fileDescriptor.Close();
        }
Ejemplo n.º 4
0
        private int OnTunBuilderEstablishImpl()
        {
            ParcelFileDescriptor fileDescriptor = ActiveContext.Establish();

            if (fileDescriptor == null)
            {
                throw new Exception("VpnService.Builder.Establish failed");
            }

            Service.HandleThreadStarted();

            return(fileDescriptor.DetachFd());
        }
Ejemplo n.º 5
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)));
                int             databaseIndex  = int.Parse(uri.GetQueryParameter(DatabaseIndexParameter));
                List <Database> databases      = App.Kp2a.OpenDatabases.ToList();
                Database        database       = databases[databaseIndex];


                var iconDrawable = database.DrawableFactory.GetIconDrawable(App.Context, database.KpDatabase, iconId, customIconUuid, false) as BitmapDrawable;
                if (iconDrawable?.Bitmap != null)

                {
                    var pipe      = ParcelFileDescriptor.CreatePipe();
                    var outStream = new OutputStreamInvoker(new ParcelFileDescriptor.AutoCloseOutputStream(pipe[1]));

                    ThreadPool.QueueUserWorkItem(state =>
                    {
                        var original        = iconDrawable.Bitmap;
                        Bitmap copy         = Bitmap.CreateBitmap(original.Width, original.Height, original.GetConfig() ?? Bitmap.Config.Argb8888);
                        Canvas copiedCanvas = new Canvas(copy);
                        copiedCanvas.DrawBitmap(original, 0f, 0f, null);

                        var bitmap           = copy;
                        float maxSize        = convertDpToPixel(60, App.Context);
                        float scale          = Math.Min(maxSize / bitmap.Width, maxSize / bitmap.Height);
                        var scaleWidth       = (int)(bitmap.Width * scale);
                        var scaleHeight      = (int)(bitmap.Height * scale);
                        var scaledBitmap     = Bitmap.CreateScaledBitmap(bitmap, scaleWidth, scaleHeight, true);
                        Bitmap newRectBitmap = Bitmap.CreateBitmap((int)maxSize, (int)maxSize, Bitmap.Config.Argb8888);

                        Canvas c = new Canvas(newRectBitmap);
                        c.DrawBitmap(scaledBitmap, (maxSize - scaledBitmap.Width) / 2.0f, (maxSize - scaledBitmap.Height) / 2.0f, null);
                        bitmap = newRectBitmap;
                        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");
            }
        }
Ejemplo n.º 6
0
            private async void CreatePDF2(Android.Webkit.WebView webview)
            {
                try
                {
                    // 计算webview打印需要的页数
                    int numberOfPages = await GetPDFPageCount(webview);

                    File pdfFile = new File(fileNameWithPath);
                    if (pdfFile.Exists())
                    {
                        pdfFile.Delete();
                    }
                    pdfFile.CreateNewFile();
                    descriptor = ParcelFileDescriptor.Open(pdfFile, ParcelFileMode.ReadWrite);
                    // 设置打印参数
                    var             dm         = webview.Context.Resources.DisplayMetrics;
                    var             d          = dm.Density;
                    var             dpi        = dm.DensityDpi;
                    var             height     = dm.HeightPixels;
                    var             width      = dm.WidthPixels;
                    var             xdpi       = dm.Xdpi;
                    var             ydpi       = dm.Ydpi;
                    PrintAttributes attributes = new PrintAttributes.Builder()
                                                 .SetMediaSize(MediaSize)
                                                 .SetResolution(new PrintAttributes.Resolution("id", Context.PrintService, Convert.ToInt16(xdpi), Convert.ToInt16(ydpi)))
                                                 .SetColorMode(PrintColorMode.Color)
                                                 .SetMinMargins(PrintAttributes.Margins.NoMargins)
                                                 .Build();

                    ranges = new PageRange[] { new PageRange(0, numberOfPages - 1) };
                    // 创建pdf文件缓存目录
                    // 获取需要打印的webview适配器
                    printAdapter = webview.CreatePrintDocumentAdapter("CreatePDF");
                    // 开始打印
                    printAdapter.OnStart();
                    printAdapter.OnLayout(attributes, attributes, new CancellationSignal(), GetLayoutResultCallback(this), new Bundle());
                }
                catch (Java.IO.FileNotFoundException e)
                {
                    System.Console.WriteLine(e.Message);
                }
                catch (Java.IO.IOException e)
                {
                    System.Console.WriteLine(e.Message);
                }
                catch (Java.Lang.Exception e)
                {
                    System.Console.WriteLine(e.Message);
                }
            }
Ejemplo n.º 7
0
            public override void OnWrite(PageRange[] pages, ParcelFileDescriptor destination,
                                         CancellationSignal cancellationSignal, WriteResultCallback callback)
            {
                // If we are already cancelled, don't do any work.
                if (cancellationSignal.IsCanceled)
                {
                    callback.OnWriteCancelled();
                    return;
                }

                var onWriteAsyncTask = new MyOnWriteAsyncTask(this, pages, destination, cancellationSignal, callback);

                onWriteAsyncTask.ExecuteOnExecutor(AsyncTask.ThreadPoolExecutor, (Java.Lang.Void[])null);
            }
        public bool StartAecDump(string file, int fileSizeLimitBytes)
        {
            try
            {
                ParcelFileDescriptor aecDumpFileDescriptor = ParcelFileDescriptor.Open(new File(file),
                                                                                       ParcelFileMode.Create | ParcelFileMode.Truncate | ParcelFileMode.ReadWrite);

                return(_factory.StartAecDump(aecDumpFileDescriptor.DetachFd(), fileSizeLimitBytes));
            }
            catch (IOException ex)
            {
                return(false);
            }
        }
Ejemplo n.º 9
0
        public bool StartRtcEventLog(string file, int fileSizeLimitBytes)
        {
            try
            {
                ParcelFileDescriptor rtcEventLog = ParcelFileDescriptor.Open(new File(file),
                                                                             ParcelFileMode.Create | ParcelFileMode.Truncate | ParcelFileMode.ReadWrite);

                return(_peerConnection.StartRtcEventLog(rtcEventLog.DetachFd(), fileSizeLimitBytes));
            }
            catch (IOException ex)
            {
                return(false);
            }
        }
Ejemplo n.º 10
0
        protected override void Dispose(bool disposing)
        {
            if (!disposing || _isDisposed)
            {
                return;
            }
            _isDisposed = true;

            (_stream as Java.IO.ICloseable)?.Close();
            _stream?.Dispose();

            ParcelFileDescriptor?.Close();
            ParcelFileDescriptor?.Dispose();
        }
        public override void OnWrite(PageRange[] pages, ParcelFileDescriptor destination, CancellationSignal cancellationSignal, WriteResultCallback callback)
        {
            InputStream input = null;

            OutputStream output = null;

            try
            {
                File file = new File(path);

                input  = new FileInputStream(file);
                output = new FileOutputStream(destination.FileDescriptor);

                byte[] buf = new byte[8 * 1024];

                int ligne;

                while ((ligne = input.Read(buf)) >= 0 && !cancellationSignal.IsCanceled)
                {
                    output.Write(buf, 0, ligne);
                }

                if (cancellationSignal.IsCanceled)
                {
                    callback.OnWriteCancelled();
                }
                else
                {
                    callback.OnWriteFinished(new PageRange[] { PageRange.AllPages });
                }
            }
            catch (Exception ex)
            {
                callback.OnWriteFailed(ex.Message);
            }
            finally
            {
                try
                {
                    input.Close();

                    output.Close();
                }
                catch (IOException ex)
                {
                    Log.Error("e", "", ex.Message);
                }
            }
        }
        public void RenderPDFPagesIntoImages(Java.IO.File file)
        {
            pages = new List <Bitmap>();

            // create a new renderer
            try
            {
                renderer = new PdfRenderer(ParcelFileDescriptor.Open(file, ParcelFileMode.ReadOnly));
                numPages = renderer.PageCount;
            }
            catch (Exception)
            {
                // handle any exceptions
            }
        }
Ejemplo n.º 13
0
        public bool StartAecDumpWithFilePath(string filePath, long maxSizeInBytes)
        {
            try
            {
                ParcelFileDescriptor aecDumpFileDescriptor = ParcelFileDescriptor.Open(new File(filePath),
                                                                                       ParcelFileMode.Create | ParcelFileMode.Truncate | ParcelFileMode.ReadWrite);

                return(_peerConnectionfactory.StartAecDump(aecDumpFileDescriptor.DetachFd(), (int)maxSizeInBytes));
            }
            catch (Exception exception)
            {
                Log.Error(TAG, $"An Exception has occured :  {exception.Message}");
                return(false);
            }
        }
Ejemplo n.º 14
0
        public void onRestore(BackupDataInput data, int appVersionCode,
		                      ParcelFileDescriptor newState)
        {
            while (data.ReadNextHeader()) {
                String key = data.GetKey();
                int dataSize = data.GetDataSize();

                if (key.Equals(MY_BACKUP_KEY_ONE)) {
                    byte[] buffer = new byte[dataSize];
                    data.ReadEntityData(buffer, 0, dataSize);
                } else if (key.Equals(MY_BACKUP_KEY_TO_IGNORE)) {
                    data.SkipEntityData();
                }
            }
        }
Ejemplo n.º 15
0
        public bool StartRtcEventLogWithFilePath(string filePath, long maxSizeInBytes)
        {
            try
            {
                ParcelFileDescriptor rtcEventLog = ParcelFileDescriptor.Open(new File(filePath),
                                                                             ParcelFileMode.Create | ParcelFileMode.Truncate | ParcelFileMode.ReadWrite);

                return(_peerConnection.StartRtcEventLog(rtcEventLog.DetachFd(), (int)maxSizeInBytes));
            }
            catch (System.Exception exception)
            {
                Log.Error("PlatformPeerConnection", $"Could not Start RTCEvent logging {exception.Message}");
                return(false);
            }
        }
        public override void OnLayoutFinished(PrintDocumentInfo info, bool changed)
        {
            try
            {
                var file                = new Java.IO.File(PDFToHtml.FilePath);
                var fileDescriptor      = ParcelFileDescriptor.Open(file, ParcelFileMode.ReadWrite);
                var writeResultCallback = new PdfWriteResultCallback(PDFToHtml);
                Adapter.OnWrite(new PageRange[] { PageRange.AllPages }, fileDescriptor, new CancellationSignal(), writeResultCallback);
            }
            catch
            {
                PDFToHtml.Status = PDFEnum.Failed;
            }

            base.OnLayoutFinished(info, changed);
        }
Ejemplo n.º 17
0
 private void CloseFD()
 {
     if (m_vpnFD != null)
     {
         try
         {
             Log.Debug(TAG, "close fd");
             m_vpnFD.Close();
         }
         catch (Exception ex)
         {
             Log.Error(TAG, ex.Message + "\n" + ex.StackTrace);
         }
         m_vpnFD = null;
     }
 }
Ejemplo n.º 18
0
        public override void OnLayoutFinished(PrintDocumentInfo info, bool changed)
        {
            //using (var _dir = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDocuments))
            //using (var _dir = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads))
            //using (var _dir = Forms9Patch.Droid.Settings.Context.FilesDir)
            using (var _dir = Forms9Patch.Droid.Settings.Context.CacheDir)
            {
                if (!_dir.Exists())
                {
                    _dir.Mkdir();
                }

                // var path = _dir.Path + "/" + FileName + ".pdf";
                //var path = System.IO.Path.Combine(_dir.AbsolutePath, Android.OS.Environment.DirectoryDownloads, FileName + ".pdf");
                //var file = new Java.IO.File(path);

                /*
                 * var file = new Java.IO.File(_dir, FileName + ".pdf");
                 * int iter = 0;
                 * while (file.Exists())
                 * {
                 *  file.Dispose();
                 *  iter++;
                 *  //path = _dir.Path + "/" + FileName + "_" + iter.ToString("D3") + ".pdf";
                 *  //path = System.IO.Path.Combine(_dir.AbsolutePath, Android.OS.Environment.DirectoryDownloads, FileName + "_" + iter.ToString("D4") + ".pdf");
                 *  //file = new Java.IO.File(path);
                 *  file = new Java.IO.File(_dir, FileName + "_" + iter.ToString("D3") + ".pdf");
                 * }
                 *
                 *
                 * //file.CreateNewFile();
                 */
                var file = Java.IO.File.CreateTempFile(FileName + ".", ".pdf", _dir);

                var fileDescriptor = ParcelFileDescriptor.Open(file, ParcelFileMode.ReadWrite);

                var writeResultCallback = new PdfWriteResultCallback(TaskCompletionSource, file.AbsolutePath);

                Adapter.OnWrite(new Android.Print.PageRange[] { PageRange.AllPages }, fileDescriptor, new CancellationSignal(), writeResultCallback);

                file.Dispose();

                //Android.Media.MediaScannerConnection.ScanFile(Forms9Patch.Droid.Settings.Context, new string[] { file.AbsolutePath }, new string[] { "application/pdf" }, null);
                //Android.Media.MediaScannerConnection.ScanFile(file.AbsolutePath, "application/pdf");
            }
            base.OnLayoutFinished(info, changed);
        }
        public override void OnWrite(PageRange[] pages, ParcelFileDescriptor destination, CancellationSignal cancellationSignal, WriteResultCallback callback)
        {
            InputStream  input  = null;
            OutputStream output = null;

            try
            {
                //Create FileInputStream object from the given file
                input = new FileInputStream(FileToPrint);
                //Create FileOutputStream object from the destination FileDescriptor instance
                output = new FileOutputStream(destination.FileDescriptor);

                byte[] buf = new byte[1024];
                int    bytesRead;

                while ((bytesRead = input.Read(buf)) > 0)
                {
                    //Write the contents of the given file to the print destination
                    output.Write(buf, 0, bytesRead);
                }

                callback.OnWriteFinished(new PageRange[] { PageRange.AllPages });
            }
            catch (FileNotFoundException ex)
            {
                //Catch exception
                System.Diagnostics.Debug.WriteLine(ex);
            }
            catch (Exception e)
            {
                //Catch exception
                System.Diagnostics.Debug.WriteLine(e);
            }
            finally
            {
                try
                {
                    input.Close();
                    output.Close();
                }
                catch (IOException e)
                {
                    e.PrintStackTrace();
                    System.Diagnostics.Debug.WriteLine(e);
                }
            }
        }
Ejemplo n.º 20
0
        public override void OnWrite(PageRange[] pages, ParcelFileDescriptor destination, CancellationSignal cancellationSignal, WriteResultCallback callback)
        {
            InputStream  input  = null;
            OutputStream output = null;

            try
            {
                File file = new File(_filePath);
                input  = new FileInputStream(file);
                output = new FileOutputStream(destination.FileDescriptor);

                byte[] buf = new byte[16384];
                int    size;

                while ((size = input.Read(buf)) >= 0 && !cancellationSignal.IsCanceled)
                {
                    output.Write(buf, 0, size);
                }

                if (cancellationSignal.IsCanceled)
                {
                    callback.OnWriteCancelled();
                }
                else
                {
                    callback.OnWriteFinished(new PageRange[] { PageRange.AllPages });
                }
            }
            catch (Exception e)
            {
                callback.OnWriteFailed(e.Message);
                System.Diagnostics.Debug.WriteLine(e.Message);
            }
            finally
            {
                try
                {
                    input?.Close();
                    output?.Close();
                }
                catch (IOException e)
                {
                    System.Diagnostics.Debug.WriteLine(e.Message);
                }
            }
        }
Ejemplo n.º 21
0
        async Task <BitmapFactory.Options> GetBitmapOptionsOfImageAsync(Uri uri)
        {
            BitmapFactory.Options options = new BitmapFactory.Options
            {
                InJustDecodeBounds = true
            };

            // The result will be null because InJustDecodeBounds == true.

            ParcelFileDescriptor parcelFileDescriptor = null;

            try
            {
                parcelFileDescriptor = this.ContentResolver.OpenFileDescriptor(uri, "r");
                var    fileDescriptor = parcelFileDescriptor.FileDescriptor;
                Bitmap result         = await BitmapFactory.DecodeFileDescriptorAsync(fileDescriptor, null, options).ConfigureAwait(false);

                parcelFileDescriptor.Close();
            }
            catch (Java.Lang.Exception e)
            {
                // Log.Error(TAG, "Failed to load image.", e);
                e.PrintStackTrace();
                return(null);
            }
            finally
            {
                try
                {
                    if (parcelFileDescriptor != null)
                    {
                        parcelFileDescriptor.Close();
                    }
                }
                catch (IOException e)
                {
                    e.PrintStackTrace();
                    // Log.Error(TAG, "Error closing ParcelFile Descriptor");
                }
            }

            int imageHeight = options.OutHeight;
            int imageWidth  = options.OutWidth;

            return(options);
        }
Ejemplo n.º 22
0
        public override ParcelFileDescriptor OpenFile(Uri uri, string mode)
        {
            string path = uri.GetPath();

            if (mode.Equals("r") &&
                (path.Equals("/foo.txt") || path.Equals("/bar.txt")))
            {
                try {
                    return(ParcelFileDescriptor.Open(
                               new Java.Io.File(GetContext().GetFilesDir() + path),
                               ParcelFileDescriptor.MODE_READ_ONLY));
                } catch (FileNotFoundException) {
                    Log.E(TAG, "Bad file " + uri);
                }
            }
            return(null);
        }
Ejemplo n.º 23
0
                protected override Android.Graphics.Bitmap RunInBackground(params string[] @params)
                {
                    if (IsCancelled)
                    {
                        RecycleBitmap(_pdfPageBitmap);
                        return(null);
                    }

                    string url      = (string)@params[0];
                    int    position = int.Parse(@params[1]);
                    double zoom     = double.Parse(@params[2]);

                    _pdfPageBitmap = null;

                    if (File.Exists(url))
                    {
                        var file            = new Java.IO.File(url);
                        var mFileDescriptor = ParcelFileDescriptor.Open(file, ParcelFileMode.ReadOnly);
                        // This is the PdfRenderer we use to render the PDF.
                        if (mFileDescriptor != null)
                        {
                            // create a new renderer
                            using (PdfRenderer renderer = new PdfRenderer(mFileDescriptor))
                            {
                                using (PdfRenderer.Page page = renderer.OpenPage(position))
                                {
                                    try
                                    {
                                        _pdfPageBitmap = Android.Graphics.Bitmap.CreateBitmap((int)(page.Width.Px() * zoom), (int)(page.Height.Px() * zoom), Android.Graphics.Bitmap.Config.Argb4444);
                                        page.Render(_pdfPageBitmap, null, null, PdfRenderMode.ForDisplay);
                                    }
                                    catch (Exception e)
                                    {
                                        _listener.RenderingErrorCaught(string.Format("PdfPageGenerationTask failed for index {0} :{1}", TaskIndex.ToString(), e.Message));
                                        Console.WriteLine(e);
                                    }
                                    page.Close();
                                }
                                renderer.Close();
                            }
                        }
                    }

                    return(_pdfPageBitmap);
                }
Ejemplo n.º 24
0
        public ChannelStream(ParcelFileDescriptor parcelFileDescriptor, string mode)
        {
            _mode = mode;
            ParcelFileDescriptor = parcelFileDescriptor;

            if (mode.Contains("w"))
            {
                var outStream = new Java.IO.FileOutputStream(parcelFileDescriptor.FileDescriptor);
                Channel = outStream.Channel;
                _stream = outStream;
            }
            else
            {
                var inStream = new Java.IO.FileInputStream(parcelFileDescriptor.FileDescriptor);
                Channel = inStream.Channel;
                _stream = inStream;
            }
        }
Ejemplo n.º 25
0
        public ParcelFileDescriptor Establish()
        {
            EnsureRoutes();
            EnsureDNS();

            if (m_builder == null)
            {
                throw new Exception("internal error (m_builder is null)");
            }

            if (m_fileDescriptor != null)
            {
                throw new Exception("internal error (m_fileDescriptor already initialized)");
            }

            m_fileDescriptor = m_builder.Establish();
            return(m_fileDescriptor);
        }
Ejemplo n.º 26
0
            void SetSource(string url)
            {
                if (File.Exists(_url))
                {
                    var file = new Java.IO.File(_url);

                    var mFileDescriptor = ParcelFileDescriptor.Open(file, ParcelFileMode.ReadOnly);
                    // This is the PdfRenderer we use to render the PDF.
                    if (mFileDescriptor != null)
                    {
                        // create a new renderer
                        using (PdfRenderer renderer = new PdfRenderer(mFileDescriptor))
                        {
                            _count = renderer.PageCount;
                        }
                    }
                }
            }
Ejemplo n.º 27
0
        public bool Email(string mailTo, string subject, List <string> filePaths)
        {
            try
            {
                Context context = Android.App.Application.Context;

                var email = new Intent(Intent.ActionSendMultiple);
                email.SetType("message/rfc822");
                email.PutExtra(Intent.ExtraEmail, new string[] { mailTo });
                email.PutExtra(Intent.ExtraSubject, subject);

                List <IParcelable> uris = new List <IParcelable>();

                filePaths.ForEach(file =>
                {
                    var fileIn = new File(file);
                    if (!fileIn.Exists() || !fileIn.CanRead())
                    {
                        Toast.MakeText(context, "Attachment Error", ToastLength.Short);
                        return;
                    }
                    fileIn.SetReadable(true, false);
                    ParcelFileDescriptor.Open(fileIn, ParcelFileMode.ReadOnly);
                    var uri = FileProvider.GetUriForFile(Forms.Context.ApplicationContext, "triotech.hubo.droid.fileprovider", fileIn);
                    uris.Add(uri);
                });

                email.PutParcelableArrayListExtra(Intent.ExtraStream, uris);

                email.AddFlags(ActivityFlags.NewTask);
                email.AddFlags(ActivityFlags.GrantReadUriPermission);
                email.AddFlags(ActivityFlags.GrantWriteUriPermission);
                email.SetFlags(ActivityFlags.GrantReadUriPermission);
                email.SetFlags(ActivityFlags.GrantWriteUriPermission);

                context.StartActivity(Intent.CreateChooser(email, "Send Email...").AddFlags(ActivityFlags.NewTask));

                return(true);
            }
            catch
            {
                return(false);
            }
        }
Ejemplo n.º 28
0
        public async Task Open(string filePath)
        {
            var client = new HttpClient();
            var rawPdf = await client.GetByteArrayAsync(filePath);

            var f = new Java.IO.File(MainActivity.CurrentActivity.CacheDir, "sample.pdf");

            FileOutputStream output = new FileOutputStream(f);
            await output.WriteAsync(rawPdf);

            output.Close();

            var pdfFileDescriptor = ParcelFileDescriptor.Open(f, ParcelFileMode.ReadOnly);
            var renderer          = new PdfRenderer(pdfFileDescriptor);

            PdfActivity.PdfRenderer = renderer;
            PdfActivity.File        = filePath;
            MainActivity.CurrentActivity.StartActivity(new Intent(MainActivity.CurrentActivity, typeof(PdfActivity)));
        }
        public override void OnWrite(PageRange[] pages, ParcelFileDescriptor destination,
                                     CancellationSignal cancellationSignal, WriteResultCallback callback)
        {
            PrintedPdfDocument.Page page = document.StartPage(0);

            page.Canvas.Scale(scale, scale);

            page.Canvas.DrawText(text, page.Canvas.ClipBounds.Right / 2, page.Canvas.ClipBounds.Bottom / 2, new Android.Graphics.Paint());

            document.FinishPage(page);

            WritePrintedPdfDoc(destination);

            document.Close();

            document.Dispose();

            callback.OnWriteFinished(pages);
        }
Ejemplo n.º 30
0
        public override void OnWrite(PageRange[] pages, ParcelFileDescriptor destination,
                                     CancellationSignal cancellationSignal, WriteResultCallback callback)
        {
            PrintedPdfDocument.Page page = document.StartPage(0);

            page.Canvas.Scale(scale, scale);

            view.Draw(page.Canvas);

            document.FinishPage(page);

            WritePrintedPdfDoc(destination);

            document.Close();

            document.Dispose();

            callback.OnWriteFinished(pages);
        }
        public override void OnWrite(PageRange[] pages, ParcelFileDescriptor destination,
                                      CancellationSignal cancellationSignal, WriteResultCallback callback)
        {
            PrintedPdfDocument.Page page = document.StartPage(0);

            page.Canvas.Scale(scale, scale);

            page.Canvas.DrawText(text, page.Canvas.ClipBounds.Right / 2, page.Canvas.ClipBounds.Bottom / 2, new Android.Graphics.Paint());
            
            document.FinishPage(page);

            WritePrintedPdfDoc(destination);

            document.Close();

            document.Dispose();

            callback.OnWriteFinished(pages);
        }
Ejemplo n.º 32
0
            public override void OnWrite(PageRange[] pages, ParcelFileDescriptor destination, CancellationSignal cancellationSignal, WriteResultCallback callback)
            {
                int totalPages = 1;

                for (int i = 0; i < totalPages; i++)
                {
                    if (pageInRange(pages, i))
                    {
                        PdfDocument.Page[] writtenPagesArray;
                        PdfDocument.Page   page = mPdfDocument.StartPage(i);
                        if (cancellationSignal.IsCanceled)
                        {
                            callback.OnWriteCancelled();
                            mPdfDocument.Close();
                            mPdfDocument = null;
                            return;
                        }
                        drawPage(page);
                        mPdfDocument.FinishPage(page);
                    }
                }
                try
                {
                    FileOutputStream fileOutputStream = new FileOutputStream(destination.FileDescriptor);
                    MemoryStream     stream           = new MemoryStream();
                    mPdfDocument.WriteTo(stream);
                    byte[] bytes = stream.ToArray();
                    stream.Close();
                    fileOutputStream.Write(bytes);
                }
                catch (Java.IO.IOException e)
                {
                    callback.OnWriteFailed(e.ToString());
                    return;
                }
                finally
                {
                    mPdfDocument.Close();
                    mPdfDocument = null;
                }
                callback.OnWriteFinished(pages);
            }
Ejemplo n.º 33
0
        public ParcelFileDescriptor Establish()
        {
            EnsureRoutes();

            EnsureDNS();

            if (vpnServiceBuilder == null)
            {
                throw new Exception("Internal error (vpnServiceBuilder is null)");
            }

            if (fileDescriptor != null)
            {
                throw new Exception("Internal error (fileDescriptor already initialized)");
            }

            fileDescriptor = vpnServiceBuilder.Establish();

            return(fileDescriptor);
        }
Ejemplo n.º 34
0
        /// <summary>
        /// Loads a <see cref="Bitmap"/> from the provided <see cref="Android.Net.Uri"/> using the provided <see cref="ContentResolver"/>.
        /// </summary>
        /// <param name="contentResolver">A <see cref="ContentResolver"/> to use to load the image.</param>
        /// <param name="uri">A <see cref="Android.Net.Uri"/> that identifies the image.</param>
        /// <param name="reqWidth">The requested width for the loaded <see cref="Bitmap"/>. The actual width after the bitmap is loaded may be larger, but will not be smaller.</param>
        /// <param name="reqHeight">The requested height for the loaded <see cref="Bitmap"/>. The actual height after the bitmap is loaded may be larger, but will not be smaller.</param>
        /// <returns></returns>
        public static Bitmap GetBitmapFromUri(ContentResolver contentResolver, AndroidUri uri, int reqWidth, int reqHeight)
        {
            ParcelFileDescriptor parcelFileDescriptor = contentResolver.OpenFileDescriptor(uri, "r");
            FileDescriptor       fileDescriptor       = parcelFileDescriptor.FileDescriptor;

            // Load just the dimensions of the image (doesn't actually allocate memory for the bitmap)
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.InJustDecodeBounds = true;
            BitmapFactory.DecodeFileDescriptor(fileDescriptor, null, options);

            // Calculate inSampleSize so we can subsample the image appropriately.
            options.InSampleSize = CalculateInSampleSize(options.OutWidth, options.OutHeight, reqWidth, reqHeight);

            // Load the image into a Bitmap at the determined subsampling
            options.InJustDecodeBounds = false;
            Bitmap image = BitmapFactory.DecodeFileDescriptor(fileDescriptor, null, options);

            parcelFileDescriptor.Close();
            return(image);
        }
			public override void OnWrite (PageRange[] pages, ParcelFileDescriptor destination,
				CancellationSignal cancellationSignal, WriteResultCallback callback)
			{
				mWrappedInstance.OnWrite (pages, destination, cancellationSignal, callback);
			}