Pysar.Viewer
0.1.38
See the version list below for details.
dotnet add package Pysar.Viewer --version 0.1.38
NuGet\Install-Package Pysar.Viewer -Version 0.1.38
<PackageReference Include="Pysar.Viewer" Version="0.1.38" />
<PackageVersion Include="Pysar.Viewer" Version="0.1.38" />
<PackageReference Include="Pysar.Viewer" />
paket add Pysar.Viewer --version 0.1.38
#r "nuget: Pysar.Viewer, 0.1.38"
#:package Pysar.Viewer@0.1.38
#addin nuget:?package=Pysar.Viewer&version=0.1.38
#tool nuget:?package=Pysar.Viewer&version=0.1.38
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 | Versions 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. |
-
net10.0
- HarfBuzzSharp (>= 14.2.1.1)
- HarfBuzzSharp.NativeAssets.Linux (>= 14.2.1.1)
- HarfBuzzSharp.NativeAssets.macOS (>= 14.2.1.1)
- HarfBuzzSharp.NativeAssets.Win32 (>= 14.2.1.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.11)
- Pysar (>= 0.1.38)
- SkiaSharp (>= 4.151.2)
- SkiaSharp.NativeAssets.Linux (>= 4.151.2)
- SkiaSharp.NativeAssets.macOS (>= 4.151.2)
- SkiaSharp.NativeAssets.Win32 (>= 4.151.2)
- Svg.Skia (>= 5.2.3)
NuGet packages (5)
Showing the top 5 NuGet packages that depend on Pysar.Viewer:
| Package | Downloads |
|---|---|
|
Pysar.Maui
.NET MAUI integration for Pysar: application-package asset access, font registration, PDF export and sharing. |
|
|
Pysar.Wpf
WPF integration for Pysar: application asset access, font registration, scrollable zoomable report view, and printing. |
|
|
Pysar.Blazor
A Blazor WebAssembly report viewer for Pysar. |
|
|
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.
### Added
- `Pysar.Uno`: a new platform package for [Uno Platform](https://platform.uno/). One `net10.0` target covers every Uno Skia host - Desktop, WebAssembly, Android and iOS - and it brings the same `ReportView` the other platform packages do: a scrollable, zoomable viewer that rasterises only the visible region, so memory follows the viewport rather than the zoom level. Built against Uno 6.7.
- `PysarUno.Use(assembly, configure)` / `PysarUno.UseAsync(...)` (`Pysar.Uno`): registration for an Uno application, called from `OnLaunched`. A static entry point rather than a service registration, because an Uno application has no service collection of its own unless it also uses Uno.Extensions. Returns the handler, and exposes the shared `PysarUno.Renderer` and `PysarUno.ExportService`.
- `UnoReportPlatformHandler` and `UnoAssetFileSystem` (`Pysar.Uno`): report assets are read from embedded resources whose `LogicalName` is the path the report asks for. Embedded rather than `ms-appx:///` because font registration, `ResourceDictionary` sources and image loading all read synchronously, and blocking on Uno's asynchronous `StorageFile` deadlocks the single-threaded WebAssembly host. `UnoAssetFileSystem.PreloadAsync` fetches `Content`-packaged assets once at startup for applications that would rather keep them that way.
- `UnoReportPrinter` (`Pysar.Uno`): desktop printing through the same vector PDF pipeline as export - the macOS Print panel via PDFKit, the shell print verb on Windows, the default viewer on Linux. Android, iOS and WebAssembly throw `PlatformNotSupportedException`; produce the bytes through `PysarUno.ExportService` and share or download them from the application.
- `MacPinchMonitor` and `MacMagnifyEventArgs` (`Pysar.Core.Platform`, in `Pysar`): an AppKit local event monitor for `NSEventTypeMagnify`, now public and shared by every host that needs it. No user-interface framework tested surfaces a trackpad pinch as a gesture on macOS - it arrives as plain wheel deltas indistinguishable from a two-finger scroll - so a trackpad zoom has to come from AppKit directly. `Start`/`Stop` are no-ops on every other platform.
### Changed
- `MacPinchMonitor` moved from `Pysar.Avalonia`, where it was internal, into `Pysar`. Behaviour is unchanged for Avalonia applications; the type is simply no longer duplicated per host. It is plain P/Invoke against libobjc with no dependency on any user-interface framework, which is why it belongs beside `MacOsPdfPrint` in the core package.
- HarfBuzzSharp moves from 14.2.0 to 14.2.1.1 across every package, managed wrapper and native assets together. Required by Uno, and applied as a family because a split between the managed wrapper and its native assets is a startup crash rather than a build error.
- Docs: the quick start and README now cover Uno alongside the other platforms, including the two places it deviates - registration is `PysarUno.Use` rather than `UsePysar`/`AddPysar`, and assets are embedded resources rather than package URIs.
### Notes
- `Pysar.Uno 0.1.35-preview`, published earlier to the internal feed, is superseded and should not be used. It required an `Uno.WinUI` prerelease that no released `Uno.Sdk` provides, so no standard Uno application could consume it. This release targets stable Uno 6.7 instead and ships as an ordinary stable package.
- The Uno report view has been exercised on macOS Desktop - loading, pagination, zoom modes, and trackpad pinch. Its other hosts (WebAssembly, Android, iOS) build from the same single target but have not yet been run.