pdf links

PDF Rendering
Convert PDF to Image (.NET)
Convert PDF to image on Android (Xamarin)
Convert PDF to image on iOS (Xamarin)
Convert PDF to image in Windows Store apps (.NET)
Convert PDF to image in Windows Phone apps (.NET)
PDF to image in Universal Windows Store apps (.NET)
Free PDF Viewer control for Windows Forms (.NET)
How to integrate PDF Viewer control in WPF app (.NET)
Creating WPF PDF Viewer supporting bookmarks (.NET)
Cross-platform PDF Viewer using GTK# (MONO)
Silverlight PDF viewer control (Silverlight 5)
Multithreaded PDF rendering (.NET)
Convert pdf to image in Silverlight app (C# sample)
How to set fallback fonts for PDF rendering (C#)
Avoiding the out-of-memory exception on rendering (C#)
PDF viewer single page application (WebAPI, AngularJS)
PDF viewer control for Windows 10 universal applications
Use custom ICC profile for CMYK to RGB conversion
PDF layers - separate images, text, annotations, graphics

PDF Forms Creation PDF Security
Conversion to PDF/A
Other topics
PDF Document Manipulation PDF Content Generation
Fixed and Flow layout document API (.NET)
Creation of grids and tables in PDF (C# sample)
How to create interactive documents using Actions (C# sample)
Text flow effects in PDF (C# sample)
How to generate ordered and bulleted lists in PDF (C# sample)
Convert HTML to PDF using flow layout API (C# sample)
How to use custom fonts for PDF generation (.NET)
Create document with differently sized pages (C#)
Create PDF documents using MONO (C#/MONO/Windows/OSX)
How to use background images for content elements (C#/PDF Kit/FlowLayout)
Add transparent images to PDF document (C#)
Draw round rect borders in PDF documents(C#)
ICC color profiles and and ICC based colors in PDF (C#)
How to use bidirectional and right to left text in PDF (C#)
Create PDF documents from XML templates (C# sample)
How to resize PDF pages and use custom stamps (C#)
Add header and footer to PDF page (.NET sample)
How to use clipping mask for drawing on PDF page
Fill graphics path with gradient brushes in PDF (Shadings)
Apitron PDF Kit and Rasterizer engine settings
Add layers to PDF page (optional content, C# sample)
How to create free text annotation with custom appearance
PDF Content Extraction PDF Navigation
PDF to TIFF conversion
Contact us if you have a PDF related question and we'll cover it in our blog.

2015-12-08

Unicode bi-directional and right to left text in PDF documents

Introduction


Apitron PDF Kit for .NET component fully supports right to left texts written in languages such as Arabic, Hebrew and others, as well as bi-directional writings created by mixing RTL and LTR languages. In this article we’ll show how to create a PDF document containing all these variations.


The code


Code sample below creates a grid in on PDF page which contains LTR, BIDI and RTL text blocks.

class Program
{
    static void Main(string[] args)
    {
        // create flow document
        FlowDocument doc = new FlowDocument()
                            {
                                Margin = new Thickness(10)
                            };

        // register style for grid rows
        doc.StyleManager.RegisterStyle("gridrow", new Style()
            {
                Font = new Font("Traditional Arabic", 20),
   Align = Align.Center
            });

        // register style for header row
        doc.StyleManager.RegisterStyle("gridrow.header",new Style()
            {
                Background = RgbColors.Gray,
                Color = RgbColors.White,
                Font = new Font(StandardFonts.Helvetica, 20)
            });

        // create grid
        Grid grid = new Grid(150,Length.Auto, 150);
           
        // add header row
        grid.Add(new GridRow(new TextBlock("LTR"),new TextBlock("BIDI"),
            new TextBlock("RTL")){Class = "header"});

        // add content row
        grid.Add(new GridRow(
                new TextBlock("Apitron PDF Kit"),
                new TextBlock("PDF يخلق وثائق Apitron PDF KIT"),
                new TextBlock("مرحبا بالعالم") // hello world
            ));

        // add grid to the document object
        doc.Add(grid);

        // generate PDF document
        using (Stream fs = File.Create("output.pdf"))
        {
            doc.Write(fs, new ResourceManager());
        }
    }
}


This code sample uses FlowLayout API to create the document, but RTL and BIDI are supported by the FixedLayout API as well. Complete project is available on github.


The image below demonstrates the resulting document:

Pic. 1 RTL and BIDI text in PDF document

Pic. 1 RTL and BIDI text in PDF document

You can see that Arabic text in both BIDI and RTL columns is written correctly.


Conclusion


Apitron PDF Kit for .NET component is flexible enough to handle any text manipulation task with the power of its unique PDF processing engine. In addition to PDF docs creation, it supports text searching in bidi and rtl documents, and implements advanced font substitution and resolution algorithms.

Downloadable version of this article can be found by the following link [PDF].

No comments:

Post a Comment