Добавьте текст на языке справа налево к пользовательской позиции существующего файла PDF с помощью iTextSharp - PullRequest
0 голосов
/ 23 апреля 2011

Привет Я хочу добавить текст на персидском языке (справа налево) в начало существующего PDF-файла, используя библиотеку iTextSharp Version 5.0.0.0.

Я использую этот код:

public static void InsertText(string SourceFileName, string TargetFileName, string Text, int x, int y)
{
    PdfReader reader = new PdfReader(SourceFileName);            
    Document document = new Document(PageSize.A4, 0, 0, 0, 0);  // open the writer 

    FileStream fs = new FileStream(TargetFileName, FileMode.Create, FileAccess.Write);
    PdfWriter writer = PdfWriter.GetInstance(document, fs);
    document.Open();


    PdfContentByte cb = writer.DirectContent;  // select the font properties
    FontFactory.RegisterDirectories();
    Font fTahoma = FontFactory.GetFont("Tahoma", BaseFont.IDENTITY_H, 10, Font.NORMAL, BaseColor.RED);
    writer.SetMargins(0, 0, 0, 0);

    ColumnText ct = new ColumnText(writer.DirectContent);

    ct.RunDirection = PdfWriter.RUN_DIRECTION_RTL;            
    Phrase p = new Phrase(Text, fTahoma);
    ct.SetText(p);

    ct.SetSimpleColumn(x, y, x + 350, y + 20);            
    ct.Go();           

    for (int i = 1; i <= reader.NumberOfPages; i++)
    {
        PdfImportedPage page = writer.GetImportedPage(reader, i);

        cb.AddTemplate(page, 0, 0);  // close the streams and voilá the file should be changed :)                
        document.NewPage();
    }

    document.Close();
    fs.Close();
    writer.Close();
}

Я звоню InsertText("Source.pdf", "Target.pdf", "Persian message", 10, 800); Мой размер файла source.pdf: высота: 842, ширина: 595

К сожалению, я получаю target.pdf только с половиной своего сообщения! Другая вертикальная половина скрыта! Теперь вопрос: как я могу добавить текст на языке справа налево в начало существующего PDF-файла?

1 Ответ

0 голосов
/ 25 апреля 2011

Проблема: импортированная страница, вероятно, перезаписывает текст.

Решение: Добавьте свой PdfImportedPage, ТО затем добавьте текст.

...