17 Mart 2010 Çarşamba

Hazır Verilerle Otomatik PDF Oluşturma


Bu yazı Excel'deki verilerin çekilerek otomatik olarak bir PDF oluşturma işlemini anlatıyor. Fakat siz bu işlemi veritabanından bilgi çekerek de yapabilirsiniz. Böylece bu işlemi web sayfalarınızda da kullanabilirsiniz.

Diyelim ki elimde bir PDF şablon var ve bu şablona göre 300 kişinin isim ve soyadını kullanarak 300 tane PDF dosyası oluşturmam gerekiyor. Normal işlem, PDF şablon açılır, teker teker isimler kopyalanıp, yapıştırılır ve üretilen PDF dosyası saklanır. Bu proje için otomatik bir yol buldum ve belki günün birinde size de lazım olur diye paylaşayım dedim.

Diyelim ki elinizde bir PDF şablonunuz (örneğin yemek, parti, doğum günü davetiyesinden oluşmuş bir PDF dosyası) ve bir dolu isim ve e-mailden oluşan bir Excel dosyanız var.

Öncellikle Excel dosyanızı, txt dosyası olarak yeniden kayıt edin (örneğin veri.txt) ve aşağıda görülen bir veri dosyası oluşturun:

isim soyad

Ali Veli

Mehmet Saricizmeli


Daha sonra, PDF şablonunuzu açın ve yukarıdaki verilerin görünmesi gereken yerlere PDF Form araçları sayesinde Textbox oluşturun. Textbox'in ismi ile veri dosyanızdaki sütun başlıklarının uyuşmasına dikkat edin.

Textbox ile süslediğiniz bu yeni PDF şablonu veri dosyası (veri.txt) ile aynı klasör içine saklayın ve daha sonra Adobe Acrobat içinde şablonunuz açıkken Ctrl+J'ye basıp, Acrobat Console'u ekrana çağırın ve aşağıda gördüğünüz JavaScript'i kopyalayıp, yapıştırın.
var targetDirectory ="/C/Temp/Sonuc/";
var re = /\.pdf$/i;
var filename = this.documentFileName.replace(re,"");
var i = 0, retn = 0;
while( retn == 0 ) {
retn = this.importTextData("veri.txt", i);
var f = this.getField("soyad");
if ( retn == 0 ) {
try {
this.extractPages({
nStart: 0,
cPath: targetDirectory + f.value + ".pdf"
});
} catch (e) { console.println("Aborted: " + e) }
i++;
}
}
Hepsi bu kadar! Ctrl+A'ya basıp, bütün kodu secili hale getirip, Ctrl+Enter'a basın. Voila! 300 tane PDF dosyası, isim ve email adresleri gereken yerlere yazılmış şekilde sizi bekliyor.

Yukarıda kod içinde değiştirebileceğiniz kısımlar:

var targetDirectory kısmı, bu scripte, üretilecek PDF dosyalarının saklanacağı dizini tanımlıyor.

this.importTextData("veri.txt", i); ise veri dosyanızı ismini taşıyor.

this.getField("soyad"); kısmı ise, bu dosyaların nasıl isimlendirileceğini tanımlıyor.

Verdiğimiz örnek içinde, üretilen dosyalar, veri dosyanız içinde bulunan "soyad" sütunundaki verileri kullanarak isim verecek, örneğin "Veli.pdf".

Umarım günün birinde, bu scriptin size de yardımı dokunur.

Bu yazı Alıntıdır. Mesajı yazan Mehmet Doğan'a teşekkürler.