SlimLO 0.1.9
See the version list below for details.
dotnet add package SlimLO --version 0.1.9
NuGet\Install-Package SlimLO -Version 0.1.9
<PackageReference Include="SlimLO" Version="0.1.9" />
<PackageVersion Include="SlimLO" Version="0.1.9" />
<PackageReference Include="SlimLO" />
paket add SlimLO --version 0.1.9
#r "nuget: SlimLO, 0.1.9"
#:package SlimLO@0.1.9
#addin nuget:?package=SlimLO&version=0.1.9
#tool nuget:?package=SlimLO&version=0.1.9
SlimLO
Managed .NET library for high-fidelity DOCX-to-PDF conversion.
SlimLO provides a thread-safe, async API backed by a minimal, purpose-built LibreOffice engine. Each conversion runs in an isolated native worker process — if LibreOffice crashes on a malformed document, only the worker is killed; your .NET process is never affected.
Features
- Process isolation — crash-resilient, no shared state between conversions
- Thread-safe —
MaxWorkers > 1enables true parallel conversion across separate OS processes - Multiple conversion modes — file-path (zero-copy), byte buffer (zero disk I/O), and stream-to-stream
- Font diagnostics — font substitution warnings surfaced as structured
ConversionDiagnosticobjects - PDF options — PDF/A (1a, 2a, 3a), tagged PDF, JPEG quality, DPI, page ranges
- Cross-platform — Linux x64/arm64, macOS arm64/x64, Windows x64/ARM64
- Wide .NET support — targets
netstandard2.0(.NET Framework 4.6.1+) andnet8.0
Installation
Install the managed SDK and the native assets package for your target platform:
<PackageReference Include="SlimLO" Version="0.1.0" />
<PackageReference Include="SlimLO.NativeAssets.Linux" Version="0.1.0"
Condition="$([MSBuild]::IsOSPlatform('Linux'))" />
<PackageReference Include="SlimLO.NativeAssets.macOS" Version="0.1.0"
Condition="$([MSBuild]::IsOSPlatform('OSX'))" />
<PackageReference Include="SlimLO.NativeAssets.Windows" Version="0.1.0"
Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
Quick Start
using SlimLO;
await using var converter = PdfConverter.Create();
var result = await converter.ConvertAsync("input.docx", "output.pdf");
result.ThrowIfFailed();
Advanced Usage
await using var converter = PdfConverter.Create(new PdfConverterOptions
{
FontDirectories = new[] { "/app/fonts" },
MaxWorkers = 2,
MaxConversionsPerWorker = 100,
ConversionTimeout = TimeSpan.FromMinutes(5),
WarmUp = true
});
// File to file
var result = await converter.ConvertAsync("input.docx", "output.pdf");
// Byte buffer (zero disk I/O)
byte[] docxBytes = await File.ReadAllBytesAsync("input.docx");
var bufResult = await converter.ConvertAsync(docxBytes.AsMemory(), DocumentFormat.Docx);
await File.WriteAllBytesAsync("output.pdf", bufResult.Data!);
// Stream to stream (ideal for ASP.NET)
var streamResult = await converter.ConvertAsync(
Request.Body, Response.Body, DocumentFormat.Docx);
// PDF/A output with tagged PDF
var result2 = await converter.ConvertAsync("input.docx", "output.pdf",
new ConversionOptions { PdfVersion = PdfVersion.PdfA2, TaggedPdf = true });
Platform Requirements
| Platform | Requirements |
|---|---|
| Linux | System libraries: libfontconfig1, libfreetype6, libcairo2, libxml2, libxslt1.1, libicu, libnss3 |
| macOS | No additional dependencies |
| Windows | Visual C++ Redistributable 2022 |
Architecture
Each conversion runs in a separate slimlo_worker native process that hosts a minimal LibreOffice engine (libmergedlo). The managed SDK communicates with workers via length-prefixed JSON over stdin/stdout pipes. A WorkerPool manages worker lifecycle, round-robin dispatch, and automatic crash recovery.
License
MPL-2.0. See GitHub repository for full details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Bcl.AsyncInterfaces (>= 8.0.0)
- System.Memory (>= 4.5.5)
- System.Text.Json (>= 8.0.5)
- System.Threading.Tasks.Extensions (>= 4.5.4)
-
net8.0
- 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.