我正在使用 iText 7.net 根据用户语言选择输入创建印地语或英语的 pdf,但我无法想出任何方法将我选择的印地语 .ttf 字体文件转换为 itext Pdffonts。 它使用标准的 Itext 字体在英语中运行良好。

这是我的代码:

    PdfFontFactory.Register(HindiFont1.ToString(), "HindiFont1");

    //Error at this line: Font Not Recognized
    PdfFont myHindiFont1 = PdfFontFactory.CreateFont("HindiFont1", PdfEncodings.IDENTITY_H, true);
    //Create Writer
    PdfWriter writer = new PdfWriter(path);

    //Create Pdf Document Object
    PdfDocument pdf = new PdfDocument(writer);
    Document document = new Document(pdf, size);
    PdfPage page1 = pdf.AddNewPage();
     PdfCanvas canvas3 = new PdfCanvas(page3);
    Rectangle pageSize3 = page3.GetPageSize();

    //String in Title9 Paragraph is a translation of English Phrase
     iText.Layout.Element.Paragraph Title9 = new iText.Layout.Element.Paragraph("ew[;kad fo'kslrk;sa%");

    Title9.SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER);
   // Title9.SetFont(myHindiFont1);

     document.Close();

代码在顶部保存 pdf 第二行时出错。 变量 HindiFont1 保存印地语字体 .ttf 文件。

Title9段落中的字符串是英文短语的翻译。

任何人都可以帮助使用我的印地语字体吗? 我有 4-5 种字体要使用。

#1楼 票数:1 已采纳

首先,要检索以前注册的字体,请使用PdfFontFactory方法CreateRegisteredFont而不是CreateFont 因此,替换

PdfFont myHindiFont1 = PdfFontFactory.CreateFont("HindiFont1", PdfEncodings.IDENTITY_H, true);

经过

PdfFont myHindiFont1 = PdfFontFactory.CreateRegisteredFont("HindiFont1", PdfEncodings.IDENTITY_H, true);

然后,如果要在要以特定字体绘制的段落中添加文本,请先设置字体,然后添加文本。 因此,而不是

iText.Layout.Element.Paragraph Title9 = new iText.Layout.Element.Paragraph("ew[;kad fo'kslrk;sa%");
Title9.SetFont(myHindiFont1);

iText.Layout.Element.Paragraph Title9 = new iText.Layout.Element.Paragraph().SetFont(myHindiFont1).Add("ew[;kad fo'kslrk;sa%");

或者,您可以将该字体设置为文档默认字体:

Document document = new Document(pdf, size);
document.SetFont(myHindiFont1);

iText.Layout.Element.Paragraph Title9 = new iText.Layout.Element.Paragraph("ew[;kad fo'kslrk;sa%");

最后,将您的新段落添加到某个实体,例如

document.Add(Title9);

结果:

在此处输入图片说明


这是我用来成功渲染上述屏幕截图的最终代码:

String HindiFont1 = @"LEOPALMHINDI15K710.TTF";
PageSize size = PageSize.A4;

PdfFontFactory.Register(HindiFont1, "HindiFont1");

//Error at this line: Font Not Recognized
PdfFont myHindiFont1 = PdfFontFactory.CreateRegisteredFont("HindiFont1", PdfEncodings.IDENTITY_H, true);
//Create Writer
PdfWriter writer = new PdfWriter(@"UseLeopalmhindi15K710LikeDivyanshuAgarwalImproved.pdf");

//Create Pdf Document Object
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf, size);
//document.SetFont(myHindiFont1);
//String in Title9 Paragraph is a translation of English Phrase
//iText.Layout.Element.Paragraph Title9 = new iText.Layout.Element.Paragraph("ew[;kad fo'kslrk;sa%");
iText.Layout.Element.Paragraph Title9 = new iText.Layout.Element.Paragraph().SetFont(myHindiFont1).Add("ew[;kad fo'kslrk;sa%");

Title9.SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER);

document.Add(Title9);

document.Close();

  ask by Divyanshu Agarwal translate from so

未解决问题?本站智能推荐:

2回复

字体不支持“常规”样式 - 在 C# 中使用半粗字体

我有一个 TrueType 字体,它是“Semibold”。 我尝试在以下方法中使用它: 在我提供字体名称的地方,它会找到Sentinel-SemiboldItalic.ttf字体。 作为FontStyle ,我尝试提供 .NET 框架中的任何选项(常规、粗体、斜体、下划线和删除线)。 无论如
1回复

使用 iText7 创建字体“Courier_new”

我正在尝试使用 iText7 包在 C# 中创建一个Courier new的字体Courier new 。 我只能在标准字体中找到 Courier,但我想使用Courier new 。 我的代码如下所示: 如何使用 iText7 创建自定义字体?
4回复

如何将按钮字体设置为 Marlett

我正在尝试将按钮字体设置为系统的 Marlett 字体。 但是,虽然我手动设置了字体,但使用了其他字体。 此外,当我使用字体对话框为该按钮选择字体时,未列出 Marlett。 为什么会这样? 如何在 .NET Windows 窗体控件中使用 Marlett 字体?
5回复

在 C# winform 中,我得到:“仅支持 truetype 字体。 这不是 TrueType 字体”

我有 C# winform,我安装了几个 ttf 字体,但是当我将文本框字体设置为我下载的任何字体时,我收到此错误即使我 100% 确定我安装的字体是 ttf ..为什么 ? 以及如何解决这个问题?
1回复

如何使用 iText7 确定 Type 3 PDF 字体的实际字体名称?

我正在尝试使用 iText7 读取 PDF 中使用的所有字体。 为此,我创建了一个IEventListener ,它从TextRenderInfo读取字体,如下所示: 这似乎工作正常,并允许我阅读所有 Type 1 字体。 但是调用GetFontProgram().GetFontNames().
1回复

如何嵌入其他PDF iText 7中的所有字体

我正在尝试使用iText7 / C#覆盖两个PDF文件。 第一个是背景,第二个是包含表单字段。 一切正常,唯一的问题是我从第二个文件中丢失了字体。 我尝试如下: 所以基本上我从第二个PDF中获取所有字体并将它们复制到最终PDF中。 但这行不通。 从逻辑上讲,我认为将原始
1回复

如何使用iText7将字体嵌入pdf / a

我正在尝试查看如何将字体嵌入到pdf / a中。 我使用iTextSharp找到了很多答案。 在我的cas中,我使用iText7,而我尝试的所有操作都给了我错误: “所有字体都必须嵌入...” 我的字体有一个ttf文件,但没有找到将其嵌入到pdf中使用的方法... 有人可
1回复

为什么我无法在persistentDataPath的Unity android游戏中找到字体文件(.ttf)?

有人可以指导我朝着正确的方向前进吗? 我在 VS 2017 上使用 C# 在 unity 2018.4.9 上制作的 android 游戏无法检测到持久数据路径中的文件。 这两个字体文件位于持久数据路径目录中。 这是我定位两个字体文件的代码。 Debugtext.text 是一个文本框,