2010-01-11 51 views
1

我有一个基本的PDF文件,我有5个不同的空白内容区域,我想用iTextSharp来写文本。问题是我不确定实现这一目标的最佳方法。我试图使用ColumnText来完成这一点,但我似乎无法添加多个ColumnText对象。iTextSharp从硬盘读取pdf模板并写入文本

  ColumnText tagColumn = new ColumnText(pdfContentByte); 
      tagColumn.SetSimpleColumn(460, 100, 620, 160); 
      string[] tagColors = bt.DealerTagColor.Split('|'); 
      Font tagFont = FontFactory.GetFont(bt.DealerTagFont, bt.DealerTagSize, Font.NORMAL, new BaseColor(int.Parse(tagColors[0]), int.Parse(tagColors[1]), int.Parse(tagColors[2]))); 
      Paragraph p = new Paragraph(dto.Tag, tagFont); 
      p.Leading = bt.DealerTagSize; 
      tagColumn.AddElement(p); 
      tagColumn.Go(); 

我对ColumnText的喜欢是什么,它允许我必须定义heigth/width和文本区域的位置。

有关如何使用或不使用ColumnText来完成此任何想法?我只需要控制将允许文本换行的区域的font/fontsize/font color/leading /和width。

回答

3

最简单的方法是在模板PDF上创建和使用表单域。这样你就可以通过名字引用一个表单字段并用一个简单的函数调用来设置它的值。

这篇文章帮助我:

Fill in PDF Form Fields using the Open Source iTextSharp Dynamic Link Library

编辑: PdfPTables?

如果ColumnTexts以表格形式排列,请考虑使用PdfPTable。我使用PdfPTables来填充从空白模板表单生成的表单中的数据行。您需要计算每个列的x坐标,并在将PdfPCell添加到表中时使用这些值,但它确实有效。我从来没有设置一个PdfPCell的高度的上限,但我可以做到这一点。

检查this page了解更多关于PdfPTables的信息。

+0

感谢您的回复。我不想填写表单字段,我只是想在PDF上占据一个区域,比如说100px乘100px,并覆盖在100乘100的区域内包装的文本区域 – aherrick 2010-01-11 19:32:35

+0

我想知道您是否可以使用PdfPTable?看我的编辑。 – 2010-01-11 21:23:01