Rmg.PdfPrinting 1.2.0

dotnet add package Rmg.PdfPrinting --version 1.2.0
NuGet\Install-Package Rmg.PdfPrinting -Version 1.2.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Rmg.PdfPrinting" Version="1.2.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Rmg.PdfPrinting --version 1.2.0
#r "nuget: Rmg.PdfPrinting, 1.2.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Rmg.PdfPrinting as a Cake Addin
#addin nuget:?package=Rmg.PdfPrinting&version=1.2.0

// Install Rmg.PdfPrinting as a Cake Tool
#tool nuget:?package=Rmg.PdfPrinting&version=1.2.0

C# PDF Printing

Nuget

API which uses Windows.Data.Pdf from C# to print a PDF file.

No third party apps required - no additional licenses. Only Windows.

PDF's are printed as vector. Text and fonts are preserved. Desktop and WinRT apps.

Key steps

  1. Ensure project specifies a windows version in csproj: <TargetFramework>net7.0-windows10.0.22621.0</TargetFramework>
  2. Add NuGet package Rmg.WinRTPdfPrinter
  3. Create a PdfPrinter and call Print
  4. There is no step 4

Example (Program.cs):

var pdfPrinter = new PdfPrinter();
await pdfPrinter.Print(printerName, pdfPath);

Convert to XPS

You can also use this to convert a PDF to XPS:

var pdfPrinter = new PdfPrinter();
await pdfPrinter.ConvertToXps("input.pdf", "output.xps");

Convert to Tiff

You can also use this to convert a PDF to Tiff:

var pdfPrinter = new PdfPrinter();
await pdfPrinter.ConvertToTiff("input.pdf", "output.tiff");

By default, a color, opaque, 300dpi, ZIP compressed multipage tiff will result. These settings can be adjusted with TiffConversionOptions:

// Produce a fax-style 1bpp TIFF
await pdfPrinter.ConvertToTiff("input.pdf", "output.tiff", new (Dpi: 150, ColorMode: TiffColorMode.BlackAndWhite);

// Produce a transparent background RGBA tiff
await pdfPrinter.ConvertToTiff("input.pdf", "output.tiff, new (FillBackground: false));

Convert to PDF/JPEG/GIF/etc...

You don't need this library if you are only working with a single page at a time. The PdfPage.RenderToStreamAsync method allows you to specify a bitmap encoder and rects:

var pdfFile = await StorageFile.GetFileFromPathAsync(@"C:\drop\example.pdf");
var pdfDoc = await PdfDocument.LoadFromFileAsync(pdfFile);
var outDir = await StorageFolder.GetFolderFromPathAsync(@"C:\drop\");

for (uint pageIndex = 0; pageIndex < pdfDoc.PageCount; pageIndex++)
{
    var pdfPage = pdfDoc.GetPage(pageIndex);
    
    var pngFile = await outDir.CreateFileAsync($"page-{pageIndex}.png", CreationCollisionOption.ReplaceExisting);
    using var pngStream = await pngFile.OpenAsync(FileAccessMode.ReadWrite);
    var options = new PdfPageRenderOptions();
    options.BitmapEncoderId = BitmapEncoder.PngEncoderId;
    // optionally specify source rectangle or dimensions
    await pdfPage.RenderToStreamAsync(pngStream, options);
}

Future possibilites

  • WPF viewer control
  • netframework support
  • Earlier revisions of netcore
Product Compatible and additional computed target framework versions.
.NET net7.0-windows10.0.22621 is compatible.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net7.0-windows10.0.22621

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.2.0 138 2/26/2024
1.1.0 93 2/24/2024
1.0.0 98 2/14/2024