mini-software/MiniPdf

Lightweight Office-to-PDF libraries and command-line tools for Rust, .NET, Java, Python, JS, Python.

483

stars

470

commits

C#

primary language

Sep 11, 2026

updated

mini-software.github.io/MiniPdf/
excel
office
pdf
word

README

MiniPdf

Lightweight Office-to-PDF libraries and command-line tools for .NET, Rust, Java, Python, Node.js, and Go.

NuGet crates.io Maven Central PyPI npm Go Reference GitHub stars DOI License

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Italiano | Français

Online Demo · Releases · Report an issue

Your star or donation helps sustain the project.

🤝 Looking for co-developers: Quick contribution

MiniPdf converts Office documents directly to PDF without Microsoft Office, LibreOffice, Adobe Acrobat, or COM automation at runtime. Choose the implementation that matches your project.

Choose an implementation

ImplementationInputsInterfacesMaturityDocumentationVisual results
.NETXLSX, DOCX, PPTXLibrary, CLI, Native AOT binariesStable.NET guideXLSX
DOCX
PPTX
RustXLSX, DOCX, PPTXCrate, CLIExperimentalRust guideXLSX
DOCX
JavaXLSX, DOCXLibrary, CLIExperimentalJava sourceXLSX
PythonDOCXPackage, CLIExperimentalPython guideXLSX
Node.jsXLSX, DOCX, PPTXNative packageExperimentalNode.js guideXLSX
GoXLSX, DOCX, PPTXPackage, CLIExperimentalGo guideXLSX

Quick start

.NET

dotnet add package MiniPdf
using MiniSoftware;

MiniPdf.ConvertToPdf("report.docx", "report.pdf");

Prefer a command-line tool?

dotnet tool install --global MiniPdf.Cli
minipdf report.docx -o report.pdf

The .NET guide covers conversion, custom fonts, CLI options, and deployment.

Rust

cargo add minipdf
cargo install minipdf-cli
minipdf::convert_to_pdf("report.docx", "report.pdf")?;
minipdf report.docx -o report.pdf

The Rust guide documents the crate API, CLI, supported features, known gaps, and development workflow.

Java

<dependency>
	<groupId>io.github.mini-software</groupId>
	<artifactId>minipdf</artifactId>
	<version>0.1.4</version>
</dependency>

Maven group IDs may contain hyphens, but Java package names may not. Therefore, the dependency uses io.github.mini-software, while imports use io.github.minisoftware.minipdf.

import io.github.minisoftware.minipdf.MiniPdf;
import java.nio.file.Path;

MiniPdf.convertToPdf(Path.of("report.docx"), Path.of("report.pdf"));

Python

pip install minipdf
import minipdf

minipdf.convert_to_pdf("report.docx", "report.pdf")

The Python guide lists the current DOCX feature scope and CLI options.

Node.js

npm install minipdf
const minipdf = require('minipdf')

minipdf.convertToPdf('report.docx', 'report.pdf')

The Node.js guide covers in-memory conversion, page sizing, font registration, and supported native platforms.

Go

go get github.com/mini-software/MiniPdf/minipdf-go@latest
import minipdf "github.com/mini-software/MiniPdf/minipdf-go"

if err := minipdf.ConvertToPDF("report.docx", "report.pdf"); err != nil {
	panic(err)
}

The Go guide documents the package, native CLI, current rendering scope, and release tags.

Why MiniPdf

  • No office suite required: conversion runs inside your application or CLI.
  • Small deployment surface: minimal dependencies and no external process.
  • Server and CI friendly: works in containers, cloud services, and pipelines.
  • Multiple language options: use MiniPdf from .NET, Rust, Java, Python, Node.js, or Go.
  • Native command-line options: available for .NET, Rust, Java, Python, and Go.
  • Open development: Apache 2.0 licensed with reproducible visual benchmarks.

MiniPdf targets practical document conversion, not complete Microsoft Office layout compatibility. Complex templates may render differently; use the online demo or benchmark reports to evaluate representative files.

Quick contribution

Open a clean fork or clone in any coding agent, then paste this prompt into the agent chat:

Read CONTRIBUTING.md and run the MiniPdf contribution loop from start to finish. Detect the installed supported language toolchains, randomly choose one available implementation, diagnose and improve the automatically selected benchmark cases, validate all changes, and prepare the pull request. Do not commit, push, fork, or open a pull request without my explicit approval.

Project resources

ResourceDescription
Online demoTry conversion in a browser
.NET documentationStable library and CLI usage
Rust documentationExperimental crate and CLI usage
Java implementationExperimental Maven library and CLI source
Python documentationExperimental package and CLI usage
Node.js documentationExperimental native package usage
Go documentationExperimental package and CLI usage
.NET XLSX benchmarkVisual comparison results for spreadsheets
.NET DOCX benchmarkVisual comparison results for documents
Rust XLSX benchmarkRust spreadsheet visual comparison results
Rust DOCX benchmarkRust document visual comparison results
Rust benchmark workflowGenerate fixture coverage and comparison reports
Community governanceDecisions, roles, voting, and maintainer selection
RoadmapProject scope, implementation status, and current priorities
SecurityPrivate vulnerability reporting and supported versions
ContributingDevelopment setup, tests, reviews, and provenance requirements
GitHub releasesPackages and standalone binaries
IssuesBugs, compatibility reports, and feature requests

License

Apache License 2.0. Commercial use is welcome; retain the required notices and attribution.

Contributors

shps951023

463 commits

EnzoSam

2 commits

OnlyMeNsPt

2 commits

dks50217

1 commits

mini-software/MiniPdf

Lightweight Office-to-PDF libraries and command-line tools for Rust, .NET, Java, Python, JS, Python.

483

stars

470

commits

C#

primary language

Sep 11, 2026

updated

mini-software.github.io/MiniPdf/
excel
office
pdf
word

README

MiniPdf

Lightweight Office-to-PDF libraries and command-line tools for .NET, Rust, Java, Python, Node.js, and Go.

NuGet crates.io Maven Central PyPI npm Go Reference GitHub stars DOI License

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Italiano | Français

Online Demo · Releases · Report an issue

Your star or donation helps sustain the project.

🤝 Looking for co-developers: Quick contribution

MiniPdf converts Office documents directly to PDF without Microsoft Office, LibreOffice, Adobe Acrobat, or COM automation at runtime. Choose the implementation that matches your project.

Choose an implementation

ImplementationInputsInterfacesMaturityDocumentationVisual results
.NETXLSX, DOCX, PPTXLibrary, CLI, Native AOT binariesStable.NET guideXLSX
DOCX
PPTX
RustXLSX, DOCX, PPTXCrate, CLIExperimentalRust guideXLSX
DOCX
JavaXLSX, DOCXLibrary, CLIExperimentalJava sourceXLSX
PythonDOCXPackage, CLIExperimentalPython guideXLSX
Node.jsXLSX, DOCX, PPTXNative packageExperimentalNode.js guideXLSX
GoXLSX, DOCX, PPTXPackage, CLIExperimentalGo guideXLSX

Quick start

.NET

dotnet add package MiniPdf
using MiniSoftware;

MiniPdf.ConvertToPdf("report.docx", "report.pdf");

Prefer a command-line tool?

dotnet tool install --global MiniPdf.Cli
minipdf report.docx -o report.pdf

The .NET guide covers conversion, custom fonts, CLI options, and deployment.

Rust

cargo add minipdf
cargo install minipdf-cli
minipdf::convert_to_pdf("report.docx", "report.pdf")?;
minipdf report.docx -o report.pdf

The Rust guide documents the crate API, CLI, supported features, known gaps, and development workflow.

Java

<dependency>
	<groupId>io.github.mini-software</groupId>
	<artifactId>minipdf</artifactId>
	<version>0.1.4</version>
</dependency>

Maven group IDs may contain hyphens, but Java package names may not. Therefore, the dependency uses io.github.mini-software, while imports use io.github.minisoftware.minipdf.

import io.github.minisoftware.minipdf.MiniPdf;
import java.nio.file.Path;

MiniPdf.convertToPdf(Path.of("report.docx"), Path.of("report.pdf"));

Python

pip install minipdf
import minipdf

minipdf.convert_to_pdf("report.docx", "report.pdf")

The Python guide lists the current DOCX feature scope and CLI options.

Node.js

npm install minipdf
const minipdf = require('minipdf')

minipdf.convertToPdf('report.docx', 'report.pdf')

The Node.js guide covers in-memory conversion, page sizing, font registration, and supported native platforms.

Go

go get github.com/mini-software/MiniPdf/minipdf-go@latest
import minipdf "github.com/mini-software/MiniPdf/minipdf-go"

if err := minipdf.ConvertToPDF("report.docx", "report.pdf"); err != nil {
	panic(err)
}

The Go guide documents the package, native CLI, current rendering scope, and release tags.

Why MiniPdf

  • No office suite required: conversion runs inside your application or CLI.
  • Small deployment surface: minimal dependencies and no external process.
  • Server and CI friendly: works in containers, cloud services, and pipelines.
  • Multiple language options: use MiniPdf from .NET, Rust, Java, Python, Node.js, or Go.
  • Native command-line options: available for .NET, Rust, Java, Python, and Go.
  • Open development: Apache 2.0 licensed with reproducible visual benchmarks.

MiniPdf targets practical document conversion, not complete Microsoft Office layout compatibility. Complex templates may render differently; use the online demo or benchmark reports to evaluate representative files.

Quick contribution

Open a clean fork or clone in any coding agent, then paste this prompt into the agent chat:

Read CONTRIBUTING.md and run the MiniPdf contribution loop from start to finish. Detect the installed supported language toolchains, randomly choose one available implementation, diagnose and improve the automatically selected benchmark cases, validate all changes, and prepare the pull request. Do not commit, push, fork, or open a pull request without my explicit approval.

Project resources

ResourceDescription
Online demoTry conversion in a browser
.NET documentationStable library and CLI usage
Rust documentationExperimental crate and CLI usage
Java implementationExperimental Maven library and CLI source
Python documentationExperimental package and CLI usage
Node.js documentationExperimental native package usage
Go documentationExperimental package and CLI usage
.NET XLSX benchmarkVisual comparison results for spreadsheets
.NET DOCX benchmarkVisual comparison results for documents
Rust XLSX benchmarkRust spreadsheet visual comparison results
Rust DOCX benchmarkRust document visual comparison results
Rust benchmark workflowGenerate fixture coverage and comparison reports
Community governanceDecisions, roles, voting, and maintainer selection
RoadmapProject scope, implementation status, and current priorities
SecurityPrivate vulnerability reporting and supported versions
ContributingDevelopment setup, tests, reviews, and provenance requirements
GitHub releasesPackages and standalone binaries
IssuesBugs, compatibility reports, and feature requests

License

Apache License 2.0. Commercial use is welcome; retain the required notices and attribution.

Contributors

shps951023

463 commits

EnzoSam

2 commits

OnlyMeNsPt

2 commits

dks50217

1 commits

Languages

C#

65.1%

Rust

19.2%

Java

5.8%

HTML

3.0%

PowerShell

2.6%

Python

1.5%

Go

1.3%