我是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
提前致谢。
答案 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%(边距之间的水平间距),默认情况下表格中心对齐。您可能希望使用WidthPercentage
和HorizontalAlignment
答案 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();
}
}