Pdf 对齐字符串C的内容#

Pdf 对齐字符串C的内容#,pdf,itextsharp,Pdf,Itextsharp,我正在使用iTextSharp扩展名将数据输出到PDF文件。我使用For循环动态输出数据,数据是XML表单。我遇到的问题是对齐正在写入pdf页面的行或本例中的“段落”的内容。电流输出如下: __ 0002 dog name breed John Doe __ 0004 Kona Doberman Jesus Montero 我需要输出如下所示: __ 0002 dog name

我正在使用
iTextSharp
扩展名将数据输出到PDF文件。我使用
For循环
动态输出数据,数据是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循环
中的两个单独循环中写入pdf文件的两个字符串。添加字符串的代码是:

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

有人对我试图在字符串中对齐品种和所有者名称的错误有什么建议吗?我已经花了很多时间,可以接近它,但不是我所需要的。

你需要一张桌子。我自己在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);
这真的很好用,如果需要,您可以将格式化对象添加到单元格中,或者添加图像或其他内容。您还可以添加边框和其他内容


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

请注意,这会弄乱格式。基本上,您需要知道的是,我有一个字符串,它是一行数据,有四个值,需要左对齐,就像它们在四列中一样。在这种情况下,不使用表格不是一个有效的选择。正如我在回答中所说的,你唯一的选择就是把文本放在特定的坐标上。换句话说,您自己实现表功能。如果已经为您提供了代码,我看不出有任何理由这样做。相信我,我已经走过这条路了。从我的错误中吸取教训!非常感谢你。你救了我这么多的头痛和沮丧。我不知道这是一个iTextSharp问题。实际上这是PDF问题-iTextSharp受PDF标准约束,所以他们必须以这种方式实现它。有时这会让我们感到困难,但有一个标准并遵循它是很重要的。