Pysar.Viewer 0.1.63

dotnet add package Pysar.Viewer --version 0.1.63
                    
NuGet\Install-Package Pysar.Viewer -Version 0.1.63
                    
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="Pysar.Viewer" Version="0.1.63" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Pysar.Viewer" Version="0.1.63" />
                    
Directory.Packages.props
<PackageReference Include="Pysar.Viewer" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Pysar.Viewer --version 0.1.63
                    
#r "nuget: Pysar.Viewer, 0.1.63"
                    
#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.
#:package Pysar.Viewer@0.1.63
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Pysar.Viewer&version=0.1.63
                    
Install as a Cake Addin
#tool nuget:?package=Pysar.Viewer&version=0.1.63
                    
Install as a Cake Tool

Pysar.Viewer

Framework-neutral viewer logic for Pysar, a cross-platform report engine for .NET: page geometry, zoom, tile planning and the tile cache. It depends on the core Pysar package and is the shared core behind every platform-specific ReportView control.

A built report renders as scrollable, zoomable pages, rasterised one visible tile at a time. Only the visible region is rasterised, so memory follows the size of the viewport rather than the zoom level.

This package is not referenced directly — it arrives transitively with a platform package, which supplies the actual UI control:

Platform package Control
Pysar.Maui .NET MAUI ReportView
Pysar.Avalonia Avalonia ReportView
Pysar.Wpf WPF ReportView (Windows only)
Pysar.Blazor Blazor <ReportView> component

The properties are the same on every platform. PageBorderColor and PageBorderThickness frame each page, which is what tells a page from the surface behind it when both are light; the line is drawn outside the paper, so the report itself is never covered by it. PageSpacing is the gap between two pages, in device independent units — it does not scale with the zoom, so the gap looks the same however far in the reader is.

A fit mode resolves to a factor only the control knows, so bind EffectiveZoom to show the percentage: Zoom holds what was asked for, not what the view settled on.

Documentation

License

MIT — see LICENSE.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (5)

Showing the top 5 NuGet packages that depend on Pysar.Viewer:

Package Downloads
Pysar.Blazor

A Blazor WebAssembly report viewer for Pysar.

Pysar.Wpf

WPF integration for Pysar: application asset access, font registration, scrollable zoomable report view, and printing.

Pysar.Maui

.NET MAUI integration for Pysar: application-package asset access, font registration, PDF export and sharing.

Pysar.Avalonia

Avalonia integration for Pysar: application asset access, font registration and a scrollable, zoomable report view.

Pysar.Uno

Uno Platform integration for Pysar: application asset access, font registration, a scrollable, zoomable report view, PDF printing and sharing.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.63 72 10/1/2026
0.1.56 129 9/20/2026
0.1.53 115 9/20/2026
0.1.46 127 9/18/2026
0.1.44 124 9/16/2026
0.1.41 124 9/15/2026
0.1.38 128 9/14/2026
0.1.34 116 9/13/2026
0.1.31 123 9/11/2026
0.1.24 128 9/6/2026
0.1.10 126 8/30/2026
0.1.0 124 8/30/2026

## Avalonia fonts

**Report fonts can come from Avalonia `FontManager`.**
`UsePysar` installs a typeface fallback before your configuration. The family string in the report must be the Avalonia `FontFamily` string — `fonts:Inter#Inter` after `WithInterFont`, or `avares://MyApp/Fonts#Ubuntu` for a resource folder — not a file path. A bare name is a system-font lookup; if `TryGetGlyphTypeface` substitutes Helvetica, Pysar treats that as a miss.

`AddFont` still wins. A library `ReportAsset` still needs one `AddFont`: the file is not copied into the head, and `FontManager` does not see it. A XAML `FontFamily` resource is not a registration. Styles stay `Normal`, `Bold`, `Italic` and `BoldItalic`. This bridge is Avalonia only. Console, the design-time preview, MAUI, WPF and Uno keep `AddFont`.

## PDF export

**PDF/A-2b is an option of PDF, not another format.**
Pass `new PdfExportOptions { PdfA = true }` to `SavePdfAsync`, `RenderToPdfAsync`, `RenderToPdfBytesAsync`, or `IReportExportService.ExportAsync`. Skia writes the archival document setup: XMP `pdfaid` identification, a document UUID, and an sRGB output intent. It does not validate the file. A font Skia cannot embed still fails a checker, and the UUID makes those bytes non-reproducible. Existing overloads are unchanged.

## Images

**SVG is drawn from the bytes, not only from a `.svg` path.**
A stream or embedded source whose bytes start with `<svg` (optional XML declaration) is rendered as SVG. A decode or parse failure is recorded on the image cache, so the same bad bytes are not decoded again. Fixes #23.

## Rendering

**A built report may be rendered more than once, only sequentially.**
PDF and then page bitmaps, or a retry of the same export, is supported. Do not render one instance concurrently. `PageNumber` and `PageCount` are scratch written during the pass, and `OnPageChanged` runs again on every render.

## Uno

**Android report pages no longer depend on OpenGL ES.**
`UsePysar` sets `UseOpenGLOnSkiaAndroid` to false before the window is created. OpenGL ES draws image textures as opaque black, which hid every report page.

## Internal

- Host startup (Avalonia, MAUI, WPF, Uno) shares one installation sequence, `PysarInstallation`.
- `InternalsVisibleTo` for `Pysar.Avalonia` and `Pysar.Avalonia.Tests`.

**Full changelog:** v0.1.56...HEAD