编辑:更好的解释: 在为这个问题设置赏金之前,我想更清楚地说明我需要什么:
我需要 .NET 库来生成可打印文档。用户应该能够使用我的应用程序或使用外部工具(如 Adobe Acrobat 阅读器)打印他们看到的完全相同的文档。它不一定是生成PDF文档的库,任何满足上述条件的文档格式都可以。
我需要该库来支持以下场景:
场景一:
- 我以某种字体和颜色创建文本。
- 如果打印此文本,我向图书馆询问宽度。
- 我根据来自 2. 的信息计算此文本的位置(页面上的 [X,Y] 坐标),并让库在页面上的此位置打印。
场景二:
- 我创建了一个文本,其中的某些部分用上标表示。文本的所有部分(正常和上标)都使用相同(但可变)的字体。
- 我问图书馆如果这个文本在打印时的宽度是多少。我得到了正确的答案,它也考虑了普通文本和上标之间的字距调整。
- 我在应打印此文本的页面上计算位置([X,Y] 坐标)(使用步骤 2 中的宽度)。我让图书馆在这个位置打印它。打印在页面上的宽度与上一步中库返回的宽度完全相同。
第二种情况的注意事项:我有一些上标部分的文本 - 示例AAA{v-superscript text}BBB
({}
大括号中的文本是上标)。库需要能够使用正确的kerning打印此文本。A
如果没有正确的字距调整,last和 first superscript之间的间距将与v
last superscriptt
和 first之间的间距相同B
。对于用户来说,看起来A
和上标之间有一个空格,v
但在最后一个上标字母之后没有空格。所以文字看起来很难看。如果库要正确处理此问题,它将有方法AAA{v-superscript text}BBB
一次打印整个文本,并指定其中一部分为上标。然后它将在普通文本和上标之间使用正确的字距调整。
场景 3:
- 我想在页面的确切点上打印由线条、圆圈、实心圆圈、字母和贝塞尔曲线组成的图片。我需要指定线条和圆圈的宽度。所有形状都需要以像素精度打印。
该库应该是免费的,而不是 GPL(LGPL 可以)。有什么可以让我做我需要的事情吗?可以用 iTextSharp(LGPL 而非 AGPL 的 4.1.6 版)来完成吗?或者也许是固定文件?感谢您的任何建议。
原始问题:
我需要在 .NET (C#) 应用程序中为用户排版复杂的文档。这些文件的主要用途是打印。
文档将包含文本和简单生成的图形。文本和图形的布局将很复杂,需要计算(换句话说,文档中的文本位置需要由我的代码控制,它不会由所选库自动完成)。
这是我的 API 要求:
- 返回给定字符串和给定字体的确切宽度的函数,其中文本应该出现
- 将文本定位到页面上的确切位置的能力
- 在超级脚本中包含部分文本
- 获取某些文本的确切宽度的函数,该文本的某些部分在上标中
- 添加图片的能力甚至更好的选择来绘制简单的图形(给定厚度的线,给定半径/直径的实心圆)
它不必是用于创建 PDF 文档的库 - 任何其他“所见即所得”的文档格式也可以。如果有可以显示此类文档的 WPF 组件,那将是一个优势。我知道有 iTextSharp,但用 iTextSharp 实现 4. 要求并不容易。当然,一些满足上述要求的 PDF 生成库也将是很好的解决方案。
感谢您的任何建议,我也很乐意提供详细信息或更清晰的解释。