This example show the 3 easy steps to go from a WPF Visual to a PDF file using the NiPDF Converter functionality.
This is a great way to generate PDF files from .NET using Microsoft's WPF drawing APIs.
The following NiPDF function is used: NiXPS.Converter.XpsToPdf()
Source listing:
using System;
using System.Windows;
using System.Windows.Media;
using System.IO.Packaging;
using System.IO;
using System.Printing;
using System.Windows.Xps.Packaging;
using System.Windows.Xps;
partial class Test
{
public static void example0001_GeneratePDF(string pIn, string pOut)
{
// STEP 1: Create or get a WPF Visual
DrawingVisual visual = new DrawingVisual();
{
DrawingContext dc = visual.RenderOpen();
Pen bluePen = new Pen(Brushes.Blue, 1);
dc.DrawRectangle(Brushes.Yellow, bluePen, new Rect(10, 10, 800, 1000));
Brush pinkBrush = new SolidColorBrush(Color.FromArgb(128, 255, 0, 255));
Pen blackPen = new Pen(Brushes.Black, 1);
dc.DrawEllipse(pinkBrush, blackPen, new Point(400, 500), 300, 200);
dc.Close();
}
// STEP 2: Convert this WPF Visual to an XPS Document
MemoryStream lMemoryStream = new MemoryStream();
{
Package package = Package.Open(lMemoryStream, FileMode.Create);
XpsDocument doc = new XpsDocument(package);
XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc);
writer.Write(visual);
doc.Close();
package.Close();
}
// STEP 3: Convert this XPS Document to a PDF file
MemoryStream lOutStream = new MemoryStream();
NiXPS.Converter.XpsToPdf(lMemoryStream, lOutStream);
File.WriteAllBytes(pOut, lOutStream.ToArray());
}
}
(Required assembly references: NiPDF, PresentationCore, PresentationFramework, ReachFramework, System.Printing, WindowsBase.)