Renderizza fogli Excel indicati per nome o indice 1-based
July 19, 2026 · View on GitHub
Una libreria .NET minimale e leggera per convertire file Office in PDF.
👉 Demo online — Provalo nel browser, nessuna installazione richiesta.
⚠️ A causa dei font limitati disponibili nel browser, i risultati del rendering potrebbero non essere ottimali. Per la migliore esperienza, si consiglia di testare localmente sul proprio computer.
Funzionalità
- Excel → PDF — Converte file
.xlsxin PDF - Word → PDF — Converte file
.docxin PDF - PowerPoint → PDF — Converte file
.pptxin PDF - Unione PDF con segnalibri — Unisce piu PDF e aggiunge segnalibri di primo livello al risultato
- Dipendenze minime — Design leggero, utilizza quasi esclusivamente le API .NET integrate
- Pronto per il serverless — Nessun COM, nessuna installazione di Office, nessun Adobe Acrobat — funziona ovunque .NET funzioni
- Native AOT — Binari standalone precompilati per Windows / Linux / macOS; nessun runtime .NET richiesto
- Output PDF 1.4 valido
- 100% open-source e gratuito — Licenza Apache 2.0, uso commerciale libero; basta mantenere l'attribuzione. PR e contributi sono benvenuti!
- Grafici — Attualmente non ben supportati
Nota: MiniPdf attualmente gestisce solo le conversioni di base. Documenti Office complessi o altamente personalizzati potrebbero non essere convertiti perfettamente. Se riscontri problemi di compatibilità, apri una Issue o invia una Pull Request — i contributi sono molto graditi!
Riferimenti
- Trained small LLM by
Apache POI+LibreOffice - AI development by
GitHub Copilot+Claude Code
Iniziare
Installazione tramite NuGet
dotnet add package MiniPdf
Utilizzo
using MiniSoftware;
// Excel in PDF
MiniPdf.ConvertToPdf("data.xlsx", "output.pdf");
// Word in PDF
MiniPdf.ConvertToPdf("report.docx", "output.pdf");
// PowerPoint in PDF
MiniPdf.ConvertToPdf("slides.pptx", "output.pdf");
// Da file a array di byte
byte[] pdfBytes = MiniPdf.ConvertToPdf("data.xlsx");
// Renderizza i fogli Excel indicati per nome o indice 1-based (null renderizza tutti i fogli)
MiniPdf.ConvertToPdf("data.xlsx", "selected.pdf", sheets: new[] { "Summary", "Details" });
MiniPdf.ConvertToPdf("data.xlsx", "selected.pdf", sheetIndexes: new[] { 1, 3 });
// Comprimi e regola il layout di fogli Excel grandi o larghi
MiniPdf.ConvertToPdf("data.xlsx", "compact.pdf", new MiniPdfConversionOptions
{
Compress = true,
FitToPage = true,
Landscape = true,
PrintScale = 70,
RowsPerPage = 80,
});
// Da stream a array di byte
using var stream = File.OpenRead("data.xlsx");
byte[] pdfBytes = MiniPdf.ConvertToPdf(stream);
// Unisci PDF e aggiungi segnalibri
MiniPdf.MergePdf(new[] { "cover.pdf", "body.pdf" }, "merged.pdf", new PdfMergeOptions
{
BookmarkTitles = new[] { "Cover", "Body" },
Bookmarks = new[] { new PdfBookmark("Body page 2", 2) },
});
Utilizzo dell'unione PDF
Unire file
using MiniSoftware;
MiniPdf.MergePdf(
new[] { "cover.pdf", "chapter-1.pdf", "chapter-2.pdf" },
"book.pdf");
L'ordine di input viene mantenuto, quindi le pagine di cover.pdf vengono prima, seguite da chapter-1.pdf e poi da chapter-2.pdf.
Aggiungere un segnalibro per ogni PDF sorgente
Usa BookmarkTitles quando ogni PDF di input deve diventare un segnalibro di primo livello. Il numero di titoli deve corrispondere al numero di PDF in input.
MiniPdf.MergePdf(
new[] { "cover.pdf", "chapter-1.pdf", "chapter-2.pdf" },
"book-with-bookmarks.pdf",
new PdfMergeOptions
{
BookmarkTitles = new[] { "Cover", "Chapter 1", "Chapter 2" },
});
Aggiungere segnalibri a pagine specifiche
Usa PdfBookmark per destinazioni di pagina esplicite. PageIndex e zero-based e fa riferimento al PDF finale unito.
MiniPdf.MergePdf(
new[] { "cover.pdf", "chapter-1.pdf", "chapter-2.pdf" },
"book-with-custom-bookmarks.pdf",
new PdfMergeOptions
{
Bookmarks = new[]
{
new PdfBookmark("Start", 0),
new PdfBookmark("Chapter 2 - page 3", 8),
},
});
Restituire un array di byte
byte[] mergedPdf = MiniPdf.MergePdf(
new[] { "cover.pdf", "chapter-1.pdf" },
new PdfMergeOptions
{
BookmarkTitles = new[] { "Cover", "Chapter 1" },
});
L'unione PDF supporta PDF non crittografati che usano classic xref table. I PDF crittografati e i PDF che usano solo xref stream generano NotSupportedException.
Test visivo di unione PDF
Per generare un PDF unito con segnalibri da controllare manualmente:
./scripts/Test-PdfMergeVisual.ps1
Lo script scrive artifacts/issue62-merge-visual/merged-bookmarks.pdf. Aprilo in un visualizzatore PDF e verifica che il pannello dei segnalibri contenga Source A, Source B e Source B - page 2. Aggiungi -Open per aprire il PDF generato dopo la creazione.
Font personalizzati
Se l'ambiente ha pochi font di sistema (ad esempio container o Blazor WASM), registra i font prima della conversione.
using MiniSoftware;
// Si consiglia di registrare uno o piu font all'avvio dell'app
MiniPdf.RegisterFont("NotoSansSC", File.ReadAllBytes("Fonts/NotoSansSC-Regular.ttf"));
MiniPdf.RegisterFont("NotoColorEmoji", File.ReadAllBytes("Fonts/NotoColorEmoji.ttf"));
MiniPdf.ConvertToPdf("report.docx", "report.pdf");
Note:
- I byte supportati sono TrueType
.ttfe TrueType Collection.ttc. - Registra i font una sola volta all'avvio per evitare registrazioni duplicate.
- I font registrati hanno priorita rispetto ai font di sistema.
Strumento CLI
MiniPdf fornisce anche uno strumento da riga di comando — MiniPdf.Cli — per convertire rapidamente i file senza scrivere codice.
Installazione
dotnet tool install --global MiniPdf.Cli
Utilizzo
# Converti Excel in PDF (output: data.pdf)
minipdf data.xlsx
# Converti Word in PDF
minipdf report.docx
# Converti PowerPoint in PDF
minipdf slides.pptx
# Specifica il percorso di output
minipdf report.docx -o /path/to/output.pdf
# Registra font personalizzati (per container / ambienti headless)
minipdf report.docx --fonts ./Fonts
# Renderizza fogli Excel indicati per nome o indice 1-based
minipdf data.xlsx --sheets Summary,2
# Comprimi gli stream di contenuto PDF per output grandi
minipdf data.xlsx --compress
# Renderizza un'anteprima Excel limitata
minipdf data.xlsx --max-rows 200 --max-columns 20 --compress
# Regola il layout di fogli Excel grandi o larghi
minipdf data.xlsx --fit-to-page --landscape --scale 70
# Punta a piu righe del foglio per pagina PDF
minipdf data.xlsx --rows-per-page 80 --compress
Comandi
| Comando | Descrizione |
|---|---|
minipdf <file> | Converti .xlsx / .docx / .pptx in PDF |
minipdf convert <file> -o <out> | Converti con percorso di output esplicito |
minipdf convert <file> --compress | Comprimi gli stream di contenuto PDF |
minipdf data.xlsx --max-rows <n> --max-columns <n> | Renderizza un'anteprima Excel limitata |
minipdf data.xlsx --fit-to-page --landscape --scale <n> | Adatta e scala il layout Excel |
minipdf data.xlsx --rows-per-page <n> | Punta a piu righe Excel per pagina PDF |
minipdf --version | Mostra la versione |
minipdf --help | Mostra l'aiuto |
Binari standalone Native AOT
MiniPdf.Cli supporta la compilazione Native AOT (Ahead-of-Time) — il codice C# viene compilato direttamente in codice macchina nativo in fase di build, proprio come C/C++, producendo un eseguibile standalone. Non è necessario alcun runtime .NET o compilatore JIT in fase di esecuzione.
Vantaggi:
- Zero dipendenze — nessun .NET SDK o runtime necessario sulla macchina di destinazione
- Avvio istantaneo — codice macchina nativo, nessun riscaldamento JIT
- Dimensioni ridotte — binario a file singolo, facile da distribuire e deployare
- Adatto a CI/CD — scarica ed esegui in qualsiasi pipeline senza installare .NET
Download: scarica il binario per la tua piattaforma dalla pagina GitHub Releases.
| Piattaforma | File |
|---|---|
| Windows x64 | minipdf-win-x64.zip |
| Windows ARM64 | minipdf-win-arm64.zip |
| Linux x64 | minipdf-linux-x64.tar.gz |
| Linux ARM64 | minipdf-linux-arm64.tar.gz |
| macOS x64 | minipdf-osx-x64.tar.gz |
| macOS ARM64 (Apple Silicon) | minipdf-osx-arm64.tar.gz |
Utilizzo (esempio su Linux / macOS):
# Scarica ed estrai
tar -xzf minipdf-linux-x64.tar.gz
# Converti
./minipdf report.docx -o report.pdf
Utilizzo (esempio su Windows):
# Estrai lo zip, poi esegui
.\minipdf.exe report.docx -o report.pdf
Benchmark
L'output di MiniPdf viene confrontato con MiniExcel e Office 365 come renderer di riferimento su 373 casi di test.
| Report | Casi | 🟢 Eccellente (≥90%) | 🟡 Accettabile (70%–90%) | 🔴 Da migliorare (<70%) | Punteggio medio |
|---|---|---|---|---|---|
| XLSX → PDF | 191 | 175 | 16 | 0 | 96.9% |
| DOCX → PDF | 180 | 178 | 2 | 0 | 97.6% |
| Issue XLSX File | 2 | 1 | 1 | 0 | 83.8% |
| Totale | 373 | 354 | 19 | 0 | 97.2% |
Punteggio: similarità testo 40% + similarità visiva 40% + conteggio pagine 20%
Rapporti di confronto dettagliati
- Report Benchmark XLSX — Casi di test conversione XLSX
- Report Benchmark DOCX — Casi di test conversione DOCX
- Report File Issue XLSX — Casi di test con file Issue reali
- Report File Issue DOCX — Casi di test con file Issue reali
Confronto visivo
Tutti i casi di test che confrontano l'output di MiniPdf con il riferimento MiniExcel / Office 365. Per i risultati multipagina viene mostrata la pagina 1.
| MiniPdf | MiniExcel / Office 365 (Riferimento) |
|---|---|
| classic01 | Basic table with headers 🟢 99.9% |
![]() |
![]() |
| classic02 | Multiple worksheets 🟢 99.8% |
![]() |
![]() |
| classic03 | Empty workbook 🟢 100.0% |
![]() |
![]() |
| classic04 | Single cell 🟢 100.0% |
![]() |
![]() |
| classic05 | Wide table 🟢 99.8% |
![]() |
![]() |
| classic06 | Tall table 🟢 97.8% |
![]() |
![]() |
| classic07 | Numbers only 🟢 100.0% |
![]() |
![]() |
| classic08 | Mixed text and numbers 🟢 99.9% |
![]() |
![]() |
| classic09 | Long text 🟢 98.4% |
![]() |
![]() |
| classic10 | Special xml characters 🟢 99.9% |
![]() |
![]() |
| classic11 | Sparse rows 🟢 100.0% |
![]() |
![]() |
| classic12 | Sparse columns 🟢 99.9% |
![]() |
![]() |
| classic13 | Date strings 🟢 99.9% |
![]() |
![]() |
| classic14 | Decimal numbers 🟢 99.9% |
![]() |
![]() |
| classic15 | Negative numbers 🟢 99.9% |
![]() |
![]() |
| classic16 | Percentage strings 🟢 99.4% |
![]() |
![]() |
| classic17 | Currency strings 🟢 99.9% |
![]() |
![]() |
| classic18 | Large dataset 🟢 95.7% |
![]() |
![]() |
| classic19 | Single column list 🟢 99.9% |
![]() |
![]() |
| classic20 | All empty cells 🟢 100.0% |
![]() |
![]() |
| classic21 | Header only 🟢 99.9% |
![]() |
![]() |
| classic22 | Long sheet name 🟢 99.9% |
![]() |
![]() |
| classic23 | Unicode text 🟢 91.3% |
![]() |
![]() |
| classic24 | Red text 🟢 99.9% |
![]() |
![]() |
| classic25 | Multiple colors 🟢 99.8% |
![]() |
![]() |
| classic26 | Inline strings 🟢 99.9% |
![]() |
![]() |
| classic27 | Single row 🟢 99.9% |
![]() |
![]() |
| classic28 | Duplicate values 🟢 99.9% |
![]() |
![]() |
| classic29 | Formula results 🟢 99.9% |
![]() |
![]() |
| classic30 | Mixed empty and filled sheets 🟢 100.0% |
![]() |
![]() |
| classic31 | Bold header row 🟢 99.9% |
![]() |
![]() |
| classic32 | Right aligned numbers 🟢 99.9% |
![]() |
![]() |
| classic33 | Centered text 🟢 99.9% |
![]() |
![]() |
| classic34 | Explicit column widths 🟢 99.9% |
![]() |
![]() |
| classic35 | Explicit row heights 🟢 99.5% |
![]() |
![]() |
| classic36 | Merged cells 🟢 99.9% |
![]() |
![]() |
| classic37 | Freeze panes 🟢 99.6% |
![]() |
![]() |
| classic38 | Hyperlink cell 🟢 99.9% |
![]() |
![]() |
| classic39 | Financial table 🟢 99.8% |
![]() |
![]() |
| classic40 | Scientific notation 🟢 99.9% |
![]() |
![]() |
| classic41 | Integer vs float 🟢 99.9% |
![]() |
![]() |
| classic42 | Boolean values 🟢 99.6% |
![]() |
![]() |
| classic43 | Inventory report 🟢 99.5% |
![]() |
![]() |
| classic44 | Employee roster 🟢 98.0% |
![]() |
![]() |
| classic45 | Sales by region 🟢 99.9% |
![]() |
![]() |
| classic46 | Grade book 🟢 99.6% |
![]() |
![]() |
| classic47 | Time series 🟢 99.3% |
![]() |
![]() |
| classic48 | Survey results 🟢 99.6% |
![]() |
![]() |
| classic49 | Contact list 🟢 98.5% |
![]() |
![]() |
| classic50 | Budget vs actuals 🟢 99.6% |
![]() |
![]() |
| classic51 | Product catalog 🟢 98.5% |
![]() |
![]() |
| classic52 | Pivot summary 🟢 99.6% |
![]() |
![]() |
| classic53 | Invoice 🟢 99.5% |
![]() |
![]() |
| classic54 | Multi level header 🟢 99.8% |
![]() |
![]() |
| classic55 | Error values 🟢 99.8% |
![]() |
![]() |
| classic56 | Alternating row colors 🟢 99.6% |
![]() |
![]() |
| classic57 | Cjk only 🟢 91.1% |
![]() |
![]() |
| classic58 | Mixed numeric formats 🟢 99.5% |
![]() |
![]() |
| classic59 | Multi sheet summary 🟢 99.9% |
![]() |
![]() |
| classic60 | Large wide table 🟢 97.4% |
![]() |
![]() |
| classic61 | Product card with image 🟢 99.9% |
![]() |
![]() |
| classic62 | Company logo header 🟢 99.6% |
![]() |
![]() |
| classic63 | Two products side by side 🟢 99.8% |
![]() |
![]() |
| classic64 | Employee directory with photo 🟢 99.1% |
![]() |
![]() |
| classic65 | Inventory with product photos 🟢 99.4% |
![]() |
![]() |
| classic66 | Invoice with logo 🟢 99.2% |
![]() |
![]() |
| classic67 | Real estate listing 🟢 99.8% |
![]() |
![]() |
| classic68 | Restaurant menu 🟢 98.6% |
![]() |
![]() |
| classic69 | Image only sheet 🟢 100.0% |
![]() |
![]() |
| classic70 | Product catalog with images 🟢 99.2% |
![]() |
![]() |
| classic71 | Multi sheet with images 🟢 99.8% |
![]() |
![]() |
| classic72 | Bar chart image with data 🟢 99.5% |
![]() |
![]() |
| classic73 | Event flyer with banner 🟢 99.6% |
![]() |
![]() |
| classic74 | Dashboard with kpi image 🟢 97.9% |
![]() |
![]() |
| classic75 | Certificate with seal 🟢 99.5% |
![]() |
![]() |
| classic76 | Product image grid 🟢 99.7% |
![]() |
![]() |
| classic77 | News article with hero image 🟢 99.6% |
![]() |
![]() |
| classic78 | Small icon per row 🟢 99.2% |
| classic79 | Wide panoramic banner 🟢 99.8% |
![]() |
![]() |
| classic80 | Portrait tall image 🟢 99.8% |
![]() |
![]() |
| classic81 | Step by step with images 🟢 99.7% |
![]() |
![]() |
| classic82 | Before after images 🟢 99.4% |
![]() |
![]() |
| classic83 | Color swatch palette 🟢 99.4% |
![]() |
![]() |
| classic84 | Travel destination cards 🟢 99.6% |
![]() |
![]() |
| classic85 | Lab results with image 🟢 99.2% |
![]() |
![]() |
| classic86 | Software screenshot features 🟢 98.7% |
![]() |
![]() |
| classic87 | Sports results with logos 🟢 99.8% |
![]() |
![]() |
| classic88 | Image after data 🟢 99.7% |
![]() |
![]() |
| classic89 | Nutrition label with image 🟢 99.5% |
![]() |
![]() |
| classic90 | Project status with milestones 🟢 99.0% |
![]() |
![]() |
| classic91 | Simple bar chart 🟢 96.6% |
![]() |
![]() |
| classic92 | Horizontal bar chart 🟢 96.9% |
![]() |
![]() |
| classic93 | Line chart 🟢 93.2% |
![]() |
![]() |
| classic94 | Pie chart 🟢 97.2% |
![]() |
![]() |
| classic95 | Area chart 🟡 76.4% |
![]() |
![]() |
| classic96 | Scatter chart 🟢 94.8% |
![]() |
![]() |
| classic97 | Doughnut chart 🟢 97.5% |
![]() |
![]() |
| classic98 | Radar chart 🟢 95.1% |
![]() |
![]() |
| classic99 | Bubble chart 🟢 92.0% |
![]() |
![]() |
| classic100 | Stacked bar chart 🟢 95.0% |
![]() |
![]() |
| classic101 | Percent stacked bar 🟢 93.6% |
![]() |
![]() |
| classic102 | Line chart with markers 🟢 93.0% |
![]() |
![]() |
| classic103 | Pie chart with labels 🟡 86.9% |
![]() |
![]() |
| classic104 | Combo bar line chart 🟡 81.6% |
![]() |
![]() |
| classic105 | 3d bar chart 🟡 85.8% |
![]() |
![]() |
| classic106 | 3d pie chart 🟢 96.7% |
![]() |
![]() |
| classic107 | Multi series line 🟡 80.6% |
![]() |
![]() |
| classic108 | Stacked area chart 🟢 94.4% |
![]() |
![]() |
| classic109 | Scatter with trendline 🟢 92.3% |
![]() |
![]() |
| classic110 | Chart with legend 🟡 84.7% |
![]() |
![]() |
| classic111 | Chart with axis labels 🟢 92.1% |
![]() |
![]() |
| classic112 | Multiple charts 🟡 85.4% |
![]() |
![]() |
| classic113 | Chart sheet 🟡 86.4% |
![]() |
![]() |
| classic114 | Chart large dataset 🟢 91.6% |
![]() |
![]() |
| classic115 | Chart negative values 🟢 92.1% |
![]() |
![]() |
| classic116 | Percent stacked area 🟢 93.8% |
![]() |
![]() |
| classic117 | Stock ohlc chart 🟡 80.9% |
![]() |
![]() |
| classic118 | Bar chart custom colors 🟢 95.5% |
![]() |
![]() |
| classic119 | Dashboard multi charts 🟢 92.1% |
![]() |
![]() |
| classic120 | Chart with date axis 🟡 76.1% |
![]() |
![]() |
| classic121 | Thin borders 🟢 99.7% |
![]() |
![]() |
| classic122 | Thick outer thin inner 🟢 99.6% |
![]() |
![]() |
| classic123 | Dashed borders 🟢 99.1% |
![]() |
![]() |
| classic124 | Colored borders 🟢 99.7% |
![]() |
![]() |
| classic125 | Solid fills 🟢 99.2% |
![]() |
![]() |
| classic126 | Dark header 🟢 99.5% |
![]() |
![]() |
| classic127 | Font styles 🟢 99.6% |
![]() |
![]() |
| classic128 | Font sizes 🟢 99.0% |
![]() |
![]() |
| classic129 | Alignment combos 🟢 99.8% |
![]() |
![]() |
| classic130 | Wrap and indent 🟢 99.5% |
![]() |
![]() |
| classic131 | Number formats 🟢 99.6% |
![]() |
![]() |
| classic132 | Striped table 🟢 99.0% |
![]() |
![]() |
| classic133 | Gradient rows 🟢 99.6% |
![]() |
![]() |
| classic134 | Heatmap 🟢 98.8% |
![]() |
![]() |
| classic135 | Bottom border only 🟢 99.8% |
![]() |
![]() |
| classic136 | Financial report styled 🟢 99.3% |
![]() |
![]() |
| classic137 | Checkerboard 🟢 98.4% |
![]() |
![]() |
| classic138 | Color grid 🟢 99.4% |
![]() |
![]() |
| classic139 | Pattern fills 🟢 99.2% |
![]() |
![]() |
| classic140 | Rotated text 🟢 98.1% |
![]() |
![]() |
| classic141 | Mixed edge borders 🟢 99.7% |
![]() |
![]() |
| classic142 | Styled invoice 🟢 98.3% |
![]() |
![]() |
| classic143 | Colored tabs 🟢 100.0% |
![]() |
![]() |
| classic144 | Note style cells 🟢 99.6% |
![]() |
![]() |
| classic145 | Status badges 🟢 99.1% |
![]() |
![]() |
| classic146 | Double border table 🟢 99.6% |
![]() |
![]() |
| classic147 | Multi sheet styled 🟢 99.7% |
![]() |
![]() |
| classic148 | Frozen styled grid 🟢 97.3% |
![]() |
![]() |
| classic149 | Merged styled sections 🟢 98.7% |
![]() |
![]() |
| classic150 | Kitchen sink styles 🟢 97.5% |
![]() |
![]() |
| classic151 | Multilingual greetings 🟢 93.5% |
![]() |
![]() |
| classic152 | Emoji sampler 🟢 91.1% |
![]() |
![]() |
| classic153 | Currency symbols 🟢 98.5% |
![]() |
![]() |
| classic154 | Math symbols 🟢 95.7% |
![]() |
![]() |
| classic155 | Diacritical marks 🟢 99.8% |
![]() |
![]() |
| classic156 | Rtl bidi text 🟡 84.0% |
![]() |
![]() |
| classic157 | Cjk extended 🟢 91.3% |
![]() |
![]() |
| classic158 | Emoji skin tones 🟢 99.3% |
![]() |
![]() |
| classic159 | Zwj emoji 🟢 90.6% |
![]() |
![]() |
| classic160 | Punctuation marks 🟢 94.4% |
![]() |
![]() |
| classic161 | Box drawing 🟢 95.0% |
![]() |
![]() |
| classic162 | Cjk emoji styled 🟡 86.5% |
![]() |
![]() |
| classic163 | Cyrillic alphabets 🟢 99.6% |
![]() |
![]() |
| classic164 | Indic scripts 🟡 87.4% |
![]() |
![]() |
| classic165 | Southeast asian 🟢 96.0% |
![]() |
![]() |
| classic166 | Emoji progress 🟢 98.6% |
![]() |
![]() |
| classic167 | Musical symbols 🟢 90.0% |
![]() |
![]() |
| classic168 | Mixed ltr rtl styled 🟢 94.5% |
![]() |
![]() |
| classic169 | Korean invoice 🟡 88.4% |
![]() |
![]() |
| classic170 | Emoji dashboard 🟢 96.3% |
![]() |
![]() |
| classic171 | Ipa phonetic 🟢 97.6% |
![]() |
![]() |
| classic172 | Emoji timeline 🟢 95.3% |
![]() |
![]() |
| classic173 | African languages 🟢 90.8% |
![]() |
![]() |
| classic174 | Technical symbols 🟢 94.4% |
![]() |
![]() |
| classic175 | Multiscript catalog 🟢 92.6% |
![]() |
![]() |
| classic176 | Combining characters 🟢 94.5% |
![]() |
![]() |
| classic177 | Emoji calendar 🟡 88.4% |
![]() |
![]() |
| classic178 | Caucasus ethiopic 🟢 96.9% |
![]() |
![]() |
| classic179 | Emoji inventory 🟢 91.0% |
![]() |
![]() |
| classic180 | Polyglot paragraph 🟢 93.6% |
![]() |
![]() |
| classic181 | Feedback tracker with images 🟢 99.4% |
| classic182 | Dense long text columns 🟢 96.5% |
![]() |
![]() |
| classic183 | Mixed content grid 🟢 99.4% |
![]() |
![]() |
| classic184 | Wide narrow columns 🟢 98.4% |
![]() |
![]() |
| classic185 | Tall rows vertical align 🟢 99.7% |
![]() |
![]() |
| classic186 | Multi sheet image report 🟢 99.6% |
![]() |
![]() |
| classic187 | Bug report with screenshots 🟢 98.2% |
![]() |
![]() |
| classic188 | Merged header with images 🟢 99.5% |
![]() |
![]() |
| classic189 | Alternating image text rows 🟢 95.3% |
![]() |
![]() |
| classic190 | Dashboard kpi images 🟢 99.5% |
![]() |
![]() |
| classic191 | Payroll calculator 🟡 89.5% |
![]() |
![]() |
Benchmark DOCX
L'output DOCX di MiniPdf viene confrontato con MiniExcel e Office 365 come renderer di riferimento su 180 casi di test classici.
| Categoria | Conteggio | Soglia |
|---|---|---|
| 🟢 Eccellente | 175 | ≥ 90% |
| 🟡 Accettabile | 16 | 70% – 90% |
| 🔴 Da migliorare | 0 | < 70% |
Punteggio medio complessivo: 96.9% (similarità testo 40% + similarità visiva 40% + conteggio pagine 20%)
Confronto visivo DOCX
Tutti i casi di test DOCX che confrontano l'output di MiniPdf con il riferimento MiniExcel / Office 365. Per i risultati multipagina viene mostrata la pagina 1.
| MiniPdf | MiniExcel / Office 365 (Reference) |
|---|---|
| classic01 | Basic table with headers 🟢 99.9% |
![]() |
![]() |
| classic02 | Multiple worksheets 🟢 99.8% |
![]() |
![]() |
| classic03 | Empty workbook 🟢 100.0% |
![]() |
![]() |
| classic04 | Single cell 🟢 100.0% |
![]() |
![]() |
| classic05 | Wide table 🟢 99.8% |
![]() |
![]() |
| classic06 | Tall table 🟢 97.8% |
![]() |
![]() |
| classic07 | Numbers only 🟢 100.0% |
![]() |
![]() |
| classic08 | Mixed text and numbers 🟢 99.9% |
![]() |
![]() |
| classic09 | Long text 🟢 98.4% |
![]() |
![]() |
| classic10 | Special xml characters 🟢 99.9% |
![]() |
![]() |
| classic11 | Sparse rows 🟢 100.0% |
![]() |
![]() |
| classic12 | Sparse columns 🟢 99.9% |
![]() |
![]() |
| classic13 | Date strings 🟢 99.9% |
![]() |
![]() |
| classic14 | Decimal numbers 🟢 99.9% |
![]() |
![]() |
| classic15 | Negative numbers 🟢 99.9% |
![]() |
![]() |
| classic16 | Percentage strings 🟢 99.4% |
![]() |
![]() |
| classic17 | Currency strings 🟢 99.9% |
![]() |
![]() |
| classic18 | Large dataset 🟢 95.7% |
![]() |
![]() |
| classic19 | Single column list 🟢 99.9% |
![]() |
![]() |
| classic20 | All empty cells 🟢 100.0% |
![]() |
![]() |
| classic21 | Header only 🟢 99.9% |
![]() |
![]() |
| classic22 | Long sheet name 🟢 99.9% |
![]() |
![]() |
| classic23 | Unicode text 🟢 91.3% |
![]() |
![]() |
| classic24 | Red text 🟢 99.9% |
![]() |
![]() |
| classic25 | Multiple colors 🟢 99.8% |
![]() |
![]() |
| classic26 | Inline strings 🟢 99.9% |
![]() |
![]() |
| classic27 | Single row 🟢 99.9% |
![]() |
![]() |
| classic28 | Duplicate values 🟢 99.9% |
![]() |
![]() |
| classic29 | Formula results 🟢 99.9% |
![]() |
![]() |
| classic30 | Mixed empty and filled sheets 🟢 100.0% |
![]() |
![]() |
| classic31 | Bold header row 🟢 99.9% |
![]() |
![]() |
| classic31 | Bold header row 🟢 99.9% |
![]() |
![]() |
| classic32 | Right aligned numbers 🟢 99.9% |
![]() |
![]() |
| classic32 | Right aligned numbers 🟢 99.9% |
![]() |
![]() |
| classic33 | Centered text 🟢 99.9% |
![]() |
![]() |
| classic33 | Centered text 🟢 99.9% |
![]() |
![]() |
| classic34 | Explicit column widths 🟢 99.9% |
![]() |
![]() |
| classic34 | Explicit column widths 🟢 99.9% |
![]() |
![]() |
| classic35 | Explicit row heights 🟢 99.5% |
![]() |
![]() |
| classic35 | Explicit row heights 🟢 99.5% |
![]() |
![]() |
| classic36 | Merged cells 🟢 99.9% |
![]() |
![]() |
| classic36 | Merged cells 🟢 99.9% |
![]() |
![]() |
| classic37 | Freeze panes 🟢 99.6% |
![]() |
![]() |
| classic37 | Freeze panes 🟢 99.6% |
![]() |
![]() |
| classic38 | Hyperlink cell 🟢 99.9% |
![]() |
![]() |
| classic38 | Hyperlink cell 🟢 99.9% |
![]() |
![]() |
| classic39 | Financial table 🟢 99.8% |
![]() |
![]() |
| classic39 | Financial table 🟢 99.8% |
![]() |
![]() |
| classic40 | Scientific notation 🟢 99.9% |
![]() |
![]() |
| classic40 | Scientific notation 🟢 99.9% |
![]() |
![]() |
| classic41 | Integer vs float 🟢 99.9% |
![]() |
![]() |
| classic41 | Integer vs float 🟢 99.9% |
![]() |
![]() |
| classic42 | Boolean values 🟢 99.6% |
![]() |
![]() |
| classic42 | Boolean values 🟢 99.6% |
![]() |
![]() |
| classic43 | Inventory report 🟢 99.5% |
![]() |
![]() |
| classic43 | Inventory report 🟢 99.5% |
![]() |
![]() |
| classic44 | Employee roster 🟢 98.0% |
![]() |
![]() |
| classic44 | Employee roster 🟢 98.0% |
![]() |
![]() |
| classic45 | Sales by region 🟢 99.9% |
![]() |
![]() |
| classic45 | Sales by region 🟢 99.9% |
![]() |
![]() |
| classic46 | Grade book 🟢 99.6% |
![]() |
![]() |
| classic46 | Grade book 🟢 99.6% |
![]() |
![]() |
| classic47 | Time series 🟢 99.3% |
![]() |
![]() |
| classic47 | Time series 🟢 99.3% |
![]() |
![]() |
| classic48 | Survey results 🟢 99.6% |
![]() |
![]() |
| classic48 | Survey results 🟢 99.6% |
| classic49 | Contact list 🟢 98.5% |
![]() |
![]() |
| classic49 | Contact list 🟢 98.5% |
![]() |
![]() |
| classic50 | Budget vs actuals 🟢 99.6% |
![]() |
![]() |
| classic50 | Budget vs actuals 🟢 99.6% |
![]() |
![]() |
| classic51 | Product catalog 🟢 98.5% |
![]() |
![]() |
| classic51 | Product catalog 🟢 98.5% |
![]() |
![]() |
| classic52 | Pivot summary 🟢 99.6% |
![]() |
![]() |
| classic52 | Pivot summary 🟢 99.6% |
![]() |
![]() |
| classic53 | Invoice 🟢 99.5% |
![]() |
![]() |
| classic53 | Invoice 🟢 99.5% |
![]() |
![]() |
| classic54 | Multi level header 🟢 99.8% |
![]() |
![]() |
| classic54 | Multi level header 🟢 99.8% |
![]() |
![]() |
| classic55 | Error values 🟢 99.8% |
![]() |
![]() |
| classic55 | Error values 🟢 99.8% |
![]() |
![]() |
| classic56 | Alternating row colors 🟢 99.6% |
![]() |
![]() |
| classic56 | Alternating row colors 🟢 99.6% |
![]() |
![]() |
| classic57 | Cjk only 🟢 91.1% |
![]() |
![]() |
| classic57 | Cjk only 🟢 91.1% |
![]() |
![]() |
| classic58 | Mixed numeric formats 🟢 99.5% |
![]() |
![]() |
| classic58 | Mixed numeric formats 🟢 99.5% |
![]() |
![]() |
| classic59 | Multi sheet summary 🟢 99.9% |
![]() |
![]() |
| classic59 | Multi sheet summary 🟢 99.9% |
![]() |
![]() |
| classic60 | Large wide table 🟢 97.4% |
![]() |
![]() |
| classic60 | Large wide table 🟢 97.4% |
![]() |
![]() |
| classic61 | Product card with image 🟢 99.9% |
![]() |
![]() |
| classic62 | Company logo header 🟢 99.6% |
![]() |
![]() |
| classic63 | Two products side by side 🟢 99.8% |
![]() |
![]() |
| classic64 | Employee directory with photo 🟢 99.1% |
![]() |
![]() |
| classic65 | Inventory with product photos 🟢 99.4% |
![]() |
![]() |
| classic66 | Invoice with logo 🟢 99.2% |
![]() |
![]() |
| classic67 | Real estate listing 🟢 99.8% |
![]() |
![]() |
| classic68 | Restaurant menu 🟢 98.6% |
![]() |
![]() |
| classic69 | Image only sheet 🟢 100.0% |
![]() |
![]() |
| classic70 | Product catalog with images 🟢 99.2% |
![]() |
![]() |
| classic71 | Multi sheet with images 🟢 99.8% |
![]() |
![]() |
| classic72 | Bar chart image with data 🟢 99.5% |
![]() |
![]() |
| classic73 | Event flyer with banner 🟢 99.6% |
![]() |
![]() |
| classic74 | Dashboard with kpi image 🟢 97.9% |
![]() |
![]() |
| classic75 | Certificate with seal 🟢 99.5% |
![]() |
![]() |
| classic76 | Product image grid 🟢 99.7% |
![]() |
![]() |
| classic77 | News article with hero image 🟢 99.6% |
![]() |
![]() |
| classic78 | Small icon per row 🟢 99.2% |
![]() |
![]() |
| classic79 | Wide panoramic banner 🟢 99.8% |
![]() |
![]() |
| classic80 | Portrait tall image 🟢 99.8% |
![]() |
![]() |
| classic81 | Step by step with images 🟢 99.7% |
![]() |
![]() |
| classic82 | Before after images 🟢 99.4% |
![]() |
![]() |
| classic83 | Color swatch palette 🟢 99.4% |
![]() |
![]() |
| classic84 | Travel destination cards 🟢 99.6% |
![]() |
![]() |
| classic85 | Lab results with image 🟢 99.2% |
![]() |
![]() |
| classic86 | Software screenshot features 🟢 98.7% |
![]() |
![]() |
| classic87 | Sports results with logos 🟢 99.8% |
![]() |
![]() |
| classic88 | Image after data 🟢 99.7% |
![]() |
![]() |
| classic89 | Nutrition label with image 🟢 99.5% |
![]() |
![]() |
| classic90 | Project status with milestones 🟢 99.0% |
![]() |
![]() |
| classic91 | Simple bar chart 🟢 96.6% |
![]() |
![]() |
| classic92 | Horizontal bar chart 🟢 96.9% |
![]() |
![]() |
| classic93 | Line chart 🟢 93.2% |
![]() |
![]() |
| classic94 | Pie chart 🟢 97.2% |
![]() |
![]() |
| classic95 | Area chart 🟡 76.4% |
![]() |
![]() |
| classic96 | Scatter chart 🟢 94.8% |
![]() |
![]() |
| classic97 | Doughnut chart 🟢 97.5% |
![]() |
![]() |
| classic98 | Radar chart 🟢 95.1% |
![]() |
![]() |
| classic99 | Bubble chart 🟢 92.0% |
![]() |
![]() |
| classic100 | Stacked bar chart 🟢 95.0% |
![]() |
![]() |
| classic101 | Percent stacked bar 🟢 93.6% |
![]() |
![]() |
| classic102 | Line chart with markers 🟢 93.0% |
![]() |
![]() |
| classic103 | Pie chart with labels 🟡 86.9% |
![]() |
![]() |
| classic104 | Combo bar line chart 🟡 81.6% |
![]() |
![]() |
| classic105 | 3d bar chart 🟡 85.8% |
![]() |
![]() |
| classic106 | 3d pie chart 🟢 96.7% |
![]() |
![]() |
| classic107 | Multi series line 🟡 80.6% |
![]() |
![]() |
| classic108 | Stacked area chart 🟢 94.4% |
![]() |
![]() |
| classic109 | Scatter with trendline 🟢 92.3% |
![]() |
![]() |
| classic110 | Chart with legend 🟡 84.7% |
![]() |
![]() |
| classic111 | Chart with axis labels 🟢 92.1% |
![]() |
![]() |
| classic112 | Multiple charts 🟡 85.4% |
![]() |
![]() |
| classic113 | Chart sheet 🟡 86.4% |
![]() |
![]() |
| classic114 | Chart large dataset 🟢 91.6% |
![]() |
![]() |
| classic115 | Chart negative values 🟢 92.1% |
![]() |
![]() |
| classic116 | Percent stacked area 🟢 93.8% |
![]() |
![]() |
| classic117 | Stock ohlc chart 🟡 80.9% |
![]() |
![]() |
| classic118 | Bar chart custom colors 🟢 95.5% |
![]() |
![]() |
| classic119 | Dashboard multi charts 🟢 92.1% |
![]() |
![]() |
| classic120 | Chart with date axis 🟡 76.1% |
![]() |
![]() |
| classic121 | Thin borders 🟢 99.7% |
![]() |
![]() |
| classic122 | Thick outer thin inner 🟢 99.6% |
![]() |
![]() |
| classic123 | Dashed borders 🟢 99.1% |
![]() |
![]() |
| classic124 | Colored borders 🟢 99.7% |
![]() |
![]() |
| classic125 | Solid fills 🟢 99.2% |
![]() |
![]() |
| classic126 | Dark header 🟢 99.5% |
![]() |
![]() |
| classic127 | Font styles 🟢 99.6% |
![]() |
![]() |
| classic128 | Font sizes 🟢 99.0% |
![]() |
![]() |
| classic129 | Alignment combos 🟢 99.8% |
![]() |
![]() |
| classic130 | Wrap and indent 🟢 99.5% |
![]() |
![]() |
| classic131 | Number formats 🟢 99.6% |
![]() |
![]() |
| classic132 | Striped table 🟢 99.0% |
![]() |
![]() |
| classic133 | Gradient rows 🟢 99.6% |
![]() |
![]() |
| classic134 | Heatmap 🟢 98.8% |
![]() |
![]() |
| classic135 | Bottom border only 🟢 99.8% |
![]() |
![]() |
| classic136 | Financial report styled 🟢 99.3% |
![]() |
![]() |
| classic137 | Checkerboard 🟢 98.4% |
![]() |
![]() |
| classic138 | Color grid 🟢 99.4% |
![]() |
![]() |
| classic139 | Pattern fills 🟢 99.2% |
![]() |
![]() |
| classic140 | Rotated text 🟢 98.1% |
![]() |
![]() |
| classic141 | Mixed edge borders 🟢 99.7% |
![]() |
![]() |
| classic142 | Styled invoice 🟢 98.3% |
![]() |
![]() |
| classic143 | Colored tabs 🟢 100.0% |
![]() |
![]() |
| classic144 | Note style cells 🟢 99.6% |
![]() |
![]() |
| classic145 | Status badges 🟢 99.1% |
![]() |
![]() |
| classic146 | Double border table 🟢 99.6% |
![]() |
![]() |
| classic147 | Multi sheet styled 🟢 99.7% |
![]() |
![]() |
| classic148 | Frozen styled grid 🟢 97.3% |
![]() |
![]() |
| classic149 | Merged styled sections 🟢 98.7% |
![]() |
![]() |
| classic150 | Kitchen sink styles 🟢 97.5% |
![]() |
![]() |
| classic181 | Feedback tracker with images 🟢 99.4% |
| classic182 | Dense long text columns 🟢 96.5% |
![]() |
![]() |
| classic183 | Mixed content grid 🟢 99.4% |
![]() |
![]() |
| classic184 | Wide narrow columns 🟢 98.4% |
![]() |
![]() |
| classic185 | Tall rows vertical align 🟢 99.7% |
![]() |
![]() |
| classic186 | Multi sheet image report 🟢 99.6% |
![]() |
![]() |
| classic187 | Bug report with screenshots 🟢 98.2% |
![]() |
![]() |
| classic188 | Merged header with images 🟢 99.5% |
![]() |
![]() |
| classic189 | Alternating image text rows 🟢 95.3% |
![]() |
![]() |
| classic190 | Dashboard kpi images 🟢 99.5% |
![]() |
![]() |
| classic191 | Payroll calculator 🟡 89.5% |
![]() |
![]() |
Licenza
Questo progetto è concesso in licenza con Apache License 2.0.































































































































































































































































































































































































































































































































































































































































































































































