2016-08-30 1 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

: 'stamper.FormFlattening =真;'。 – kuujinbo

+0

ありがとうございます。それは動作します。 – Tim

+1

@kuujinbo答えが受け入れられ、投票されるように答えを作ります;-) –

答えて

2

はあっても、PdfStamperFormFlatteningマストはtrueに設定する。すなわち:あなたは `PdfStamper`インスタンスを取得し、**前**あなたは(` foreach`ブロックの外側) `PartialFormFlattening()`を呼び出す_After_

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

foreach (string name in fieldNames2Flatten) 
{ 
    stamper.AcroFields.SetField(name, "foo"); 
    stamper.PartialFormFlattening(name); 
} 
関連する問題