How to create a PDF and load to PdfViewer without saving to disk?
New PDF documents can be created from scratch using the PdfDocument class and save it into a stream, and the stream can be loaded into PdfViewer. So that, saving the document in the disk can be avoided.
Portable/.NET Standard
Add PdfViewer to the MainPage of the application.
XAML
<Grid x:Name="pdfViewGrid"> <syncfusion:SfPdfViewer x:Name="pdfViewerControl" /> </Grid>
Add a method named “CreateNewPDF” with return type Stream in the code behind of the MainPage. In this method create a PdfDocument instance, set its page size, add a new page to it, and draw the string “Hello World!” on the page. Now, save this PdfDocument instance to a stream and return this stream.
C#
private Stream CreateNewPDF() { MemoryStream memoryStream = new MemoryStream(); //Create a new PDF document PdfDocument document = new PdfDocument(); // Set the page size document.PageSettings.Size = PdfPageSize.A4; //Add a page to the document PdfPage page = document.Pages.Add(); //Create PDF graphics for the page PdfGraphics graphics = page.Graphics; //Set the font PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20); //Draw the text graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0)); //Save the document document.Save(memoryStream); //Close the document document.Close(true); if (memoryStream.CanSeek) memoryStream.Position = 0; return memoryStream; }
The previous example illustrates drawing a simple string on a single page PDF. Refer to the following documentation for creating PDF with more pages and different types of contents such as text, images, tables and more.
https://help.syncfusion.com/file-formats/pdf/working-with-document
In the constructor of the MainPage, call the CreateNewPDF method and load the acquired stream into the PdfViewer.
C#
public MainPage() { InitializeComponent(); Stream fileStream = CreateNewPDF(); pdfViewerControl.LoadDocument(fileStream); }
Sample link:
https://www.syncfusion.com/downloads/support/directtrac/general/ze/CreateAndLoadDemo1314775267