繁体   English   中英

如何在 C# 中使用 itextsharp 创建带有泰米尔语字体的 PDF 文件?

[英]How to Create PDF file with Tamil Font by using itextsharp in C#?

我们通过传递泰米尔语文本(一种印度语言)在我们的 C# 应用程序中创建 pdf 文件。所以,我已经为我的泰米尔语字体安装了 AVVAIYAR.TTF(一种泰米尔语字体)字体。但是当我运行下面提到的pgm,创建的 pdf 文件不包含任何泰米尔语字体显示。它显示空行而不是泰米尔语文本...

C#代码:

Document document = new Document();
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(@"C:\pdfout.pdf", FileMode.Create));
document.Open();

PdfContentByte pcb = writer.DirectContent;
Font ft = new Font();
FontFactory.Register(@"C:\WINDOWS\Fonts\AVVAIYAR.TTF", "AVVAIYAR");
ft = FontFactory.GetFont("AVVAIYAR");

Paragraph pr1 = new Paragraph("இது முதல் பேரா", ft);
Paragraph pr2 = new Paragraph("This is a Sub Paragraph");
Paragraph pr3 = new Paragraph("This is the Second Paragraph");

document.Add(pr1);
document.Add(pr2);
document.Add(pr3);
document.Close();

我的输出pdf文件是:

<blank line>
This is a Sub Paragraph
This is the Second Paragraph

而且我还必须支持更多的印度语言来创建 PDF 文件。

你能试试下面的代码片段吗?

string fontpath = Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\AVVAIYAR.TTF";
BaseFont basefont = BaseFont.CreateFont(fontpath, BaseFont.IDENTITY_H, true);
Font AVVAIYARFont = new iTextSharp.text.Font(basefont, 24, iTextSharp.text.Font.NORMAL, iTextSharp.text.Color.BLUE); /*For test color blue is placed with some foramtting.*/

Paragraph pr1 = new Paragraph("இது முதல் பேரா", AVVAIYARFont);

这应该工作...

一个开箱即用的想法,iText 目前还没有完全支持所有印度语言......看到这里他们说他们没有足够的志愿者来支持这一点。

我已经引用了 ARIALUNI.TTF。我试过这样,

string fontpath = Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\ARIALUNI.TTF"; 
BaseFont basefont = BaseFont.CreateFont(fontpath, BaseFont.IDENTITY_H, true);
Font font = new iTextSharp.text.Font(basefont, 24, iTextSharp.text.Font.NORMAL, iTextSharp.text.Color.BLUE);
Paragraph pr1 = new Paragraph("இது முதல் பேரா", AVVAIYARFont);

所以,现在泰米尔语字体显示在pdf文件中。但是简单的拼写错误......所以我正在阅读这个问题......

进行1:

第 1 步:转到http://software.nhm.in/services/converter网站

step2:粘贴这个词படிவம்-டி ஊதியம் சீட்டு /விடுப்பு அட்டை

step3:1.将第一个下拉列表更改为 Unicode ,2.将第二个下拉列表更改为 TAB

step5:点击按钮转换器

step6.text 将被对齐。

步骤 7:主要过程从听到开始

1.将第二个下拉菜单更改为 TSCI 并单击转换。(不要惊慌,不会存在任何更改)

2.现在将第一个下拉菜单自动更改为 Unicode,泰米尔语文本将更改为“ÀÊÅõ-Ê °¾¢Âõ º£ðÎ /Å¢ÎôÒ «ð¨¼”;

3.复制内容并将其放在记事本中。

过程2:

1.首先下载TSC-Sri.ttf( http://www.eaglefonts.com/download.php?action=zip&image_id=129859 )

2.保存或移动到c:\Windows\fonts

3.最后在c#程序中粘贴下面的代码

     string fontpath = Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\TSC-Sri.ttf";
    BaseFont basefont = BaseFont.CreateFont(fontpath, BaseFont.IDENTITY_H, true);
    iTextSharp.text.Font font = new iTextSharp.text.Font(basefont, 24, iTextSharp.text.Font.NORMAL, iTextSharp.text.BaseColor.BLUE);
    Paragraph pr1 = new Paragraph("ÀÊÅõ-Ê °¾¢Âõ º£ðÎ /Å¢ÎôÒ «ð¨¼ ", font);

4.运行 itextsharp pdf 程序输出为例外 100% 工作。

一个可行的替代方案是Quest PDF

using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

Document.Create(container =>
{
    container.Page(page =>
    {
        page.Size(PageSizes.A4);
        page.Margin(2, Unit.Centimetre);
        page.PageColor(Colors.White);
        page.DefaultTextStyle(x => x.FontSize(20));
        page.DefaultTextStyle(x => x.FontFamily("Vijaya"));
        
        page.Header()
            .Text("தமிழ் PDF!")
            .SemiBold().FontSize(36).FontColor(Colors.Blue.Medium);
        
        page.Content()
            .PaddingVertical(1, Unit.Centimetre)
            .Column(x =>
            {
                x.Spacing(20);
                
                x.Item().Text("தமிழ் (Tamil language) தமிழர்களினதும் தமிழ் பேசும் பலரின் தாய்மொழி ஆகும். தமிழ், உலகின் உள்ள முதன்மையான மொழிகளில் ஒன்றும் செம்மொழியும் ஆகும்.");                
            });
        
        page.Footer()
            .AlignCenter()
            .Text(x =>
            {
                x.Span("பக்கம் ");
                x.CurrentPageNumber();
            });
    });
})
.GeneratePdf("தமிழ்.pdf");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM