gpt4 book ai didi

用于排版文档(PDF 或类似文件)的 .NET 库?

转载 作者:行者123 更新时间:2023-12-04 07:10:37 30 4
gpt4 key购买 nike

编辑:更好的解释:
在为这个问题设置赏金之前,我想更清楚地说明我需要什么:

我需要 .NET 库来生成可打印的文档。用户应该能够使用我的应用程序或使用外部工具(如 Adob​​e Acrobat 阅读器)打印他们看到的完全相同的文档。生成PDF文件不一定非得是库,满足以上条件的任何文件格式都可以。

我需要库来支持以下场景:

场景一:

  • 我用某种字体和颜色创建文本。
  • 如果打印此文本,我会向图书馆询问宽度。
  • 我根据 2. 中的信息计算此文本的位置(页面上的 [X,Y] 坐标),并让库在页面上的此位置打印。

  • 场景2:
  • 我用上标创建了一个文本的某些部分。文本的所有部分(正常和上标)都使用相同(但可变)的字体。
  • 如果打印此文本,我会问图书馆的宽度是多少。我得到的正确答案也需要 kerning正常文本和上标之间的考虑。
  • 我在应打印此文本的页面上计算位置([X,Y] 坐标)(使用步骤 2 中的宽度)。我让图书馆在这个位置打印它。打印在页面上的宽度与上一步中库返回的宽度完全相同。

  • 第二种情况的注意事项:我有一些带有上标部分的文本 - 示例 AAA{v-superscript text}BBB (其中 {} 大括号中的文本是上标)。图书馆需要能够使用正确的 kerning 打印此文本.如果没有正确的字距调整,最后一个 A 之间会有相同的差距和第一个上标 v在最后一个上标之间 t和第一个 B .对于用户来说, A 之间看起来像是有一个空格。和上标 v但最后一个上标字母后没有空格。所以文字会很难看。如果图书馆要正确处理这个问题,它将有方法打印整个文本 AAA{v-superscript text}BBB同时说明它的一部分是上标的。然后它将在普通文本和上标之间使用正确的字距调整。

    场景3:
  • 我想在页面中的精确点上打印由线条、圆圈、实心圆圈、字母和贝塞尔曲线组成的图片。我需要指定线和圆的宽度。所有形状都需要以像素精度打印。

  • 该库应该是免费的,而不是 GPL(LGPL 可以)。有什么可以让我做我需要的吗?可以使用 iTextSharp(4.1.6 版,即 LGPL 而不是 AGPL)来完成吗?或者也许使用固定文件?谢谢你的任何建议。

    原问题:

    我需要在 .NET (C#) 应用程序中为用户排版复杂的文档。这些文件的主要用途是打印。

    文档将包含文本和简单生成的图形。文本和图形的布局会很复杂,需要计算(换句话说,文档中的文本位置需要由我的代码控制,不会由所选库自动完成)。

    这是我的 API 要求:
  • 返回给定字符串和给定字体的确切宽度的函数,文本应在其中显示
  • 能够将文本定位到页面上的准确位置
  • 在上标中包含部分文本
  • 获取某些文本的精确宽度的函数,该文本的某些部分位于上标
  • 能够添加图片甚至更好的选项来绘制简单的图形(给定粗细的线,给定半径/直径的实心圆)

  • 它不必是用于创建 PDF 文档的库 - 任何其他“所见即所得”文档格式也可以。如果有可以显示此类文档的 WPF 组件,那将是一个优势。 我知道有 iTextSharp,但用 iTextSharp 实现 4. 要求并不容易。 当然,一些满足上述要求的 PDF 生成库也将是很好的解决方案。

    感谢您的任何建议,我也很乐意提供详细信息或更清晰的解释。

    最佳答案

    你可以看看Docotic.Pdf Library (免责声明:我为 Bit Miracle 工作)。
    它具有用户友好的 API 和良好的示例集,您可以在线查看或在示例查看器应用程序中运行。
    它也满足您的要求:

  • 返回给定字符串和给定字体的确切宽度的函数,文本应在其中显示

  • 您可以使用 PdfCanvas.MeasureText()为此的方法。
  • 能够将文本定位到页面上的准确位置

  • 有许多重载允许在任意位置或区域显示文本。
    http://bitmiracle.com/pdf-library/help/pdfcanvas.drawstring.aspx
    http://bitmiracle.com/pdf-library/help/pdfcanvas.drawtext.aspx
  • 在上标中包含部分文本

  • PdfCanvas.TextRise 属性允许显示上标文本。您可以将它与 PdfCanvas.FontSize 属性结合使用来控制上标文本的大小。
    sample :
    http://bitmiracle.com/pdf-library/help/text-rise.aspx
  • 获取某些文本的精确宽度的函数,该文本的某些部分位于上标

  • 如果您将为上标文本使用不同的字体或字体大小,则直接调用 PdfCanvas.MeasureText() 方法将产生不正确的结果。
    有解决方法:
    - 分别测量用不同字体绘制的字符串的每个部分,然后将所有宽度相加。
    - 如果您想获得绘制文本的宽度,您可以简单地从绘制后的最终文本位置减去初始文本位置。
  • 能够添加图片甚至更好的选项来绘制简单的图形(给定粗细的线,给定半径/直径的实心圆)

  • 支持的。看看这些样本:
    https://github.com/BitMiracle/Docotic.Pdf.Samples/tree/master/Samples/Graphics
    https://github.com/BitMiracle/Docotic.Pdf.Samples/tree/master/Samples/Images

    PDF 查看器组件在我们的计划中,但目前 Docotic.Pdf 不提供此类功能。
    更新:您现在可以使用 Docotic.Pdf 光栅化、渲染或打印 PDF 文档。请看以下文章:
    https://bitmiracle.com/pdf-library/convert-pdf-to-image.aspx
    https://bitmiracle.com/pdf-library/draw-print-pdf.aspx

    关于用于排版文档(PDF 或类似文件)的 .NET 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5628993/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com