我尝试使用 c# 中的 iText7 编写一个带有标题、 Logo 和表格的 pdf 文件。
我以前从未使用过 iText7,因此我不知道如何将段落中的文本写入到固定位置。
现在我只是使用制表符作为我的文本的 anchor 。但这里的问题是,当字符串太长时,该行中后面的所有内容都将被制表符移动,并且标题中的“列”不再对齐。
下图是我想要实现的:
此图显示了如果字符串太长会发生什么情况(在本示例中我使用了长用户名):
这是我用来编写一行标题的代码片段:
// generate 8 tabstops to split pdf in equal sections
List<TabStop> tabStops = new List<TabStop>();
for (uint i = 0; i < 8; i++)
{
float tabSize = pageSize.GetWidth() / 8;
tabStops.Add(new TabStop(tabSize, TabAlignment.LEFT));
}
Paragraph p = new Paragraph();
p.SetFontSize(10);
// add tabstops to paragraph for text alignment
p.AddTabStops(tabStops);
// add title of header
p.Add(title1).Add("\n");
// write line one of header
p.Add("Serie: ").Add(new Tab()).Add(info.serial.ToString())
.Add(new Tab()).Add(new Tab())
.Add("Input CSV: ").Add(new Tab()).Add(info.inputFileName)
.Add(new Tab()).Add(new Tab()).Add("Out-Series: ")
.Add(info.serial.ToString()).Add("\n");
// line 2...
p.Add("User: ").Add(new Tab()).Add(info.username)
.Add(new Tab()).Add(new Tab()).Add(new Tab())
.Add("qPCR-Datei: ").Add(new Tab()).Add(info.qpcr1FileName)
.Add(new Tab()).Add(new Tab()).Add(new Tab())
.Add("STR-Out: ").Add(strFileName).Add("\n");
我希望有人可以帮助我向我展示更好的文本对齐方式或提供在哪里查看的信息。
另一个不错的技巧是如何将换行符保留在同一制表位部分。例如,如果文件名太长(图中的“STR-Out:”),将执行换行符,但新行中的文件名部分应保留在“STR-OUT:”后面的制表位
最佳答案
使用表格和单元格代替制表符/制表符空间,以便正确对齐。
创建第 8 列大小的表格(标签、值、空格、标签、值、空格、标签、值)
使用此示例代码。
PdfPTable table = new PdfPTable(8);
PdfPCell cell;
cell = new PdfPCell();
cell.setRowspan(2); //only if spanning needed
table.addCell(cell);
for(int aw=0;aw<8;aw++){
table.addCell("hi");
}
关于c# - 使用 iText7 将文本写入段落中的固定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66008312/