2016-08-30 52 views
1

以下代碼正確地將值「foo」指定給指定字段,但該字段未被「展平」。我必須忽略一個步驟,但我不知道它是什麼。請指教。謝謝。iTextSharp PdfStamper.PartialFormFlattening僅展平一些而不是全部的字段

public byte[] FlattenSpecifiedFormFields(byte[] b, List<string> fieldNames2Flatten) 
    { 
     PdfReader reader = new PdfReader(b); 
     using (var ms = new MemoryStream()) 
     { 
      var stamper = new iTextSharp.text.pdf.PdfStamper(reader, ms);    
      foreach (string name in fieldNames2Flatten) 
      { 

       stamper.AcroFields.SetField(name, "foo"); 
       stamper.PartialFormFlattening(name); 
      } 

      stamper.Close(); 
      return ms.ToArray(); 
     }; 
    } 
+1

_after_你得到的'PdfStamper'實例,** **之前你叫'PartialFormFlattening()'(了'foreach'塊外):'stamper.FormFlattening = TRUE;'。 – kuujinbo

+0

謝謝。這樣可行。 – Tim

+1

@kuujinbo作出答案,以便答案可以被接受和增加投票;-) –

回答

2

即使當部分地展平的形式中,PdfStamperFormFlattening屬性必須被設置爲true。即:

var stamper = new PdfStamper(reader, ms); 
stamper.FormFlattening = true; 

foreach (string name in fieldNames2Flatten) 
{ 
    stamper.AcroFields.SetField(name, "foo"); 
    stamper.PartialFormFlattening(name); 
} 
相關問題