2010-01-22 79 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中使用的字形。

相關問題