-3

我正在使用 iTextsharp 库来生成 pdf 并将 pdf 与文档合并。但无法在 pdf 中写入条形码。我收到一个错误

access to the path is denied

但是我已经检查了服务器中文件夹的权限,所有权限都被授予,包括写权限,这个相同的代码以前可以正常工作,但最近不行。但是在本地检查时,它工作得很好。这是因为使用 Itextsharp。帮帮我,伙计们。

生成条形码的代码

iTextSharp.text.pdf.BarcodePDF417 pdf417 = new iTextSharp.text.pdf.BarcodePDF417();
        pdf417.CodeRows = 60;
        pdf417.CodeColumns = 60;
        pdf417.YHeight = 1;

        pdf417.SetText(tmpSourceString);
        System.Drawing.Image im = pdf417.CreateDrawingImage(System.Drawing.Color.Black, System.Drawing.Color.White);

        MemoryStream ms = new MemoryStream();
        im.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        return ms.ToArray();

         System.Drawing.Bitmap newbitmap = new System.Drawing.Bitmap(returnImage);

            newbitmap.Save(fileUploadLoc + file_name, ImageFormat.Jpeg);
            file_name_new = officer + "_" + "digital_barcode1.Jpeg";
            var bmp = Bitmap.FromFile(fileUploadLoc + file_name);
            var newImage = new Bitmap(bmp.Width, bmp.Height + 15);

            var gr = Graphics.FromImage(newImage);
            gr.DrawImageUnscaled(bmp, 0, 0);
            gr.DrawString(signed, SystemFonts.CaptionFont, Brushes.White,
                new RectangleF(0, bmp.Height, bmp.Width, 0));

将条形码与pdf合并的代码

using (Stream inputPdfStream = new FileStream(file_path + file_name_doc, FileMode.Open, FileAccess.Read, FileShare.Read))
                                      using (Stream inputImageStream = new FileStream(fileUploadLoc + file_name_new, FileMode.Open, FileAccess.Read, FileShare.Read))
                                      using (Stream outputPdfStream = new FileStream(fileUploadLoc + file_temp, FileMode.Append, FileAccess.Write, FileShare.None))
                                      {
                                          var reader = new PdfReader(inputPdfStream);
                                          PdfReader.unethicalreading = true;
                                          var stamper = new PdfStamper(reader, outputPdfStream);

                                          int numberOfPages = reader.NumberOfPages;
                                         
                                          iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(inputImageStream);
                                          int pages = get_pageCcount(file_path + file_name_doc);


                                          
                                          for (int i = 1; i <= pages; i++)
                                          {

                                              var pdfContentByte = stamper.GetOverContent(i);
                                              image.SetAbsolutePosition(1, 0);

                                              pdfContentByte.AddImage(image);

                                          }
                                          stamper.Close();
                                          inputImageStream.Close();

                                          File.Delete(file_path + file_name_doc);
                                          File.Move(fileUploadLoc + file_temp, file_path + file_name_doc);
4

1 回答 1

5

是的,它被称为编程。大量的编程 - 基本上你需要使用 .NET 系统库来生成条形码的图形。然后你操纵一个文件把它放进去——就像你的图书馆现在所做的那样。

最后,如果您不使用库,则为此编写一个库。.NET 中没有任何东西可以开箱即用。大多数人会认为这不值得他们花时间 - 因为它需要大量的工作才能获得相对少量的东西。

请注意,我回答了您提出的一个问题 - 您的代码与此无关。你问是否可以在没有图书馆的情况下完成,是的。

于 2021-10-27T17:50:23.357 回答