编辑:更好的解释:
在为这个问题设置赏金之前,我想更清楚地说明我需要什么:
我需要一个.NET库来生成可打印文档。用户应该能够打印出与他们使用我的应用程序或外部工具(如Adobe Acrobat Reader)看到的完全相同的文档。它不必是用于生成PDF文档的库,任何满足上述条件的文档格式都可以。
我需要该库支持以下场景:
场景1:
- 我创建了一些字体和颜色的文本。
- 我询问库打印此文本时的宽度。
- 我根据第2步的信息计算出此文本在页面上的位置([X,Y]坐标),并让库在此位置打印。
场景2:
- 我创建了一个文本,其中一些部分为上标。所有文本部分(正常和上标)都采用相同的(但可变的)字体。
- 我询问库打印此文本时的宽度。我得到正确的答案,该答案还考虑了正常文本和上标之间的字距。
- 我计算出此文本应在页面上打印的位置(使用步骤2中的宽度)。我让库在此位置打印它。在页面上打印,其宽度与先前步骤中库返回的宽度完全相同。
第二个场景的注意事项:我有一些部分为上标的文本 - 例如AAA{v-上标文本}BBB
(其中{}
括号中的文本为上标)。该库需要能够使用正确的字距打印此文本。如果没有正确的字距,最后一个A
和第一个上标v
之间将有相同的间隔,就像最后一个上标t
和第一个B
之间一样。对于用户来说,看起来A
和上标v
之间有一个空格,但是最后一个上标字母之后没有空格。因此,文本看起来很丑陋。如果库要正确处理此问题,它将具有一种方法,可以一次打印整个文本AAA{v-上标文本}BBB
并指定其中一部分为上标。然后它将在正常文本和上标之间使用正确的字距。
场景3:
- 我想要打印一个由线条、圆、填充圆、字母和贝塞尔曲线组成的图片,放在页面上的确切位置。我需要指定线条和圆的宽度。所有形状都需要以像素精度打印。
原始问题:
我需要在 .NET(C#)应用程序中排版复杂文档,主要用途是打印。文档将包含文本和简单生成的图形。文本和图形的布局将是复杂的,并且需要计算(换句话说,文档中的文本位置需要由我的代码控制,而不是由选定的库自动完成)。
以下是我的 API 要求:
1.返回给定字符串和给定字体的精确宽度的函数 2.能够将文本精确定位于页面上的确切位置 3.使一部分文本成为上标 4.获取某些文本的确切宽度,其中一部分文本为上标 5.能够添加图片或更好的选择是绘制简单的图形(给定厚度的线条、给定半径/直径的填充圆)
它不必是创建 PDF 文档的库 - 任何其他“所见即所得的将被打印”文档格式也可以做到。如果有 WPF 组件可以显示此类文档,则具有优势。当然,满足上述要求的某些 PDF 生成库也是很好的解决方案。
谢谢任何建议,我也很乐意提供详细信息或更清晰的解释。