【问题标题】:Align Contents of a String C#对齐字符串 C# 的内容
【发布时间】:2013-04-19 17:01:48
【问题描述】:

我正在使用 iTextSharp 扩展名将数据输出到 PDF 文件。我正在使用For loop 来动态输出 XML 表单上的数据。我遇到的问题是对齐一行的内容,或者在这种情况下是“段落”,它正在写入 pdf 页面。当前的输出是这样的:

__ 0002 dog name              breed              John Doe
__ 0004 Kona                 Doberman             Jesus Montero

我需要输出如下所示:

__ 0002 dog name             breed                John Doe
__ 0004 Kona                 Doberman             Jesus Montero

请记住,这些只是在For loop 中的两个单独循环中写入 pdf 文件的两个字符串。添加字符串的代码是:

iText.Paragraph dogEntryParagraph = new iText.Paragraph(
  (   "__   "
    + String.Format( "{0,-40}{1,-40}{2,-40}{3,-40}" ,
        armBandString ,
        dogNameString ,
        breedString   ,
        ownerNameString
        )
  ) ,
  _smallFont
  ) ;

有没有人对我在尝试将品种和所有者名称对齐字符串中做错了什么有任何建议?我花了很多时间并且可以接近它,但不是我所需要的。

【问题讨论】:

  • 请注意它弄乱了格式。基本上你需要知道的是我有一个字符串,它是一行数据,有四个值需要左对齐,就好像它们在四列中一样。在这种情况下,不使用表格不是一个有效的选择。
  • 正如我在回答中所说,您唯一的其他选择是将文本放在特定坐标处。换句话说 - 自己实现 Table 功能。当您已经获得该代码时,我认为没有任何理由这样做。相信我,我已经走上了这条路。从我的错误中吸取教训!

标签: pdf itextsharp


【解决方案1】:

您需要使用一张桌子。我自己在使用 iTextSharp 时遇到了这个问题 - 即使您使用等宽字体,除非您在特定坐标处绘制文本然后炸毁流布局,否则您尝试执行的操作将不起作用。因此,在 iTextSharp 中处理表格数据的最佳方法是使用表格...

首先将表创建为对象,然后将其添加到您的流程中...

PdfPTable table = new PdfPTable(2);

table.addCell("Dog Name");
table.addCell("Breed");

table.addCell("Akira");
table.addCell("Chinese Crested");

table.addCell("Kaika");
table.addCell("Greyhound");

document.add(table);

这确实很好用,您可以根据需要将格式化的对象添加到单元格中,或者添加图像或其他任何内容。您还可以添加边框和其他东西...

http://www.geek-tutorials.com/java/itext/itext_table.php

【讨论】:

  • 非常感谢。你救了我这么多的头痛和挫折。我不知道这是一个 iTextSharp 问题。
  • 这实际上是 PDF 问题 - iTextSharp 受 PDF 标准的约束,因此他们必须以这种方式实现它。有时让我们很难受,但重要的是要有一个标准并遵循它。
【解决方案2】:

在这种情况下,您也可以尝试使用等宽字体。这将确保每个空格和字符都是固定长度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多