SharePoint WebPart ile Html Formatındaki Yazıyı PDF Formatına Dönüştürerek Kaydetmek

1+

Merhaba arkadaşlar bugün sizlere sharepoint ortamında girilen bir içeriği ya da html türünde bir yazıyı PDF formatına dönüştürerek o uzantı da nasıl kaydedeceğimizden bahsedeceğim.

İlk olarak projemizi oluşturuyoruz.

Projeye sağ tıklayarak “Manage NuGet Packages…” diyerek nuget paketlerinin yönetim ekranını açıyoruz. Burada arama kısmında “NReco.PdfGenerator” yazarak aratıyoruz ve çıkan nuget paketini kuruyoruz.

Bu kurulumdan sonra aşağıdaki proje linkinde yer alan proje içerisindeki “App_Data” klasörünü alarak IIS te “VirtualDirectories”  altındaki site klasörünün içine kopyalıyoruz.

Ya da bu konuma giderek “App_Data” klasörü oluşturarak içine de “wkhtmltopdf” adında bir klasör oluşturup sadece “wkhtmltopdf.exe” programını bu klasörün içerisine ekleyebilirsiniz. Geriye kalan Dll dosyalarını ilk çalışmada otamatik indirebilmesi ve hata vermeden çalışması için “App_Data” klasörüne tam yetki vermeniz gerekmektedir. Eğer Dll dosyaları yüklendi ise ve bulunuyorsa klasörde sadece yetki okuması olması da yeterki olacaktır.

Daha sonra webpartımızın ascx tarafına geliyoruz. Burada kullanıcı arayüzünden almak istediğiniz kısımları oluşturabilirsiniz. Ben kullanıcıdan pdf dosyasının adını ve pdf içine eklenecek içeriği almak istedim.

Bu kısımda sadece dosya adı ve içeriği aldıktan sonra kaydet butonu ile dosyamızı oluşturacağız. Bu taraf tamamlandıktan sonra code behind tarafında yazılacak kod kısmına geçiyoruz.

Burada butona basıldığında tetikleme işlemi olacağı için kodumuzu botun click event içine yazıyoruz. Yukarıdaki kodu açıklayacak olursak.

  • Sharepoint tarafında kullanıcının IIS tarafına attığımız exe dosyasını kullanması ve pdf dosyamızı kaydedebilmesi için sistemin RunWithElevatedPrivileges olarak çalışması gerekmektedir.
  • htmlStart değişkenimizde pdf verimizde kullanacağımız head taglarını ekledik. Ben sadece türkçe karakter desteği olması için UTF-8 meta tagını ekledim.
  • htmlContent değişkenine ise pdf te yer almasını istediğimiz içerik gelmesi gerekmektedir. Bu kısımda ben içeriği kullanıcıdan aldığım için field değer atamasını bu değişkenimize yaptık.
  • hmlFinish değişkeni ise htmlStart değişkeninde açtığımız tagların kapanması ve sonradan eklenmek istenen tagların yer alacağı değişkenimiz olacaktır.
  • htmlPath değişkenine ise oluşturulacak olan pdf dosyasının nereye kaydedileceğini tanımladığımız path bilgisinin olduğu değişken değerimiz. Burada verilecek konum exe dosyasının çalışacağı sunucu da olması gereken bir konum olması gerekmektedir.
  • htmlName değişkeni ise pdf dosyamızın ismini belirleyeceğimiz değişkendir.  Bu değeri de ben son kullanıcıdan almaktayım ama boş girme ihtimaline karşı eğer boş değer gelirse kendim bir isim ataması da yapmış oldum. Burada gelecek ismin sonuna “.pdf” şeklinde dosya uzantısını eklemeyi unutmayın.
  • htmlSavePath değişkeni pdf dosyamızın kaydedileceği lokasyon ve dosya isminin birleştiği değişkendir.
  • html değişkeni ise htmlStart, htmlContent ve htmlFinish değişkenlerinin birleştiği değişkenimizdir.
  • Bütün bu tanımlamalarımızı yaptıktan sonra “new NReco.PdfGenerator.HtmlToPdfConverter()” şeklinde türettiğimiz ve “NReco.PdfGenerator.HtmlToPdfConverter” tipinde “htmlToPdf” adında bir değişken tanımlıyoruz.
  • Bu değişkenimizde yer alan “GeneratePdf” metodumuza html ve kayıt konumunu yollayarak kodumuzu tamamlıyoruz.

Bahsedilen adımları sorunsuz uyguladığınız zaman yukarıdaki gibi bir ekran gelecektir. Ben örnek bir data girişi yaparak “Save” butonuna basıyoruz.

Kod kısmında verdiğimiz konuma gittiğimizde belirlediğimiz dosya adında bir pdf oluştuğunu görmekteyiz.

Dosyamızı da açtığımız zaman yukarıdaki gibi istediğimiz şekilde pdf dosyamızın oluştuğunu görmekteyiz.

Örnek projenin tamamını ve kullanıcağınız exe dosyası ve dll leri aşağıdaki github adresinden alabilirsiniz.

1+

Bir Cevap Yazın