-1

我编写了以下代码来标记 PDF。

imagefile = 要添加的图章

文件名 = PDF 的文件路径

我的问题是添加到每一页的图章是重叠的。我想把这些邮票放在一起。我该怎么做?谢谢。

 private void damga(string resimdosyası, string dosyayolu)
    {
       


        byte[] bytes = File.ReadAllBytes(dosyayolu);

        PdfContentByte waterMark;

        using (MemoryStream stream = new MemoryStream())
        {
            PdfReader reader = new PdfReader(bytes);
            using (PdfStamper stamper = new PdfStamper(reader, stream))
            {
                int sayfa = reader.NumberOfPages;
                for (int i = 1; i <= sayfa; i++)
                {
                    waterMark = stamper.GetUnderContent(i);
                    string[] files = Directory.GetFiles(resimdosyası);
                    foreach (string file in files)
                    {
                        var resim = iTextSharp.text.Image.GetInstance("C://Users//tufanc//source//repos//PdfStamp//PdfStamp//stampimage//" + Path.GetFileName(file));
                        
                       
                        resim.SetAbsolutePosition(0, 100);
                        waterMark.AddImage(resim);
                    }
                }
            }
            bytes = stream.ToArray();
        }
        File.WriteAllBytes(dosyayolu, bytes);



    }
4

2 回答 2

0
  private void damga(string resimdosyası, string dosyayolu)
    {


        byte[] bytes = File.ReadAllBytes(dosyayolu);

        PdfContentByte waterMark;

        using (MemoryStream stream = new MemoryStream())
        {


            PdfReader reader = new PdfReader(bytes);
            using (PdfStamper stamper = new PdfStamper(reader, stream))
            {


                int sayfa = reader.NumberOfPages;
                for (int i = 1; i <= sayfa; i++)
                {
                    int imzax = 1;
                    int imzay = 1;


                    waterMark = stamper.GetUnderContent(i);
                    string[] files = Directory.GetFiles(resimdosyası);
                    int imzasayisi = files.Length;

                    foreach (string file in files)
                    {
                        var resim = iTextSharp.text.Image.GetInstance("C://Users//tufanc//source//repos//PdfStamp//PdfStamp//stampimage//" + Path.GetFileName(file));

                        imzax = imzax + 100;
                        imzay = imzay + 1;

                        resim.SetAbsolutePosition(imzax, imzay);


                        waterMark.AddImage(resim);
                    }
                }

            }
            bytes = stream.ToArray();
        }
        File.WriteAllBytes(dosyayolu, bytes);



    }

这完成了工作。

于 2021-01-26T12:25:11.787 回答
0
  private void damga(string resimdosyası, string dosyayolu)
    {


        byte[] bytes = File.ReadAllBytes(dosyayolu);

        PdfContentByte waterMark;

        using (MemoryStream stream = new MemoryStream())
        {
            PdfReader reader = new PdfReader(bytes);
            using (PdfStamper stamper = new PdfStamper(reader, stream))
            {

                int sayfa = reader.NumberOfPages;
                for (int i = 1; i <= sayfa; i++)
                {
                    waterMark = stamper.GetUnderContent(i);
                    string[] files = Directory.GetFiles(resimdosyası);
                    foreach (string file in files)
                    {
                        int imzasayisi = files.Length;
                        for (int imza = 1; imza <= imzasayisi; imza++)
                        {
                            

                        var resim = iTextSharp.text.Image.GetInstance("C://Users//tufanc//source//repos//PdfStamp//PdfStamp//stampimage//" + Path.GetFileName(file)); 

                       
                            int imzax = 1;
                            int imzay = 100;

                            imzax = imzax * imza;
                            imzay = imzay * imza;

                            resim.SetAbsolutePosition(imzax, imzay);
                            
                            waterMark.AddImage(resim);
                        }
                    }
                }
            }
            bytes = stream.ToArray();
        }
        File.WriteAllBytes(dosyayolu, bytes);



    }

我是这样改的,但是我错误地设置了for循环。

于 2021-01-26T10:03:08.617 回答