PDFSharp 常见问题
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。为便于使用,单位可以从英寸、厘米、毫米或者其它单位转换过来。