2016-08-05 54 views
0

我有一个打印过程,我们不允许使用字体替换来保持文档的完整性。唯一的方法是确保所有字体都被嵌入。我在调用FontFactory.GetFont(字符串字体名,字符串编码,bool嵌入,浮点大小)过载时指定嵌入选项。下面的代码是我用来试图找出解决方案的测试代码。不幸的是,生成的pdf没有嵌入字体。未嵌入ItextSharp中的字体

public static void TestPDFEmbedd() 
    { 
     Document document = new Document(); 
     PdfWriter.GetInstance(document, new FileStream(SystemPaths.SystemPath + "\\Production\\Test.pdf", FileMode.Create)); 
     document.Open(); 
     FontFactory.Register("c:\\windows\\fonts\\tahomabd.ttf","address_font"); 
     Font font = FontFactory.GetFont("address_font",BaseFont.CP1252,true,10f); 
     document.Add(new Paragraph("Testing 123", font)); 
     document.Close(); 

    } 
+1

如果您看到Helvetica而不是Tahoma Bold,您的字体路径是错误的。 –

回答

1

此问题无法复制。测试结果在下面的PDF:

enter image description here

我知道这是不是一个答案,但是这是我能想到的唯一方式共享的屏幕截图。实际上,这个问题没有答案,因为所描述的问题不能用共享的信息复制。

正如你所看到的,iTextSharp嵌入了字体。更具体地说,是字体的一个子集。如果你想嵌入全字体,你需要使用在这个问题的答案中解释的方法:embed font into pdf using itextsharp

阅读这个答案,你也会注意到过去有一些字体错误;当人们抱怨某些不起作用的东西时,我们总是假定他们正在使用最新版本。这个假设是合理的,因为人们抱怨多年前修复的错误是没有意义的。

+1

我有版本5.5.7,安装版本5.5.9,并提出了相同的问题。我将字体从tahomabd.ttf更改为tahoma.ttf,并导致嵌入字体的pdf。我切换回tahomabd.ttf,它不会嵌入。尝试cour.ttf等,它也不会嵌入。显示的字体名称相似但不同。例如,在tahomabd.ttf中,它显示为tahoma-bold,并用它代替tahoma,大胆。它可能是错误的Windows 10? –

+0

我能够复制您的场景,文档属性和预检功能显示嵌入的字体。当我转到“工具 - >高级编辑 - >触摸文本工具”并突出显示文本并查看属性时,它表示字体不可用于查看。 Acrobat Reader Pro中似乎存在差异 –

+0

您是否阅读过我的答案?我解释说,*字体的一个子集*被嵌入。这反映在文档属性中,当您检查字体是否嵌入时,PDF会通过预检。但是,您想使用该字体来添加文本。这是行不通的。例如:文本“测试123”不包含字母** a **。因此,您不能在该字母中添加任何Tahoma粗体文本,因为它不在嵌入子集中。 –