2

我是 iTextSharp 的新手,我正在尝试创建 PDF。只是一个简单的例子。如果我做这样的事情:

Paragraph p = new Paragraph();

p.Add(new Chunk("789456|Test", f5));
newDocument.Add(p);
p.Add(new Chunk("456|Test", f5));
newDocument.Add(p);
p.Add(new Chunk("12345|Test", f5));
newDocument.Add(p);

我得到这个结果:

789456|Test
456|Test
12345|Test

我可以做些什么来右对齐我的块中的部分文本。像这样:

789456|Test
   456|Test
 12345|Test

提前致谢。

4

3 回答 3

5

请看以下示例:第 4 章。他们引入了 a 的概念PdfPTable。与其创建Chunk像这样的对象"789456|Test",然后尽可能地使这些 s 的内容的各个部分正确对齐,您会发现创建一个简单的 2 列,添加和作为无边界单元格的内容Chunk要容易得多。所有其他变通方法将不可避免地导致代码更加复杂和容易出错。PdfPTable"789456|""Test"

Karl Anderson 提供的答案要复杂得多。Manish Sharma 提供的答案是错误的。虽然我不懂 C#,但我尝试编写一个示例(基于我如何在 Java 中实现这一点):

PdfPTable table = new PdfPTable(2);
table.DefaultCell.Border = PdfPCell.NO_BORDER;
table.DefaultCell.VerticalAlignment = Element.ALIGN_RIGHT;
table.DefaultCell.HorizontalAlignment = Element.ALIGN_RIGHT;
table.addCell(new Phrase("789456|", f5));
table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.addCell(new Phrase("Test", f5));
table.DefaultCell.HorizontalAlignment = Element.ALIGN_RIGHT;
table.addCell(new Phrase("456|", f5));
table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.addCell(new Phrase("Test", f5));
table.DefaultCell.HorizontalAlignment = Element.ALIGN_RIGHT;
table.addCell(new Phrase("12345|", f5));
table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.addCell(new Phrase("Test", f5));
doc.Add(table);

请注意,表格的默认宽度是可用宽度(边距之间的水平空间)的 80%,并且表格默认居中对齐。您可能希望使用WidthPercentage和更改这些默认值HorizontalAlignment

于 2013-08-07T07:19:52.293 回答
1

不幸的是,您只能将对齐应用于Paragraph对象而不是Chunks,因此您需要使用使用列的页面布局。

阅读iTextSharp - 带列的页面布局,了解如何让布局更接近您的要求。

于 2013-08-06T19:01:13.267 回答
-1

试试这个,这是给你的示例代码。

private void CreatePdf()
{
        using (FileStream msReport = new FileStream(Server.MapPath("~") + "/App_Data/" + DateTime.Now.Ticks + ".pdf", FileMode.Create))
        {
            Document doc = new Document(PageSize.LETTER, 10, 10, 20, 10);

            PdfWriter pdfWriter = PdfWriter.GetInstance(doc, msReport);
            doc.Open();

            PdfPTable pt = new PdfPTable(1);
            PdfPCell _cell;

            _cell = new PdfPCell(new Phrase("789456|Test"));
            _cell.VerticalAlignment = Element.ALIGN_RIGHT;
            _cell.HorizontalAlignment = Element.ALIGN_RIGHT;
            _cell.Border = 0;
            pt.AddCell(_cell);

            _cell = new PdfPCell(new Phrase("456|Test"));
            _cell.VerticalAlignment = Element.ALIGN_RIGHT;
            _cell.HorizontalAlignment = Element.ALIGN_RIGHT;
            _cell.Border = 0;
            pt.AddCell(_cell);
            _cell = new PdfPCell(new Phrase("12345|Test"));
            _cell.VerticalAlignment = Element.ALIGN_RIGHT;
            _cell.HorizontalAlignment = Element.ALIGN_RIGHT;
            _cell.Border = 0;
            pt.AddCell(_cell);

            doc.Open();
            doc.Add(pt);
            doc.Close();
      }
}
于 2013-08-07T07:49:07.957 回答