/// <summary> /// Note: Not stable. /// </summary> /// <param name="webview"></param> private async void CreatePDF1(Android.Webkit.WebView webview) { //var pageCount = await GetPDFPageCount(webview); PdfDocument document = new PdfDocument(); PdfDocument.Page page = document.StartPage(new PdfDocument.PageInfo.Builder(2120, 3000, 1).Create()); await Task.Delay(34); webview.Draw(page.Canvas); document.FinishPage(page); Stream filestream = null; FileOutputStream fos = null; try { filestream = new MemoryStream(); fos = new Java.IO.FileOutputStream(fileNameWithPath, false); document.WriteTo(filestream); fos.Write(((MemoryStream)filestream).ToArray(), 0, (int)filestream.Length); } catch (Java.Lang.Exception e) { System.Console.WriteLine(e.Message); } finally { filestream?.Close(); fos?.Close(); } document.Close(); OnPageLoadFinished?.Invoke(this, new EventArgs()); }
public override void OnPageFinished(global::Android.Webkit.WebView myWebview, string url) { PdfDocument document = new PdfDocument(); PdfDocument.Page page = document.StartPage(new PdfDocument.PageInfo.Builder(width, height, 1).Create()); myWebview.Draw(page.Canvas); document.FinishPage(page); Stream filestream = new MemoryStream(); Java.IO.FileOutputStream fos = new Java.IO.FileOutputStream(fileNameWithPath, false); document.WriteTo(filestream); fos.Write(((MemoryStream)filestream).ToArray(), 0, (int)filestream.Length); fos.Close(); }
private void drawPage(PdfDocument.Page page) { Canvas canvas = page.Canvas; int titleBaseLine = 72; int leftMargin = 54; Paint paint = new Paint(); paint.Color = Color.Black; paint.TextSize = 36; canvas.DrawText("Test Title", leftMargin, titleBaseLine, paint); paint.TextSize = 11; canvas.DrawText("Test paragraph", leftMargin, titleBaseLine + 25, paint); paint.Color = Color.Blue; canvas.DrawRect(100, 100, 172, 172, paint); }
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); }
public void GeneratePdfFile(string text) { PrintAttributes printAttrs = new PrintAttributes.Builder() .SetColorMode(PrintColorMode.Color) .SetMediaSize(PrintAttributes.MediaSize.IsoA4) .SetResolution(new PrintAttributes.Resolution("guardianHealthId", "TestReport", 592, 842)) .SetMinMargins(PrintAttributes.Margins.NoMargins) .Build(); // Create a document PdfDocument document = new PrintedPdfDocument(Android.App.Application.Context, printAttrs); // Create a page description // A4 : Page size // pageWidth The page width in PostScript (1/72th of an inch) // pageHeight The page height in PostScript(1 / 72th of an inch). PageInfo pageInfo = new PageInfo.Builder(592, 842, 1).Create(); PdfDocument.Page page = document.StartPage(pageInfo); Xamarin.Forms.Button btn = new Xamarin.Forms.Button(); // File to create page File path = GetDirectoryPath(); System.IO.FileStream fileStream = new System.IO.FileStream(path.ToString(), System.IO.FileMode.Create); Canvas canvas = page.Canvas; Paint paint = new Paint(); canvas.DrawText("This is a demo pdf file.\n" + text, 10, 10, paint); document.FinishPage(page); document.WriteTo(fileStream); document.Close(); fileStream.Close(); }
public override void OnPageFinished(Android.Webkit.WebView myWebview, string url) { PdfDocument document = new PdfDocument(); PdfDocument.Page page = document.StartPage(new PdfDocument.PageInfo.Builder(2120, 3000, 1).Create()); myWebview.Draw(page.Canvas); document.FinishPage(page); Stream filestream = new MemoryStream(); FileOutputStream fos = new Java.IO.FileOutputStream(fileNameWithPath, false);; try { document.WriteTo(filestream); fos.Write(((MemoryStream)filestream).ToArray(), 0, (int)filestream.Length); fos.Close(); PdfPage.IsHtmlSet = true; } catch { PdfPage.IsHtmlSet = false; } }