Geliştirme yaptığım domain içerisinde bazı ekranlardan,
· herhangi bir sunucuda halihazırda varolan PDF dokümanlarının download edilen,
· yine bazı ekranlardan anlık üretilme yoluyla download edilen
PDF dosyalarında güvenliği bir tık daha artırmak amacıyla, kopyalama yapılamaması ihtiyacı hasıl oldu. Bir tık diyorum çünkü kopyalama işlemi engellense dahi piyasada envaiçeşit "convert pdf to word" gibi tool 'lar mevcut.
Peki madem pdf üzerinde kopyalama işlemini engellemek bu soruna çözüm değil, neden böyle bir ihtiyaç doğdu? Burada aslında pdf dokümanın amacını doğru anlamak gerekiyor:
PDF dokümanı son kullanıcı için tasarlanan, üzerinde değişiklik yapılmasının zaten istenilmediği bir uzantıdır. Bellibaşlı verilerin derlenip toparlanması veya analiz-raporlama gibi işlemlerin sonucu olarak kullanılması amaçlanan veyahut görüş bildirmek için kullanılan, mail vb. gibi yollarla son kullanıcıyla paylaşılan bir dosya türü denilebilir.
Koda geçmek gerekirse örnek olarak bir pdf download işlemi aşağıdaki gibi yapılıyor olsun:
var commonBo = new CommonBo(); string fileName = Request.QueryString["filenamePdf"]; string fileFolder = Server.MapPath("~/Templates/Temporaries/"); string htmlText = File.ReadAllText(fileFolder + fileName); byte[] content = commonBo.HtmlToPdfConverter(htmlText); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Charset = "utf-8"; Response.ContentType = "application/pdf"; HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName + ".pdf"); HttpContext.Current.Response.OutputStream.Write(content, 0, content.Length); HttpContext.Current.Response.End(); HttpContext.Current.Response.Close();
kullandığım örnekte pdf in beslendiği kaynak olarak html kullandım. Html den pdf e dönüştürme konusu apayrı bir konu fakat extra bilgi olması açısından "NReco", "TuesPechkin" gibi bazı 3th part dll ler kullanılabilir. Sonuç olarak stream e aktarabilecek bir byte array yeterli.
İndirilen pdf in kopyalanabildiği görülmekte, kopyalanamaması için download başlamadan önce program akışında araya girmek bir yöntem. Bu özelliği sağlayan Adobe 'un lisans gerektiren hatta bildiğim kadarıyla şu tarih-saat itibariyle indirme başına lisans isteyen sdk sı mevcut fakat ben örnekte "iTextSharp" olarak bilinen ücretsiz bir dll kullanacağım, şuan için son version:
using iTextSharp.text.pdf;
var commonBo = new CommonBo();
string fileName = Request.QueryString["filenamePdf"];
string fileFolder = Server.MapPath("~/Templates/Temporaries/");
var htmlText = File.ReadAllText(fileFolder + fileName);
byte[] content = commonBo.HtmlToPdfConverter(htmlText);
using (MemoryStream input = new MemoryStream(content))
{
using (MemoryStream output = new MemoryStream())
{
PdfReader reader = new PdfReader(input);
PdfEncryptor.Encrypt(reader, output, PdfWriter.DO_NOT_ENCRYPT_METADATA, null, "", PdfWriter.AllowPrinting);
content = output.ToArray();
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName + ".pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.BinaryWrite(content);
Response.End();
}
}
"iTextSharp" dll i içerisindeki "Encrypt" metodunu kullanara verilen "PdfWriter" options ları ile pdf üzerinde yapılmasına izin verilen özellikler "Allow" diyerek belirtilmeli.
Permission Setting bölümünden de görüldüğü üzere "Printing" haricindeki "Content Copying" dahil tüm yetkiler "Not Allowed" durumunda.
Umarım faydalı olmuştur. Başka bir yazıda görüşmek dileğiyle, hoşçakalın ..
yazılarınız çok kaliteli devam edersiniz umarım. ben de kaydettim ara ara okuyacağım.
YanıtlaSilyazılarınız çok kaliteli devam edersiniz umarım. ben de kaydettim ara ara okuyacağım.
YanıtlaSilIf you're trying to lose pounds then you absolutely have to start using this totally brand new custom keto meal plan diet.
YanıtlaSilTo design this service, certified nutritionists, personal trainers, and cooks have united to develop keto meal plans that are productive, painless, cost-efficient, and enjoyable.
Since their first launch in early 2019, hundreds of clients have already transformed their figure and health with the benefits a certified keto meal plan diet can offer.
Speaking of benefits; in this link, you'll discover eight scientifically-tested ones given by the keto meal plan diet.