右键将部分块与iTextSharp对齐

时间:2013-08-06 18:44:42

标签: c# itextsharp

我是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

提前致谢。

3 个答案:

答案 0 :(得分:5)

请查看以下示例:chapter 4。他们介绍了PdfPTable的概念。而不是像Chunk这样创建"789456|Test"个对象,然后不可能让这些Chunk的内容的各个部分正确对齐,你会发现它更容易创建一个包含2列的简单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%(边距之间的水平间距),默认情况下表格中心对齐。您可能希望使用WidthPercentageHorizontalAlignment

更改这些默认值

答案 1 :(得分:1)

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

阅读iTextSharp - Page Layout with Columns,了解如何让布局更接近您的要求。

答案 2 :(得分:-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();
      }
}