PDFSharp 常見問題
PDFsharp: Frequently Asked Questions - PDFsharp and MigraDoc Wiki
1. PDFSharp 是什么?
PDFSharp 是可以用來程序化創建和修改 Adobe PDF 文檔的 .NET 庫。使用 C# 語言開發,可以用於任何 .NET 語言項目。
2. PDFSharp 依賴或者使用任何其它的工具或者庫嗎
PDFSharp 是全新設計並從頭使用 C# 開發的,既不使用 Adobe 的 PDF 庫,也不需要 Acrobat。
3. PDFSharp 的授權類型是什么?
PDFSharp 是開源軟件。你可以復制、修改並集成 PDFSharp 源代碼到你的應用中,而完全沒有限制。
4. PDFSharp 可以用來顯示 PDF 文件嗎?打印 PDF 文件呢?從 PDF 文件創建圖片?
PDFSharp 提供了一個預覽控件,用來可視化 XGraphics 對象的繪制操作,但它不能用來渲染 PDF 文件。
盡管來自頁面的 XObject 對象的 DrawImage 函數可以用來繪制,如果你嘗試使用它渲染這樣的對象進行預覽,只有邊框可以繪出,它並不能用來渲染。
注意:使用 Pdfium 可以提供 PDF 渲染支持,參見:在 .NET 下使用 Pdfium 渲染和打印 PDF
5. 可以在 PDFSharp 中使用 PostScript 字體嗎?
PDFSharp 不能使用 PostScript 字體。只有 TrueType 字體和使用 TrueType 輪廓的 OpenType 字體可以被 PDFSharp 所使用。
6. 可以中 Medium 信任等級下,在 Web 服務器上使用 PDFSharp 嗎?
使用 PDFSharp 1.50,你可以在 Web 服務器上不要求完全信任環境下運行應用程序,你只能使用你自己通過 FontResolver 所提供的字體。見:PDFsharp Sample: Private Fonts
7. PDFSharp 支持 Arabic,Hebrew,CJK (中、日、韓) 嗎?
1.50 還不能支持。從右向左的語言也不能支持。只有簡單的語言,使用一對一的字符與字型簡單對應關系,例如應用或者德語被支持。
不支持做一點解釋。
如果你反轉字符串,並將所有的段落設置位左對齊的話,希伯來語看起來是可以的。
阿拉伯語基於字符的位置 ( 開始,結束,中間,單個 ) ,字符對應不同的字型。PDFSharp 不支持正確的選擇這些字型。如果你反轉字符串的話,並且如果你確保選擇正確的 Unicode 字符用於開始、結束、中間、或者獨立位置,阿拉伯與可能工作。確保你使用包含了阿拉伯字符的字體。
看起來簡體中文也是可以工作的。
8. PDFSharp 支持哪些 PDF 版本?
使用 PDFSharp,你可以創建從 1.2 ( Adobe Reader 3.0 ) 版本到 1.7 版本 ( Adobe Reader 8.0 ) 的 PDF 文檔。
PDFSharp 完全支持 PDF 1.4 標准 ( Adobe Reader 5.0 ),包括該版本引入的透明功能。
某些 PDF 1.5 ( Adobe Reader 6.0 ) 的功能還沒有實現,進而 PDFSharp 還不能打開所有標記位 PDF 1.5 或者更高版本的文檔。
由於沒有實現 PDF 1.5 中全部的壓縮功能,對這樣的文件在使用 PDFSharp 處理之后,尺寸可能會增大。
看起來是對對象流 object stream 不能支持造成的。
9. PDFSharp 支持 PDF/A 標准嗎?
PDFSharp 1.50 還不能支持。
10. PDFSharp 支持 AcroForms 嗎?
在 PDFSharp 1.5 中,對 AcroForms 提供有限支持。
11. 我可以使用 PDFSharp 將 HTML 或者 RTF 轉換為 PDF 嗎?
不能,沒有開箱即用的支持。我們也不准備開發這樣的轉換器。
是的,PDFSharp 加上一些額外的代碼是可以做到的,但我們不提供這樣的代碼。
在 NuGet 或者其它來源中,你可以找到第三方的庫 "HTML Renderer for PDF using PDFSharp",它可以將 HTML 轉換為 PDF。也可能還有其它庫實現類似的功能,可能你可以直接使用,你也可以從這些開始。
12. 我可以使用 PDFSharp 將 PDF 轉換為 Word、RTF、HTML 嗎?
不能,我們沒有計划開發這樣的代碼。
13. 我可以使用 SQL Server 2008 Reporting Services 創建的 PDF 文件嗎?
對於 SQL Server 2008 Reporting Services 創建的 PDF 還存在一些問題。我們正在處理中。
作為使用 SQL Server 2005 Reporting Service 來創建報表。
對於 SQL Server 2008 Reporting Service 的變通方式,對 ReportExecutionService 對象的 DeviceSetting 參數,提供如下值:
theDeviceSettings = "<DeviceInfo><HumanReadablePDF>True</HumanReadablePDF></DeviceInfo>";
這樣禁用 SSRS 2008 的 PDF 壓縮。進而,PDFSharp 就可以處理未壓縮的 PDF 文件。
SSRS 2005 會忽略該設置,所以它可以用於這兩個 SSRS 版本中。
14. 可以使用 PDFSharp 從 PDF 中抽取文本嗎?
可以使用底層操作來做到。你可以按照其繪制的順序得到文本字符 - 大多數的應用程序使用從上到下,從左到右的順序。並沒有高級的函數返回單詞、段落、或者整篇文檔。
15. PDFSharp 可以模擬加粗或者斜體嗎?
PDFSharp 1.50 還不能。
16. PDF 文件中的分辨率 DPI 是多少?可以如何設置該 DPI?
PDF 使用矢量格式,所以並沒有 DPI 分辨率的說法。PDF 中的光柵圖片有 DPI 分辨率,但分辨率由使用方式決定。
考慮一個 300DPI 的圖片,該圖片可以一次性嵌入到 PDF 文件中,但可以被多次繪制。可能在頁面 1 中呈現為縮略圖,在頁面 2 中以全尺寸呈現,在頁面 3 中雙倍呈現,可能在頁面 1 中使用 600 DPI,頁面 2 中使用 300 DPI,頁面 3 中使用 150 DPI。但是當你在 Adobe Reader 中查看 PDF 的時候,使用 1000% 的縮放因子將導致很低的分辨率。
PDF 本身使用矢量格式,所以並沒有 DPI。PDFSharp 使用 point 作為坐標系統的單位,每英寸對應 72 個 point。為便於使用,單位可以從英寸、厘米、毫米或者其它單位轉換過來。