Global scripts · .NET 8

Arabic & RTL PDFs that actually shape correctly, in pure C#.

Bhowra.Ink renders correct Arabic and Hebrew bidirectional text — contextual letterforms, right-to-left layout, correct extraction order — with no Chromium and no headless browser. Verified on ZATCA tax invoices and UAE/Saudi payslips.

Why Arabic PDFs usually come out wrong

Most lightweight HTML-to-PDF engines mangle Arabic.

Correct Arabic rendering isn't just "right-to-left text" — it requires contextual letterform shaping and bidirectional layout that small or archived rendering engines typically never implemented:

Disconnected letterforms

Arabic letters change shape depending on their position in a word. Engines without shaping support (GSUB/GPOS) render each letter in isolation — disconnected and unreadable.

Wrong reading order

Mixed Arabic/Latin content (an invoice number inside Arabic text) needs correct bidirectional algorithm handling, or numbers and Latin fragments render in the wrong position.

Text extraction breaks

Even when the glyphs look right visually, copy-pasting or extracting text from the PDF can come out in the wrong logical order if the underlying text run isn't encoded correctly.

The fix — shaping and bidi, bundled in

One managed DLL, with Arabic shaping built in.

Bhowra.Ink — a zero-dependency HTML-to-PDF library on NuGet — bundles Arabic and Hebrew fonts with full contextual shaping and bidirectional layout support, with no extra packages to install:

using Bhowra.Ink;

string html = @"
<html dir="rtl" lang="ar">
<body style="font-family:sans-serif">
  <h1>فاتورة ضريبية</h1>
  <p>المبلغ الإجمالي: 1,250 ر.س</p>
</body>
</html>";

// One in-process call — shaping, bidi, and RTL layout
// are handled automatically.
byte[] pdf = HtmlConverter.ConvertToBytes(html);

Arabic, Hebrew, Devanagari, and Thai fonts are embedded with zero setup — covering Gulf/MENA, South Asia, and Southeast Asia document formats out of the box.

Why it shapes correctly where lightweight converters don't

Bhowra.Ink Lightweight / archived HTML-to-PDF engines
Arabic contextual shaping (GSUB/GPOS) ✅ Bundled, zero setup ❌ Often unsupported
Right-to-left bidirectional layout ✅ Correct mixed RTL/LTR Frequently broken ordering
Text extraction order Correct logical order Can extract out of order
Fonts required Bundled in the assembly Manual font installation/wiring
Verified on ZATCA invoices, Gulf payslips Varies

Frequently asked

Does Bhowra.Ink support Arabic text shaping?

Yes. Full bidirectional text layout for Arabic and Hebrew is bundled — no extra packages, no manual font wiring — including contextual letterform shaping (GSUB/GPOS), verified on ZATCA tax invoices and UAE/Saudi payslips.

Which scripts are supported?

Arabic, Hebrew, Devanagari, and Thai fonts are embedded with zero setup, covering Gulf/MENA, South Asia, and Southeast Asia markets. CJK (Chinese/Japanese/Korean) and Persian/Urdu cursive scripts are not currently supported.

Why do cheaper HTML-to-PDF libraries mangle Arabic text?

Correct Arabic rendering requires contextual letterform shaping and right-to-left bidirectional layout — support that lightweight or archived rendering engines typically never implemented, so Arabic text renders as disconnected, wrongly-ordered glyphs.

Does the extracted text stay in the right order?

Yes. Text extraction and copy-paste from the generated PDF preserves correct logical reading order for Arabic and Hebrew content, not just correct visual shaping.

Ship Arabic and RTL documents that render correctly the first time.

Add Bhowra.Ink and generate correctly shaped Arabic PDFs in under a minute — no browser required.

Get Bhowra.Ink on NuGet → See the full library