iTextSharp - 复选框不会打印

时间:2015-03-23 12:26:36

标签: itextsharp

我是iTextSharp的新手,非常感谢您的帮助。

我正在创建一些复选框,代码示例如下:

    var rec = new Rectangle(PageSize.A4);
    var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);
    var doc = new Document(rec);
    var writer = PdfWriter.GetInstance(doc, fs);

PdfFormField checkbox1 = PdfFormField.CreateCheckBox(writer);
            checkbox1.SetWidget(new Rectangle(524, 600, 540, 616), PdfAnnotation.HIGHLIGHT_INVERT);
            checkbox1.ValueAsName = ("Off");
            checkbox1.AppearanceState = ("Off");
            checkbox1.FieldName = ("UsersNo");
            checkbox1.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, "Off", chkOff);
            checkbox1.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, "On", chkOn);
            writer.AddAnnotation(checkbox1);

一切看起来都很棒并且运行良好,直到打印实际的PDF,当我点击文件和打印时,复选框不会显示在打印预览中,也不会打印。

有没有人可以指点我?

提前感谢帮助。

杰森

1 个答案:

答案 0 :(得分:1)

创建复选框有两种方法。

  1. 有一种简单的方法,使用RadioCheckField类。
  2. 使用PdfFormField类很难。
  3. 出于某种原因,你选择了艰难的方式。

    您现在正在抱怨可见性设置为“在屏幕上显示,而不是在打印中”而不是“在屏幕上显示并在打印中”

    • 前者(“在屏幕上显示,而不是在打印中”)是您在硬盘中创建复选框时的默认可见性设置。它对应没有设置标志。
    • 后者(“在屏幕上显示并在打印中”)是创建复选框时的默认方式。在这种情况下,为方便起见,会自动设置以下标志。

    由于您选择了创建复选框的困难方法,因此您需要自行添加将“打印标记”添加到代码中的行:

    checkbox1.Flags = PdfAnnotation.FLAGS_PRINT;