C# iText嵌入字体失败

C# iText嵌入字体失败,c#,pdf,itext,C#,Pdf,Itext,我有一个从pdf模板创建pdf的函数。该模板包含6行文本 其中5行的字体应为“Myriad Pro”。这个很好用。 另一行(“名称”)的字体应为“TheSerif”。我们通过合法供应商购买了这种字体。这条线似乎不起作用。函数不会抛出错误,但在输出PDF中该行不可读 我对两种字体使用相同的程序,所以我不知道为什么第二种字体不起作用 BaseFont Myriad = null; BaseFont TheSerif = null; Myriad = BaseFont.CreateFon

我有一个从pdf模板创建pdf的函数。该模板包含6行文本

其中5行的字体应为“Myriad Pro”。这个很好用。 另一行(“名称”)的字体应为“TheSerif”。我们通过合法供应商购买了这种字体。这条线似乎不起作用。函数不会抛出错误,但在输出PDF中该行不可读

我对两种字体使用相同的程序,所以我不知道为什么第二种字体不起作用

  BaseFont Myriad = null;
  BaseFont TheSerif = null;

  Myriad = BaseFont.CreateFont("D:\\Drukwerk\\MYRIADPRO-REGULAR.OTF", BaseFont.WINANSI, BaseFont.EMBEDDED);
  TheSerif = BaseFont.CreateFont("D:\\Drukwerk\\TSer6C__.pfm", BaseFont.WINANSI, BaseFont.EMBEDDED);

  pdfFormFields.SetFieldProperty("name", "textfont",TheSerif , null); 
  pdfFormFields.SetFieldProperty("Function", "textfont",Myriad, null);
  pdfFormFields.SetFieldProperty("telephone", "textfont",Myriad, null);  
  pdfFormFields.SetFieldProperty("mobile", "textfont",Myriad, null);  
  pdfFormFields.SetFieldProperty("fax", "textfont",Myriad, null);    
  pdfFormFields.SetFieldProperty("emailadres", "textfont",Myriad, null); 
编辑: 我将字体创建更改为以下内容

TheSerif = BaseFont.CreateFont("D:\\Drukwerk\\TSer6C__.pfm", 
                                BaseFont.WINANSI,
                                BaseFont.EMBEDDED, 
                                true, 
                                FileToByteArray("D:\\Drukwerk\\TSer6C__.afm"), 
                                FileToByteArray("D:\\Drukwerk\\TSer6C__.pfb"));

此函数将pfb和afm文件作为参数。我现在收到以下错误:“不是有效的.pfm文件”

pfm文件是postscript字体的字体度量文件(打印机字体度量)。此文件不包含任何字符绘制命令


PFM文件通常与包含字形图形的PFB或PFA文件一起使用,这是您应该使用的文件。

我对itext不太熟悉,但在处理PFM时,您应该尝试使用此重载BaseFont CreateFont(字符串名称、字符串编码、bool嵌入、bool缓存、byte[]ttfAfm、byte[]PFB、bool noThrow)。您必须将pfb文件数据指定为字节数组tanks,我将尝试此函数。您知道如何将pfb和ttfAfm作为字节数组传递吗?我找到了一个函数来获取字节数组。我更新了我的question.File.ReadAllBytes(pfbFileName)应该返回一个包含pfb文件数据的字节[],如果指定null而不是afm字节数据,会发生什么?pfm和afm应携带或多或少相同的度量数据;我认为你不必两个都指定