用itextsharp画了一个表格用作打印,现在想实现在pdf中添加一个checkbox不知如何添加,请高手指点。

解决方案 »

  1.   

    using System;
    using iTextSharp.text;
    using iTextSharp.text.pdf;
    using System.IO;
    public class form_checkbox
    {
    [STAThread]
    public static void  Main(string[] args)
    {
    Document document = new Document(PageSize.A4, 50, 50, 50, 50);
    try
    {
    // creation of the different writers
                PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(@"e:\java\form_checkbox.Pdf", FileMode.Create));
    document.Open();
    PdfContentByte cb = writer.DirectContent;
    cb.MoveTo(0, 0);
    PdfFormField field = PdfFormField.CreateCheckBox(writer);
    PdfAppearance tpOff = cb.CreateAppearance(20, 20);
    PdfAppearance tpOn = cb.CreateAppearance(20, 20);
    tpOff.Rectangle(1, 1, 18, 18);
    tpOff.Stroke();
    tpOn.SetRGBColorFill(255, 128, 128);
    tpOn.Rectangle(1, 1, 18, 18);
    tpOn.FillStroke();
    tpOn.MoveTo(1, 1);
    tpOn.LineTo(19, 19);
    tpOn.MoveTo(1, 19);
    tpOn.LineTo(19, 1);
    tpOn.Stroke();
    field.SetWidget(new Rectangle(100, 700, 120, 720), PdfAnnotation.HIGHLIGHT_INVERT);
    field.FieldName=("Urgent");
    field.ValueAsName=("Off");
    field.AppearanceState=("Off");
    field.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, "Off", tpOff);
    field.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, "On", tpOn);
    writer.AddAnnotation(field);
    document.Close();
    System.Console.Out.WriteLine("FIM.");
    }
    catch (System.Exception de)
    {
    System.Console.Error.WriteLine(de.Message);
    }
    }
    }
      

  2.   

     PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(@"e:\java\form_checkbox.Pdf", FileMode.Create));
    document.Open();
    PdfContentByte cb = writer.DirectContent;
    cb.MoveTo(0, 0);
    PdfFormField field = PdfFormField.CreateCheckBox(writer);
    PdfAppearance tpOff = cb.CreateAppearance(20, 20);
    PdfAppearance tpOn = cb.CreateAppearance(20, 20);
    tpOff.Rectangle(1, 1, 18, 18);
    tpOff.Stroke();
    tpOn.SetRGBColorFill(255, 128, 128);
    tpOn.Rectangle(1, 1, 18, 18);
    tpOn.FillStroke();
    tpOn.MoveTo(1, 1);
    tpOn.LineTo(19, 19);
    tpOn.MoveTo(1, 19);
    tpOn.LineTo(19, 1);
    tpOn.Stroke();
    field.SetWidget(new Rectangle(100, 700, 120, 720), PdfAnnotation.HIGHLIGHT_INVERT);
    field.FieldName=("Urgent");
    field.ValueAsName=("Off");
    field.AppearanceState=("Off");
    field.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, "Off", tpOff);
    field.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, "On", tpOn);
    writer.AddAnnotation(field);
    document.Close();
    System.Console.Out.WriteLine("FIM.");
      

  3.   

    这段代码我已经试过了不知道怎么就生成的是这样的checkbox(□ 里面是x而不是√),这不是标准的checkbox吧?