更新:
经过一番讨论后,我们决定去与TeX的,特别是Windows兼容的MIKTEX 。 我们意识到,即使我们能得到的微观布局(这似乎不可能或不作为计算每一行的行高度繁琐)格式的动态lengthed表,有喜欢大的文本框等动态控制,我们也将需要微操,所以我们决定在运行中生成整个文档。 考虑到这一点,将TeX的是因为它的明显的选择的力量和我们与它以前的经验,现在一个星期后,我很高兴我们去,那是因为我们所有的报告都是动态生成和后面的代码是干净的,最小的。
原版的:
我有使用的LiveCycle生成PDF表单模板,我想填补它(pdfstamper),并添加一些表(pdfptable),但它被证明是比我最初想象的更困难。
我打开一个PDF格式,并使用pdfstamper编辑静态字段:
using (var outputPDF1 = new MemoryStream())
{
var pdfReader = new PdfReader(pdf);
var pdfStamper = new PdfStamper(pdfReader, outputPDF1);
var pdfFields = pdfStamper.AcroFields;
pdfFields.SetField("Field1", "Value1");
这是直接的,明确的。
然后我试图添加一个表,从一组位置去了好几页。 有这方面的一个尝试这里是3岁与更古老的版本iTextSharp的的,这是非常手册。
该代码的关键是使用GetOverContent插入与所生成的表中的ColumnText然而,这需要知道工作台高度和手动切割表格大小
var cb = pdfStamper.GetOverContent(1);
var ct = new ColumnText(cb);
ct.Alignment = Element.ALIGN_CENTER;
ct.SetSimpleColumn(36, 36, PageSize.A4.Width-36, PageSize.A4.Height-300);
ct.AddElement(table);
ct.Go();
还有另一种答案iTextSharp的:调整正是一个页面上的2个元素被局限于单一的页表。 它可以是可扩展的,但好像你不得不计算页眉/页脚,以及在随后的页面。
而在相同的大方向各种悬而未决的问题:
添加动态表到PDF模板
iTextSharp的放置在Pdfptable期望的位置
所以我的问题是,什么是使用所见即所得的编辑器静态创建一个PDF并将其修改为动态尺寸的内容添加,如表或任意lengthed文本目前最好的方法是什么? 我不想从头开始生成一个,如果我们可以使用一个所见即所得的LiveCycle得到模板的工作,但如果得到格式化为一个PDF模板表需要更多的努力不是生成整个事情上的苍蝇,那么我宁愿使用iTextSharp的动态生成整个PDF。