2013-10-31 13 views
10

私は非常に多くの方法を試しましたが、チェックボックスをオンにすることができません!私が試したことは次のとおりです。itextsharpでpdfチェックボックスをオフにする

var reader = new iTextSharp.text.pdf.PdfReader(originalFormLocation); 
using (var stamper = new iTextSharp.text.pdf.PdfStamper(reader,ms)) { 
    var formFields = stamper.AcroFields; 
    formFields.SetField("IsNo", "1"); 
    formFields.SetField("IsNo", "true"); 
    formFields.SetField("IsNo", "On"); 
} 

どれも動作しません。何か案は?

+0

ていますか? – ovaltein

答えて

12

考えられる値を「推測」しないでください。 PDFに格納されている値を使用する必要があります。

public String getCheckboxValue(String src, String name) throws IOException { 
    PdfReader reader = new PdfReader(SRC); 
    AcroFields fields = reader.getAcroFields(); 
    // CP_1 is the name of a check box field 
    String[] values = fields.getAppearanceStates("IsNo"); 
    StringBuffer sb = new StringBuffer(); 
    for (String value : values) { 
     sb.append(value); 
     sb.append('\n'); 
    } 
    return sb.toString(); 
} 

RUPSを使用してPDFを見てみましょう:これらの可能な値を見つけるために、CheckBoxValues例を試してみてください。ウィジェットのアノテーションに移動し、通常の(/N)の外観(AP)の状態を探します。私の例では、彼らは/Off/Yesをしている:あなたは、チェックボックスフィールドが本当に「ISNO」と命名されていることを確認し

screen shot

+0

AP配列の正確な意味は何ですか?第1の値は常に「チェックを外す」状態に使用され、第2の値は「チェック」に使用されますか?現在、私はその仮定に頼っていて、奇妙なPDFでもうまくいきますが、私は確信しています... –

+0

「オフ」の値は、常にオフの状態*を反映する必要があります。順序は関係ありません。したがって、最初の状態を「チェックを外す」状態にするべきではありません。 –