2011-01-07 32 views
9

Tôi đang trong quá trình điền biểu mẫu pdf được tạo bằng Acrobat pro với iTextSharp & C# và thấy mình bị kẹt khi cố đánh dấu vào trường hộp kiểm.ItextSharp - Tự động điền một mẫu pdf sử dụng C# - Các vấn đề với hộp kiểm

Tôi có nó hoạt động cho các nút radio và hộp văn bản nhưng dường như không làm cho hộp kiểm hoạt động. Tôi cũng đã khẳng định tên hộp kiểm trong trường hợp này "Q7b" là chính xác trong các tài liệu Acrobat và có thể tìm thấy nó trên các hình thức sử dụng đoạn mã sau

private string getfieldnames(AcroFields fields) 
{ 
    StringBuilder sb = new StringBuilder(); 

    foreach (string key in fields.Fields.Keys) 
    { 

     sb.Append(key + Environment.NewLine); 
    } 
    return sb.ToString(); 

} 

Mã Tôi đang sử dụng để cập nhật các hộp kiểm dưới

using (MemoryStream pdfFlat = new MemoryStream()) 
{ 

    PdfReader pdfReader = new PdfReader(strPath); 
    PdfStamper pdfStamp = new PdfStamper(pdfReader, pdfFlat); 
    AcroFields fields = pdfStamp.AcroFields; 

    //textfields 
    fields.SetField("Initiating_Doctor", "Doctor A"); 
    fields.SetField("Speciality", "Surgeon"); 

    //Radiobuttons 
    fields.SetField("PRELIM_Q1", "Yes"); 
    fields.SetField("PRELIM_Q2", "No"); 
    fields.SetField("PRELIM_Q3", "No"); 
    fields.SetField("PRELIM_Q4", "No"); 

    //checkbox - Set the checkbox to checked but this does not work. 
    fields.SetField("Q7b", "Yes"); 

    pdfReader.Close(); 
    pdfStamp.FormFlattening = true; 
    pdfStamp.FreeTextFlattening = true; 
    pdfStamp.Writer.CloseStream = false; 
    pdfStamp.Close(); 
} 

Mọi trợ giúp sẽ được đánh giá cao.

Brad

Trả lời

2

Giá trị hộp kiểm thường là "Bật" và "Tắt". Các nhóm radio có thể sử dụng bất kỳ giá trị nào mà chúng muốn (cộng với "Tắt").

+0

Cảm ơn sự giúp đỡ của bạn Mark. Sau khi nghỉ ngơi và xem xét kỹ hơn tài liệu pdf, tôi thấy thuộc tính Giá trị xuất của hộp kiểm có giá trị lạ. thiết lập này để Bật và thay đổi mã để phù hợp đã giải quyết các vấn đề fields.SetField ("Q7b", "On"); –

+0

cẩn thận ... rằng "giá trị kỳ lạ" có thể là cần thiết bất cứ nơi nào dưới hình thức thường được đệ trình. Nếu bạn chỉ sử dụng nó trong nội bộ, tốt thôi. Nhưng nếu bạn cố gắng quay trở lại mục tiêu gửi ban đầu, bạn sẽ cần dịch lại giá trị trường đó. Dễ dàng hoàn nguyên hơn và sử dụng giá trị lạ trong mã của bạn. –

+0

Cảm ơn bạn đã cảnh báo. Đó là một điều nội bộ để chaning giá trị sẽ không có dòng chảy có hiệu lực. –

4

Tôi cũng đã thử Bật và Tắt cho hộp kiểm và nó không hoạt động. Sau đó, tôi đã mở trong Adobe LiveCycle Designer. Trong thuộc tính ràng buộc hộp kiểm Thay đổi trên giá trị thuộc tính giá trị. Đặt chúng thành Có và KHÔNG. Bây giờ nó đang làm việc cho tôi.

2

Đối với hộp kiểm, bạn cần phải vượt qua "1" làm giá trị.

Hãy thử sau

fields.SetField("PRELIM_Q1", "1"); 
15

Thiết lập giá trị trường với giá trị xuất khẩu của hộp kiểm sẽ gây ra nó để được kiểm tra. Vì vậy, nếu giá trị xuất khẩu là "Có", thì đặt giá trị của trường thành "Có" sẽ đánh dấu vào hộp kiểm. Nếu giá trị xuất là một thứ khác (ví dụ: "Bật"), bạn sẽ cần đặt giá trị trường thành giá trị đó để đánh dấu vào hộp.

0

fields.SetField ("your_field", "On"); Trên các tác phẩm cho tôi theo mặc định.

+1

trông giống như aaron đã cung cấp phiên bản chính xác hơn của câu trả lời này. –

Các vấn đề liên quan