SharePoint WebPart ile Html Formatındaki Yazıyı PDF Formatına Dönüştürerek Tarayıcı Üzerinden İndirmek

2+

Merhaba arkadaşlar bugün sizlere daha öncede bahsettiğim bir konu için daha farklı bir çözüm yolu ile kullanmayı bahsedeceğim. Daha önceki SharePoint WebPart ile Html Formatındaki Yazıyı PDF Formatına Dönüştürerek Kaydetmek adlı makale yazımda oluşturulan pdf dosyalarını sunucu üzerinde bir dosya konumuna nasıl kaydedeceğimizden bahsetmiştim.

Bu yazımda ise farklı bir yöntem ile html formatını pdf dosya formatına çevirerek tarayıcı üzerinden son kullanıcının indirmesini sağlayacağız.

İlk olarak bir projemize “TuesPechkin.dll” ve “TuesPechkin.Wkhtmltox.Win64.dll” isimli iki dll dosyalarımızı referans olarak projemize ekliyoruz.

NOT: Dll dosyalarını makalenin en altında yer alan github linkindeki projede “DLL” klasöründen alabilirsiniz.

Daha sonra projemize “Pdf.cs” adında bir class ekliyoruz. Bu projeye aşağıdaki iki referansı eklememiz gerekmektedir.

Bu referansları ekledikten sonra dosyamız içindeki “Pdf” classının içine aşağıdaki kodu ekliyoruz.

Daha sonra projemize bir webpart ekliyoruz. Ben önceki yazımda gibi sayfa adını html bilgisini kullanıcıdan alacak şekilde ascx koduna aşağıdaki html kodlarını ekliyorum.

Code behind tarafına geldiğimiz zaman “Save” butonuna tıklandığı zaman işlemimizi yaptıracağımız için buton click event içine kodlarımızı yazıyoruz. Son kullanıcı tarafında herhangi bir hataya denk gelmemek için bu kodlarıda aşağıdaki gibi “SPSecurity.RunWithElevatedPrivileges” içinde yazacağız.

Bu kısımda ise ilk olarak dosya adımızı ve html bilgilerimizi alalım.

Daha sonra aldığımız html bilgisini eklediğimiz “Pdf” classının “ConvertToPdf” methodunu kullanarak byte arraya dönüştürüyoruz.

Oluşan verimizi “HttpResponse” üzerinden pdf formatı olarak indirmemiz gerekecek.

İlk olarak response umuzun content type tipini belirtiyoruz. Pdf formatı olduğu için “application/pdf” olarak tanımlamamız gerekecek.

Daha sonra bu response için header bilgisi girmemiz gerekecek ve burada ise header name olarak “Content-Disposition” value olarak ise “attachment; filename=filename.pdf” olarak setlememiz gerekecektir. Burada dosya ismini kullanıcıdan aldığımız için “filename.pdf” kısmını dinamik olacak şekilde güncellememiz gerekecektir.

Bu işlemden sonra da bufferoutput değişkenimizi false olarak ayarlamamız gerekmektedir.

Bütün bu ayarlamaları tamamladıktan sonra son olarak outputstream ile datamızı yazdırıp response işlemimizi sonlandırabiliriz.

Tüm bu işlemlerden sonra kodumuz tamamlanmış olacaktır. Tüm bu buton event içindeki kodları tek bir şekilde görecek olursak aşağıdaki gibi olacaktır.

Kodumuzu tamamladıktan sonra projemizi deploy ediyoruz ve sayfamıza webpartımızı ekliyoruz.

Gerekli bilgileri doldurup “Save” butonuna basarak dosyamıız indiriyoruz.

Bu işlemden sonra eğer bir engelleme yoksa tarayıcımız tarafında verdiğimiz html ile oluşturulan bir pdf dosyası inecektir.

Yukarıdaki  gördüğünüz gibi dosya indirme işlemini başarılı bir şekilde tamamladık.

Pdf dosyamızı açtığımızda html içeriğimiz bire bir geldiğini görüyoruz.

Proje dosyasını aşağıdaki github adresinden indirebilirsiniz.

2+

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir