BAĞLANTILARIM

Takip Edin:

0

ASP.NET MVC ITEXTSHARP KULLANARAK PDF SAYFALARI DİNAMİK OLARAK DÜZENLEME

Pazar, Haziran 17, 2018 / / , , ,

Pdf dosyasına yazılacak verilerin koordinatlarını bir tabloda tutarak aşağıdaki şekilde ItextSharp kullanarak gerçekleştirdik.

  public string PdfFormIslem(int id, int formId)
        {
            //form bilgilerini getir         
            //formda kullanılacak alan bilgilerini getir
            //personel bilgilerini getir
            string olusanDosyaYolVeAd = String.Empty;
            //form bilgilerini getir
            var veriForm = Islem.Form.Bilgi(formId);
            //form bilgisi varsa
            if (veriForm != null)
            {
                try
                {
                    string kullanilacakFormAd = veriForm.FormAd;
                    string kullanilacakDosyaAd = veriForm.DosyaAd;
                    string kullanilacakYol = Server.MapPath("/Upload/Form/");
                    string[] diziDosyaAd = veriForm.DosyaAd.Split('.');
                    string kullanilacakYeniKayitAd = diziDosyaAd[0];
                    //personel bilgilerini getir
                    var veriPersonel = Islem.Personel.Bilgi(id);
                    string personelAdSoyad = veriPersonel.Ad + " " + veriPersonel.Soyad; // "TAMER YİĞİT";
                    string personelAdSoyadKadin = veriPersonel.Ad + " " + veriPersonel.Soyad + " " + veriPersonel.IlkSoyad; // "TAMER YİĞİT";
                    string duzenlemisPersonelAdSoyad = Helpers.Araclar.TurkceKarakterDuzenle(personelAdSoyad);
                    kullanilacakYeniKayitAd += "_" + duzenlemisPersonelAdSoyad + ".pdf";
                    olusanDosyaYolVeAd = kullanilacakYol + kullanilacakYeniKayitAd;
                    // oku
                    PdfReader reader = new PdfReader(kullanilacakYol + kullanilacakDosyaAd);
                    int pdfSayfaSayisi = reader.NumberOfPages; //pdf toplam kaç sayfadan oluşuyor
                    Document document = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
                    // yaz
                    FileStream fs = new FileStream(kullanilacakYol + kullanilacakYeniKayitAd, FileMode.Create, FileAccess.Write);
                    PdfWriter writer = PdfWriter.GetInstance(document, fs);
                    document.Open();
                    //sayfa sayısı kadar dön
                    for (int s = 1; s <= pdfSayfaSayisi; s++)
                    {
                        document.NewPage(); //yeni sayfa oluşmasını sağladık
                        Rectangle size = reader.GetPageSizeWithRotation(s);
                        // pdf content
                        PdfContentByte cb = writer.DirectContent;
                        // font ayarları
                        string ARIALUNI_TFF = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "Arial.ttf");
                        BaseFont bf = BaseFont.CreateFont(ARIALUNI_TFF, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
                        cb.SetColorFill(BaseColor.BLACK);
                        cb.SetFontAndSize(bf, 9);
                        // verileri yaz
                        int baslangicKoordinatX = 0;
                        int baslangicKoordinatY = 792;
                        var veriFormData = Islem.FormData.Listele(formId, s);
                        //form dataları varsa
                        if (veriFormData != null)
                        {
                            //formda kullanılacak data sayısı kadar dön
                            for (int i = 0; i < veriFormData.Count; i++)
                            {
                                var formDataAd = veriFormData[i].DataAd;
                                float formDataKoordinatX = Convert.ToUInt32(veriFormData[i].KoordinatX);
                                float formDataKoordinatY = Convert.ToInt32(veriFormData[i].KoordinatY);
                                var cekilecekData = veriPersonel.GetType().GetProperties().Single(p => p.Name == formDataAd);
                                var yazilacakData = cekilecekData.GetValue(veriPersonel);
                                if (yazilacakData != null)
                                {
                                    cb.BeginText();
                                    cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, yazilacakData.ToString(), baslangicKoordinatX + formDataKoordinatX, baslangicKoordinatY - formDataKoordinatY, 0);
                                    cb.EndText();
                                }
                            }
                        }
                        // pdf oluştur
                        PdfImportedPage page = writer.GetImportedPage(reader, s);
                        cb.AddTemplate(page, 0, 0);
                    }
                    // kapat
                    document.Close();
                    //fs.Flush();
                    fs.Close();
                    writer.Close();
                    reader.Close();
                    return olusanDosyaYolVeAd;
                }
                catch (Exception ex)
                {
                    return ex.Message;
                }
            }
            return olusanDosyaYolVeAd;
        }

SON YORUMLAR