FryPdf.PluginSdk
0.1.0
dotnet add package FryPdf.PluginSdk --version 0.1.0
NuGet\Install-Package FryPdf.PluginSdk -Version 0.1.0
<PackageReference Include="FryPdf.PluginSdk" Version="0.1.0" />
<PackageVersion Include="FryPdf.PluginSdk" Version="0.1.0" />
<PackageReference Include="FryPdf.PluginSdk" />
paket add FryPdf.PluginSdk --version 0.1.0
#r "nuget: FryPdf.PluginSdk, 0.1.0"
#:package FryPdf.PluginSdk@0.1.0
#addin nuget:?package=FryPdf.PluginSdk&version=0.1.0
#tool nuget:?package=FryPdf.PluginSdk&version=0.1.0
FryPdf.PluginSdk
The official, cross-platform Plugin SDK and core document processing engine for FryPDF — a high-performance, privacy-first PDF creation and editing studio built with .NET 10, SkiaSharp, UglyToad.PdfPig, and QuestPDF.
What is FryPdf.PluginSdk?
FryPdf.PluginSdk provides all contracts, extension descriptors, typed dispatch pipelines, and domain models required to develop third-party plugins for FryPDF.
Plugins run in isolated, collectible AssemblyLoadContext sandboxes and can extend every major application pillar without modifying host code:
- PDF Tools: Custom document operations (watermarking, redaction, converters, merge/split)
- Ribbon Actions & Tabs: Dynamic ribbon contributions and button capsules
- Contextual Sidebars & Overlays: Document telemetry, metadata inspectors, interactive panels
- Custom Canvas Elements: Custom visual and interactive elements
- AI & OCR Engines: Custom model connectors and text extractors
- Document Importers & Exporters: Custom format ingestion and rendering
Installation
Add the SDK package to your plugin project via NuGet:
dotnet add package FryPdf.PluginSdk
Or reference it in your .csproj:
<ItemGroup>
<PackageReference Include="FryPdf.PluginSdk" Version="1.0.0" PrivateAssets="all" />
</ItemGroup>
Important: Host assemblies are provided by the running FryPDF application at runtime. Always set
PrivateAssets="all"onFryPdf.PluginSdkin your plugin project to prevent shipping duplicate assemblies inside your.frypluginbundle.
Quickstart: Creating a Plugin
1. Implement IFryPlugin
using System;
using System.Threading;
using System.Threading.Tasks;
using PdfEditorApp.Core.Plugins;
using PdfEditorApp.Core.Plugins.Descriptors;
namespace MyAwesomePlugin;
public class MyWatermarkPlugin : IFryPlugin
{
public string Id => "com.example.watermark";
public string Name => "Quick Watermark";
public Version Version => new(1, 0, 0);
public Task ApplyAsync(IFryPluginContext ctx, CancellationToken ct = default)
{
// Register a tool descriptor
ctx.RegisterTool(new PdfToolDescriptor
{
Id = Id,
Name = Name,
Description = "Applies a custom watermark to every page",
Category = "OptimizeAndSecurity",
IconKind = "Watermark",
IconColorHex = "#0284C7"
});
// Register reversible teardown effects
ctx.RegisterEffect(() =>
{
// Cleanup on plugin unload
});
return Task.CompletedTask;
}
}
2. Define plugin.json Manifest
Add plugin.json in your plugin project root:
{
"id": "com.example.watermark",
"name": "Quick Watermark",
"version": "1.0.0",
"author": "Acme Tools",
"description": "Applies custom watermarks across all document pages.",
"category": "Tools",
"entryPoint": "MyAwesomePlugin.dll"
}
3. Package as .fryplugin
Plugins are packaged as .fryplugin zip archives containing your compiled plugin DLL, dependencies, and plugin.json. Users can install them directly into FryPDF via drag-and-drop or the built-in Plugin Manager.
Architecture Principles
- Inverted Capability Context (
IFryPluginContext): Plugins register and consume capabilities via a thread-safe context with zero static coupling. - Reversible Effects (
PluginScope): All side effects registered viactx.RegisterEffectare unwound in reverse order on plugin unload to eliminate memory leaks. - Directed Acyclic Graph (DAG) Solver: Dependencies declared via
RequiredServicesare topologically sorted and mounted deterministically. - Typed Dispatch Pipelines: Composable middleware pipelines (
Waterfall,Bail,Parallel,Serial,Emit) for document processing.
Resources & Documentation
- Project Repository: GitHub (codefrydev/frypdf)
- Plugin Development Guide: docs/EXTERNAL_PLUGIN_DEVELOPMENT_GUIDE.md
- Official Website: https://codefrydev.in/frypdf/
- License: MIT
| 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
- CommunityToolkit.Mvvm (>= 8.4.2)
- DocumentFormat.OpenXml (>= 3.5.1)
- LiveChartsCore.SkiaSharpView (>= 2.0.5)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.12)
- PdfPig (>= 0.1.16)
- PdfPig.Rendering.Skia (>= 0.1.16.4)
- PdfSharpCore (>= 1.3.67)
- QRCoder (>= 1.8.0)
- QuestPDF (>= 2026.8.0)
- Tabula (>= 1.0.1)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on FryPdf.PluginSdk:
| Package | Downloads |
|---|---|
|
FryPdf.Plugin.TicTacToe
Playable Tic-Tac-Toe shell overlay plugin for FryPDF |
|
|
FryPdf.Plugin.Chess
Playable Chess game shell overlay plugin for FryPDF (CPU vs User) |
GitHub repositories
This package is not used by any popular GitHub repositories.