我正在使用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
) ;
对于尝试在字符串中对齐品种和所有者名称时,是否有人对我做错了什么有任何建议?我花了很多时间才能把它关闭,但不完全是我需要的。
答案 0 :(得分: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);
这确实非常有效,如果需要,您可以将格式化对象添加到单元格,或图像或其他任何内容。你也可以添加边框和其他东西......
答案 1 :(得分:0)
在这种情况下,您也可以尝试使用等宽字体。这将确保每个空格和字符都是固定长度。