我使用itextsharp
來填充我的PDF。我對此沒有任何問題。基本上我正在做的是獲取PDF並填充內存中的字段,然後傳回MemoryStream
以顯示在網頁上。所有這些都與單個文檔PDF一起工作。填充多個PDF
我想弄清楚,現在正在合併多個PDF到一個MemoryStream
。我不能弄清楚的是,我填寫的文件是相同的。例如,我有一個List<Person>
,其中包含5人。我想爲每個人填寫一份PDF,並將它們合併到一個記憶體中。考慮到我將爲每個人填寫相同類型的文件。
我得到的問題是,當我嘗試添加第二次迭代的同一PDF的第二個副本時,它只是覆蓋第一個填充的PDF,因爲它是相同的文檔,因此不會添加第二份副本爲Person
。
因此,基本上如果我有5個人,我最終會得到一個帶有第5個人的數據的頁面,而不是一個包含每個人的數據的5個頁面的PDF。
下面是一些代碼...
MemoryStream ms = ms = new MemoryStream();
PdfReader docReader = null;
PdfStamper Stamper = null;
List<Person> persons = new List<Person>() {
new Person("Larry", "David"),
new Person("Dustin", "Byfuglien"),
new Person("Patrick", "Kane"),
new Person("Johnathan", "Toews"),
new Person("Marian", "Hossa")
};
try
{
// Iterate thru all persons and populate a PDF for each
foreach(var person in persons){
PdfCopyFields Copier = new PdfCopyFields(ms);
Copier.AddDocument(GetReader("Person.pdf"));
Copier.Close();
docReader = new PdfReader(ms.ToArray());
Stamper = new PdfStamper(docReader, ms);
AcroFields Fields = Stamper.AcroFields;
Fields.SetField("FirstName", person.FirstName);
}
}catch(Exception e){
// handle error
}finally{
if (Stamper != null)
{
Stamper.Close();
}
if (docReader != null)
{
docReader.Close();
}
}
+1芝加哥黑鷹! :) – 2010-05-19 21:18:11
@Cameron彼得斯 - 是的,他們是一個團隊的地獄。 – Gabe 2010-05-19 21:23:01