2010-01-22 82 views
2

这几乎是this unanswered question的副本,但希望有人知道现在正在观看,并可能有所帮助。使用iTextSharp保存文件PDF文件中使用的字体

我正在寻找能够让一些.NET代码将字体嵌入到PDF中的字体提取到字体文件。我目前正在使用iTextSharp,但我可以使用其他.NET库(例如PDFBox,PDF CLown等)。我能够从BaseFont.GetDocumentFonts()迭代信息,但我不清楚如何将字体流式传输到字体文件。

感谢,肯尼

+0

这被认为是盗版,除非嵌入字体在公共领域。 –

+0

我们的计划是将它们作为相同类型的转换文档中的受保护字体传递,而不是窃取它们。 – kenny

+1

我应该在文档所有者批准的情况下添加。 – kenny

回答

0

我没有得到答案,但我确实发现了几个基于供应商的解决方案。来自pdf-tools.com的软件,pdfextract.exe工作得很好。另外quickpdflibrary.com的图书馆工作得很好,是我们一起工作的供应商,迄今为止非常开心。

+0

你知道一种阅读pdf中使用的字体名称的方法吗?我正在开发一个项目,其中pdf需要转换为PDF/A,并且需要字体追加。 – Highmastdon

+0

@Highmastdon对不起,我处理PDF文件已经太多年了。我很自信,你可以很容易地获得字体名称。 – kenny

1

@Highmastdon - 它至少在iText/iTextSharp(pdfBox以及 - 但我现在没有代码)中确实很容易得到字体名称,但在iTextSharp中,您将执行以下操作:

PdfReader reader = new PdfReader(strFileName); 
List<object[]> strFonts = BaseFont.GetDocumentFonts(reader); 

在那里,大多数库都支持写入字体的简单提取(在任何情况下的名称)。

+0

FontNames yes。但是当时我正在寻找嵌入式字体。谢谢,但我很久以前就离开了那场演出。 – kenny

1

我之前提供了一个响应,但是为了在本站上添加可靠的示例(我三个月前需要的东西),我将遍历最终使用的解决方案。

我下载了MuPDF并进入bin文件夹,检索文件mutool.exe。然后我用C#中的一个单独的进程调用它。它通过拉取PDF文件中嵌入的所有字体并将其转储到包含mutool.exe的文件夹中。然后,它只是一个从那里移动的字体,我希望他们在文件夹的问题。

 /// <summary> 
     /// Extract all fonts from PDF 
     /// </summary> 
     /// <param name="strPDFName"></param> 
     public static void ExtractAll(string strPDFName) 
     { 
      if (strMUTOOL != null && strFontFinal != null) 
      { 
       Process p = new Process(); 
       p.StartInfo.FileName = strMUTOOL; 
       p.StartInfo.Arguments = "extract \"" + strPDFName + "\""; 
       p.StartInfo.UseShellExecute = false; 
       p.StartInfo.RedirectStandardError = true; 
       p.StartInfo.RedirectStandardOutput = true; 
       p.StartInfo.CreateNoWindow = true; 
       p.StartInfo.WorkingDirectory = strMUTOOL.Replace("mutool.exe", "").Trim(); 

       p.Start(); 
       p.WaitForExit(); 

       var standardError = p.StandardError.ReadToEnd(); 
       var standardOutput = p.StandardOutput.ReadToEnd(); 
       var exitCode = p.ExitCode; 
      } 
     } 

作为一个有点抬头,大多数字体都是CFF文件,你需要他们,如果转换你打算使用它们。另外,如前所述,如果这些字体是付费字体,则使用这些字体可能会构成软件盗版。最后,这些字体通常只是子集,不包含完整的字形集 - 只是PDF中使用的字形。

相关问题