Как выровнять по центру и выделить жирным шрифтом текст в itext7

#c# #reactjs #pdf #itext #itext7

Вопрос:

Я новичок в использовании itext для создания PDF-файла. У меня была проблема, я добавил itext7 в свои ссылки

чтобы добавить файл pdf со значениями. Я хотел выровнять по центру и выделить жирным шрифтом текстовое поле в моем pdf-файле. Я посмотрел на различные примеры. Однако. SetBold и chunk показывают ошибку в visual studio.

Это функция, которую я вызываю для pdf.

 [HttpGet]
        [Route("GetCoilWiseReport")]
        public HttpResponseMessage GetCoilWiseReport(string jwt, string fixture="", string 
         type="", string ID= "",
         string delivery = "", string invoice = "", string wagon = "", string location = "", 
          string ICHP= "",string remarks="",string date="")
        {
            if (!Common.VerificationToken.VerifyJWToken(jwt))
            {
                return null;
            }

            var doc_date = DateTime.Now.Date.ToString("dd/MM/yyyy").Replace("-", "/");
            var Type1 = type;
            var id1 = ID;
            var delivery1 = delivery;
            var invoice1= invoice;
            var wagon1 = wagon;
            var location1 = location;
            var ICHP1 = ICHP;
            var remarks1 = remarks;
            var date1 = date;


            string pdfDocument = @"D:Annexure_One IT.pdf";//Utilities.ISOP_DOCS_FOLDER   
             "MasterDocs\SupplierDespatchATP.pdf";

            

            var dateLine = "Date:"   doc_date ;
            var coilDetails = "                                          COIL Details: "   ID;
            

            

            var firstRow = "Type : "   type  "                   ID:" ID  "                    Delivery No:" delivery;
            var secondRow = "Invoice No.:"   invoice "                 Wagon No:" wagon "            Location:" location;
            var thirdRow = "ICHP : "   ICHP   "                            Remarks:"   remarks;
            


            PdfDocument pdf = new PdfDocument(new PdfWriter(pdfDocument));
        
            //Add new page
            PageSize ps = PageSize.A4;
            PdfPage page = pdf.AddNewPage(ps);
            PdfCanvas canvas = new PdfCanvas(page);
            iText.Layout.Document iDoc = new iText.Layout.Document(pdf, ps);
            PdfFont font = PdfFontFactory.CreateFont(StandardFonts.COURIER);
            PdfFont fontBold = PdfFontFactory.CreateFont(StandardFonts.COURIER_BOLD);
            IList<String> text = new List<String>();
            
            text.Add("");
            text.Add(dateLine);
            text.Add("");
            text.Add("");
            text.Add(coilDetails);
            text.Add("");
            text.Add("");
            text.Add(firstRow);
            text.Add("");
            text.Add("");
            text.Add(secondRow);
            text.Add("");
            text.Add("");
            text.Add(thirdRow);
            text.Add("");
            text.Add("");
            text.Add("");
            text.Add("");
            text.Add("");
            text.Add("signature");
            ;

            foreach (String s in text)
            {
                //Add text and move to the next line
                //canvas.NewlineShowText(s);
                if (s == "signature")
                {
                    List<string> coilURL = new List<string>();
                    List<string> coilView = new List<string>();


                    string connectionstring = Utilities.SQL_DB1;// our SQL DB connection
                    SqlConnection conn1 = new SqlConnection(connectionstring);

                    DataTable dt = new DataTable();

                    string query = "Select CCD_IMAGE_URL,CCD_VIEW_DESC from T_CQL_COIL_DESC 
                   where CCD_COIL_ID = '"   ID   "'";

                    //SqlConnection conn = new SqlConnection(connectionstring);
                    SqlCommand cmd = new SqlCommand(query, conn1);
                    conn1.Open();




                    // create data adapter
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    // this will query your database and return the result to your datatable


                    da.Fill(dt);

                    if (dt.Rows.Count > 0)
                    {
                        for (int i = 0; (i < dt.Rows.Count); i  )
                        {
                            coilURL.Add(imgurl   dt.Rows[i]["CCD_IMAGE_URL"].ToString());
                            coilView.Add(dt.Rows[i]["CCD_VIEW_DESC"].ToString());

                            var view = "View:" coilView[i];
                            var sig = coilURL[i];

                            iText.Layout.Element.Paragraph p1 = new 
                             iText.Layout.Element.Paragraph().Add(view);
                            //p.SetMaxHeight(20);
                            iDoc.Add(p1);

                            iText.Layout.Element.Image sigImage = new 
                            iText.Layout.Element.Image(ImageDataFactory.Create(sig));
                            sigImage.SetAutoScale(true);
                            
                            iText.Layout.Element.Paragraph p = new 
                            iText.Layout.Element.Paragraph().Add(sigImage);
                            //p.SetMaxHeight(20);
                            iDoc.Add(p);

                        }
                    }

                    


                    conn1.Close();
                    da.Dispose();
                }
               
                else
                {
                    iText.Layout.Element.Paragraph para = new 
                   iText.Layout.Element.Paragraph(s);
                    para.SetFont(font);
                    para.SetFontSize(9);
                    iDoc.Add(para);
                }
            }
            //iDoc.Close();

            //Close document

            iDoc.Close();
            // Add Paragraph to document



            pdf.Close();



            HttpResponseMessage httpResponseMessage = new HttpResponseMessage();
            httpResponseMessage.Content = new StreamContent(new FileStream(pdfDocument, 
             FileMode.Open, FileAccess.Read));
            //httpResponseMessage.Content.Headers.ContentType = new 
            MediaTypeHeaderValue("application / vnd.openxmlformats - 
            officedocument.wordprocessingml.document");
            httpResponseMessage.Content.Headers.ContentType = new 
            MediaTypeHeaderValue("application/pdf");
            httpResponseMessage.Content.Headers.ContentDisposition = new 
            ContentDispositionHeaderValue("attachment");
            httpResponseMessage.Content.Headers.ContentDisposition.FileName = "Coil_Detail"   
             fixture   "_"   ID   "_"   ".pdf";
            httpResponseMessage.StatusCode = HttpStatusCode.OK;

            

            return httpResponseMessage;
        }
 

Я пытаюсь сделать хвостики смелыми и выровненными по центру. Как мне это сделать в текущем контексте. Пожалуйста, помогите

Комментарии:

1. «Я пытаюсь сделать койлдетали смелыми и выровненными по центру. Как мне это сделать в текущем контексте». — Ну, во-первых, в вашем текущем контексте ваша архитектура не предназначена для того, чтобы какая-либо текстовая строка была специально оформлена, потому что все они хранятся в простом списке строк. Конечно, если только эта строка нуждается в специальной обработке, вы можете запомнить ее позицию в списке в переменной, а позже, когда вы повторите список, проверьте, находитесь ли вы в этой позиции. Или вы можете добавить к этой строке префикс с маркером для проверки. Или может иметь параллельную структуру, содержащую такую информацию. Или…

Ответ №1:

Используйте p.SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER); для выравнивания его по центру и для установки его полужирным шрифтом после добавления попробуйте использовать .SetBold() или .setFont(жирным шрифтом)

Комментарии:

1. Привет, вы можете добавить код для текущего контекста. Я уже упоминал, что .установите жирный шрифт и p.установите выравнивание текста, что приводит к ошибке в visual studio в текущем контексте

Ответ №2:

Я делаю несколько сценариев с помощью itext7, используя linqpad.net в c#, но у меня нет проблем с преобразованием в visual studio. вот строка в C#

p = новый абзац(целевой текст).SetFontSize(12).SetTextAlignment(выравнивание текста.ОПРАВДАНО).SetFontColor(новое устройство (0, 153, 0)).СетБолд();

Комментарии:

1. это тот же ответ, что и у Anuj, но он показывает, как складывать команды 2 для одного и того же «p»; Я не пытаюсь добиться признания от Anuj.