Как добавить текст рядом с флажком в C # ASP.NET с itextsharp - PullRequest
0 голосов
/ 03 июля 2019

Я использую библиотеку itextsharp. Я хочу установить флажок или снять флажок рядом с текстом. Но я не могу заставить его работать.

image of checkboxes next to tex

Вот мой конструктор класса.

    public pdfCreator(string fileName)
    {
        //Create document  
        pdfDoc = new Document(PageSize.A4, 25, 25, 25, 15);
        //Create a PDF file in specific path  
        PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDoc, new FileStream(System.Web.HttpContext.Current.Server.MapPath(fileName+".pdf"), FileMode.Create));
        pdfDoc.Open();
    }

Вот мой метод.

    public void chkBoxesCreator()
    {
        string FONT = "c:/windows/fonts/WINGDING.TTF";
        string checkBox = "\u00fe";
        string uncheckBox = "o";

        BaseFont bf = BaseFont.CreateFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        Font f = new Font(bf, 12);
        Paragraph p = new Paragraph(checkBox, f);
        Paragraph p2 = new Paragraph(uncheckBox, f);
        pdfDoc.Add(p);
        pdfDoc.Add(p2);
    }

Я хочу текст рядом с флажками, которые я, но синим цветом.Как я могу получить текст рядом с моими флажками.Большое спасибо за любую помощь.

1 Ответ

1 голос
/ 03 июля 2019

Вы должны использовать PdfAppearance, чтобы установить флажок (или кнопку радио, кнопку и т. Д.)

Вот полный пример

        public static void chkBoxesCreator()
        {  
           String[] texts = { "one", "two", "three" };

            using (var pdfDoc = new Document(PageSize.A4))
            using (var output = new FileStream(fileLoc, FileMode.Create))
                using (var writer = PdfWriter.GetInstance(pdfDoc, output))

            {

                {
                    pdfDoc.Open();                     

                    PdfContentByte cb = writer.DirectContent;
                    Rectangle _rect;
                    PdfFormField _Field1;

                    PdfAppearance[] checkBoxes = new PdfAppearance[2];
                    //set first  checkBox style
                    checkBoxes[0] = cb.CreateAppearance(20, 20);
                    checkBoxes[0].Rectangle(1, 1, 18, 18);
                    checkBoxes[0].Stroke();

                    //set second  checkBox style
                    checkBoxes[1] = cb.CreateAppearance(20, 20);                  
                    checkBoxes[1].Rectangle(1, 1, 18, 18);
                    checkBoxes[1].FillStroke();

                    RadioCheckField _checkbox1;

                    for (int i = 0; i < texts.Length; i++)
                    {
                        _rect = new Rectangle(180, 806 - i * 40, 200, 788 - i * 40); //can be any location
                        _checkbox1 = new RadioCheckField(writer, _rect, texts[i], "on");
                        _Field1 = _checkbox1.CheckField;
                        _Field1.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, "Off", checkBoxes[0]);
                        _Field1.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, "On", checkBoxes[1]);
                        writer.AddAnnotation(_Field1);

                        ColumnText.ShowTextAligned(cb, Element.ALIGN_LEFT, new Phrase(texts[i], new Font(Font.FontFamily.HELVETICA, 18)), 210, 790 - i * 40, 0);
                    }

                    cb = writer.DirectContent;
                    pdfDoc.Close();
                }
            }
        }

PS Толькоу меня проблема в том, что я не могу использовать ваш шрифт по какой-то причине, я получаю бред

Редактировать

Вы можете даже изменить свой цвет заливки checkBox с помощью (и вы могли бысделайте любую более сумасшедшую вещь, такую ​​как создание креста, когда флажок установлен)

  checkBoxes[1].SetRGBColorFill(255, 128, 128); //change fill color

И вывод будет (с SetRGBColorFill)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...