How to Convert XPS to Bitmap in C#
By FoxLearn 7/18/2024 3:47:15 AM 4.37K
What is an XPS file?
It stands for XML Paper Specification and is basically an electronic representation of digital documents based on XML.
Creating a new Windows Forms Application project, then open your form designer.
Next, Drag and drop the TextBox, Label, and Button from the Visual Studio toolbox into your form designer.
You can design as simple UI allows you to select the xps file, then convert it to a bitmap file in c# as shown below.
How to convert XPS file to Bitmap in C#
Adding a click event handler to the Browse button allows you to select the xps document file.
private void btnBrowse_Click(object sender, EventArgs e) { using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "XPS Documents|*.xps" }) { if (ofd.ShowDialog() == DialogResult.OK) txtFileName.Text = ofd.FileName; } }
You need to add references to the libraries below
- WindowsBase.dll
- ReachFramework.dll
- PresentationFramework.dll
- PresentationCore.dll
then add include the namespace below to your form.
using System; using System.IO; using System.Windows.Documents; using System.Windows.Forms; using System.Windows.Media.Imaging; using System.Windows.Xps.Packaging;
You need to create a ConvertXpsToBitmap method that allows you to convert xps documents into bitmap files in c#.
// c# convert xps to bitmap public void ConvertXpsToBitmap(string fileName) { // Load XPS document using (XpsDocument xpsDocument = new XpsDocument(fileName, FileAccess.Read)) { // Get FixedDocumentSequence from XPS document FixedDocumentSequence fixedDocumentSequence = xpsDocument.GetFixedDocumentSequence(); for (int pageCount = 0; pageCount < fixedDocumentSequence.DocumentPaginator.PageCount; ++pageCount) { // Create a FixedDocumentPaginator DocumentPage documentPage = fixedDocumentSequence.DocumentPaginator.GetPage(pageCount); // Render the paginator to a bitmap RenderTargetBitmap renderTarget = new RenderTargetBitmap((int)documentPage.Size.Width, (int)documentPage.Size.Height, 96, 96, System.Windows.Media.PixelFormats.Default); renderTarget.Render(documentPage.Visual); BitmapEncoder bitmapEncoder = new BmpBitmapEncoder(); bitmapEncoder.Frames.Add(BitmapFrame.Create(renderTarget)); string file = Application.StartupPath + "\\xps_page" + pageCount + ".bmp"; using (FileStream fileStream = new FileStream(file, FileMode.Create, FileAccess.Write)) { bitmapEncoder.Save(fileStream); } } } }
We will convert each page to a bitmap file, then save it to the debug directory. It's the same directory as your application.
Finally, Add the click event handler to the Convert button allows you to convert xps into an image file in c#.
private void btnConvert_Click(object sender, EventArgs e) { ConvertXpsToBitmap(txtFileName.Text); }