Skip to content

mini-software/MiniPdf

Repository files navigation

MiniPdf


A minimal, zero-dependency .NET library for converting office files to PDF.

Features

  • Excel-to-PDF — Convert .xlsx files to PDF
  • Word-to-PDF — Convert .docx files to PDF
  • Zero dependencies — Uses only built-in .NET APIs (no external packages)
  • Valid PDF 1.4 output
  • Chart — Not currently supported well

Getting Started

Install via NuGet

dotnet add package MiniPdf

Usage

using MiniSoftware;

// Excel to PDF
MiniPdf.ConvertToPdf("data.xlsx", "output.pdf");

// Word to PDF
MiniPdf.ConvertToPdf("report.docx", "output.pdf");

// File to byte array
byte[] pdfBytes = MiniPdf.ConvertToPdf("data.xlsx");

// Stream to byte array
using var stream = File.OpenRead("data.xlsx");
byte[] pdfBytes = MiniPdf.ConvertToPdf(stream);

Xlsx Benchmark

MiniPdf output is compared against LibreOffice as the reference renderer across 180 classic test cases (including 30 image-embedding cases, 30 chart cases, 30 styling cases, and 30 multilingual/emoji cases).

Category Count Threshold
🟢 Excellent 164 ≥ 90%
🟡 Acceptable 15 70% – 90%
🔴 Needs Improvement 1 < 70%

Average overall score: 96.5% (text similarity 40% + visual similarity 40% + page count 20%)

Visual Comparison

All test cases comparing MiniPdf output vs LibreOffice reference. Page 1 shown for multi-page results.

MiniPdfLibreOffice (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 🔴 60.2%
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.4%
classic73 Event flyer with banner 🟢 99.5%
classic74 Dashboard with kpi image 🟢 97.9%
classic75 Certificate with seal 🟢 99.5%
classic76 Product image grid 🟢 99.6%
classic77 News article with hero image 🟢 99.6%
classic78 Small icon per row 🟢 99.0%
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.3%
classic83 Color swatch palette 🟢 99.2%
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.4%
classic90 Project status with milestones 🟢 97.7%
classic91 Simple bar chart 🟢 96.4%
classic92 Horizontal bar chart 🟢 96.9%
classic93 Line chart 🟢 92.5%
classic94 Pie chart 🟢 92.1%
classic95 Area chart 🟡 76.4%
classic96 Scatter chart 🟢 94.3%
classic97 Doughnut chart 🟢 91.5%
classic98 Radar chart 🟢 95.1%
classic99 Bubble chart 🟢 92.4%
classic100 Stacked bar chart 🟢 95.0%
classic101 Percent stacked bar 🟢 93.6%
classic102 Line chart with markers 🟢 93.0%
classic103 Pie chart with labels 🟡 88.4%
classic104 Combo bar line chart 🟡 81.6%
classic105 3d bar chart 🟡 85.8%
classic106 3d pie chart 🟢 91.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 🟢 91.0%
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%

DOCX Benchmark

MiniPdf DOCX output is compared against LibreOffice as the reference renderer across 150 classic test cases.

Category Count Threshold
🟢 Excellent 147 ≥ 90%
🟡 Acceptable 3 70% – 90%
🔴 Needs Improvement 0 < 70%

Average overall score: 97.0% (text similarity 40% + visual similarity 40% + page count 20%)

DOCX Visual Comparison

All DOCX test cases comparing MiniPdf output vs LibreOffice reference. Page 1 shown for multi-page results.

MiniPdfLibreOffice (Reference)
classic01 Single paragraph 🟢 99.7%
classic02 Multiple paragraphs 🟢 98.5%
classic03 Headings 🟢 99.5%
classic04 Bold italic 🟢 99.9%
classic05 Font sizes 🟢 99.3%
classic06 Font colors 🟢 99.9%
classic07 Alignment 🟢 99.1%
classic08 Bullet list 🟢 96.7%
classic09 Numbered list 🟢 99.6%
classic10 Simple table 🟢 99.3%
classic11 Table with shading 🟢 97.3%
classic12 Merged cells table 🟢 99.5%
classic13 Long document 🟢 96.8%
classic14 Mixed content 🟢 98.4%
classic15 Indentation 🟢 98.9%
classic16 Line spacing 🟢 98.6%
classic17 Page break 🟢 99.9%
classic18 Embedded image 🟢 98.1%
classic19 Multiple images 🟢 97.3%
classic20 Table with many rows 🟢 98.2%
classic21 Nested lists 🟢 97.2%
classic22 Horizontal rule 🟢 99.6%
classic23 Mixed formatting runs 🟢 99.8%
classic24 Two column table layout 🟢 96.3%
classic25 Title and subtitle 🟢 99.6%
classic26 Table alignment 🟢 99.4%
classic27 Long paragraph wrapping 🟢 96.8%
classic28 Special characters 🟢 99.4%
classic29 Table with image 🟢 99.1%
classic30 Comprehensive report 🟢 90.6%
classic31 Product card with image 🟢 96.2%
classic31 Strikethrough text 🟢 99.7%
classic32 Company logo header 🟢 99.0%
classic32 Superscript subscript 🟢 98.0%
classic33 Highlighted text 🟢 99.2%
classic33 Two products side by side 🟢 96.9%
classic34 Employee directory with photo 🟢 98.0%
classic34 Paragraph borders 🟢 99.2%
classic35 Inventory with product photos 🟢 98.6%
classic35 Tab stops 🟢 90.1%
classic36 Invoice with logo 🟢 98.8%
classic36 Wide table 🟢 98.3%
classic37 Nested table 🟢 97.8%
classic37 Real estate listing 🟢 93.8%
classic38 Restaurant menu with photos 🟢 96.8%
classic38 Table column widths 🟢 98.6%
classic39 Cover page with image 🟢 97.9%
classic39 Financial report 🟢 97.3%
classic40 Product catalog with images 🟢 98.0%
classic40 Resume 🟢 98.4%
classic41 Business letter 🟢 98.5%
classic41 Newsletter with hero image 🟢 97.7%
classic42 Chart image with data 🟢 96.4%
classic42 Meeting minutes 🟢 96.1%
classic43 Event flyer with banner 🟢 98.6%
classic43 Invoice document 🟢 97.4%
classic44 Dashboard with kpi image 🟢 97.2%
classic44 Memo 🟢 96.8%
classic45 Certificate with seal 🟢 96.9%
classic45 Project plan 🟢 97.2%
classic46 Comparison table 🟢 96.1%
classic46 Product image grid 🟢 95.9%
classic47 Data dictionary 🟢 96.7%
classic47 News article with hero image 🟢 98.7%
classic48 Multi level headings 🟢 98.7%
classic48 Task list with status icons 🟢 96.1%
classic49 Cjk document 🟢 94.4%
classic49 Wide panoramic banner 🟢 98.5%
classic50 Long table with formatting 🟡 83.2%
classic50 Portrait tall image 🟢 96.9%
classic51 Step by step with images 🟢 97.7%
classic51 Underline styles 🟢 99.7%
classic52 Before after comparison 🟢 96.2%
classic52 Spacing before after 🟢 98.7%
classic53 Color swatch palette 🟢 96.4%
classic53 Table merged complex 🟢 95.6%
classic54 Multi font family 🟢 99.1%
classic54 Travel destination cards 🟢 97.7%
classic55 Background shading paragraph 🟢 94.8%
classic55 Lab results with image 🟢 95.8%
classic56 Images and tables mixed 🟢 96.8%
classic56 Software screenshot features 🟢 95.1%
classic57 Right to left text 🟢 96.5%
classic57 Sports results with logos 🟢 96.7%
classic58 Dense paragraph document 🟢 96.0%
classic58 Report with footer image 🟢 96.6%
classic59 Numbered and bullet mixed 🟢 98.2%
classic59 Nutrition label with image 🟢 96.0%
classic60 Comprehensive styled report 🟢 98.3%
classic60 Project status with milestones 🟢 96.3%
classic61 Header and footer 🟢 96.9%
classic62 Footnote references 🟢 98.4%
classic63 Toc style headings 🟢 99.1%
classic64 Multi column layout 🟡 90.0%
classic65 Code block styling 🟢 96.5%
classic66 Colored title page 🟢 91.8%
classic67 Alternating row table 🟢 91.9%
classic68 Sidebar layout 🟢 93.5%
classic69 Blockquote styling 🟢 98.9%
classic70 Academic paper 🟢 96.8%
classic71 Legal document 🟢 97.5%
classic72 Technical specification 🟢 97.1%
classic73 Calendar layout 🟢 96.0%
classic74 Org chart 🟢 94.6%
classic75 Newsletter layout 🟢 97.5%
classic76 Recipe card 🟢 98.0%
classic77 Timeline layout 🟢 96.2%
classic78 Faq document 🟢 98.0%
classic79 Glossary 🟢 98.1%
classic80 Matrix grid 🟢 92.4%
classic81 Budget table 🟢 92.2%
classic82 Survey questionnaire 🟢 95.0%
classic83 Medical form 🟢 96.8%
classic84 Shipping label 🟢 96.3%
classic85 Report card 🟢 97.1%
classic86 Checklist document 🟢 98.7%
classic87 Bibliography 🟢 98.2%
classic88 Presentation handout 🟡 88.1%
classic89 Multi image gallery 🟢 95.7%
classic90 Comprehensive annual report 🟢 96.5%
classic91 Landscape page 🟢 97.5%
classic92 First line indent 🟢 97.3%
classic93 Hanging indent 🟢 98.0%
classic94 Custom bullet characters 🟢 98.7%
classic95 Contract template 🟢 98.2%
classic96 Dense data table 🟢 92.4%
classic97 Product catalog 🟢 97.3%
classic98 Training manual 🟢 98.1%
classic99 Policy document 🟢 97.5%
classic100 Multi page table 🟢 91.3%
classic101 Warranty document 🟢 97.6%
classic102 Curriculum syllabus 🟢 97.4%
classic103 Event program 🟢 96.3%
classic104 Sop document 🟢 93.7%
classic105 Certificate 🟢 97.1%
classic106 Multi section orientation 🟢 98.2%
classic107 Order form 🟢 96.5%
classic108 Comparison matrix 🟢 95.1%
classic109 Release notes 🟢 97.6%
classic110 Troubleshooting guide 🟢 96.6%
classic111 Meeting agenda 🟢 97.6%
classic112 Project status report 🟢 96.7%
classic113 Address labels 🟢 98.8%
classic114 Test report 🟢 97.4%
classic115 Price list 🟢 94.9%
classic116 Risk assessment 🟢 96.6%
classic117 Employee handbook excerpt 🟢 96.2%
classic118 Data report with summary 🟢 96.8%
classic119 Multi language document 🟢 98.4%
classic120 Comprehensive business proposal 🟢 95.2%

License

This project is licensed under the Apache License 2.0.

About

[Beta status] A minimal, zero-dependency .NET library for generating PDF documents from Word(docx) and Excel (.xlsx).

Topics

Resources

License

Stars

Watchers

Forks

Contributors