1

我正在使用iTextSharp扩展名将数据输出到 PDF 文件。我正在使用 aFor 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

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

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

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

4

2 回答 2

3

你需要使用一张桌子。我自己在使用 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

于 2013-04-19T17:08:59.623 回答
0

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

于 2013-04-19T17:17:10.587 回答