Anasayfa İletişim RSS
 
Şimdi Üye Ol | Şifremi Unuttum
 
Anasayfa » Püf Noktası (43 ders)
 
PDF'i otomatik pilota bağlamak!

Yazar: Mehmet Doğan  
Eklenme: 05.10.2007   Okunma: 734    Puan: 3.5  
"İyi yazılımcı, tembel yazılımcıdır". Bunu ilk defa, eski çalıştığım yerde, yeteneği inanılmaz sınırlara uzanan bir yazılımcıdan işitmiştim. Anlamı şu: bir yazılımcıya, en fazla ayni rutin işlemi iki kez yaptırabilirisiniz. Üçüncü defa, yazılımcı bir yolunu bulup, isi otomasyon haline getirecek bir yol bulup, kendi beynini kullanmak yerine, bilgisayarının işlemcisini kullanmayı tercih edecektir.

Kısa bir zaman önce, böyle bir yazılımcı ve/veya işlemci gücü aranmaya başladım. Çünkü elimde bir PDF şablon, 300 kişinin ismi ve soyad ve bunlardan üretmem gereken 300 tane PDF dosyası duruyordu. Normal işlem, PDF şablon açılır, teker teker isimler kopyalanıp, yapıştırılır ve üretilen PDF dosyası saklanır. Ben, iyi bir yazılımcı değilim. Hatta yazılımcı bile değilim ama tembellim :-) Bu nedenle, bu proje için otomasyon yolu 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ı, tekst 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.
 
  • Currently 3.53/5
Değelendirmek için üye girişi yapmanız gerekmektedir
EkleBunu Sosyal Paylam Butonu
PDF'i otomatik pilota bağlamak! Dersini Yazdırın

"PDF'i otomatik pilota bağlamak!" dersi için 2 yorum var

15.11.2007 daisy diyor ki:
merhaba ben yaklasık 1500 tane pdf dosyasının ayrı ayrı cıktısını almak istiyorum bunun için dosyaların içine tektek girip yazdır komutunu vermekten baska bi kısa yol varmı acaba yardımcı olursanız sevinirim.tesekkürler

14.05.2008 kare diyor ki:
Daisy nin yorumu için.
İki yolunuz var;
1. Çıktı alacağınız tüm dosyları açmadan klasörde seçin. Sağ tıkladığınızda seçenekler arasında YAZDIR'ı seçtin. (Bu seçenekte çıktı varsayılan yazıcınızdan belirttiğiniz ayarlarında alınır.)
2. Acrobatı boş olarak açın. File--> Combine files seçeneğinde çıkış alacağınız bütün dosyaları bilgisayarınızda bulup seçin. (Hepsi bir klasörde ise tüm klasörü seçebilirsiniz.) Artık 1500 dosyanızda tek bir dosya haline geldi.

Üye olmadan yorum ekleyemezsiniz !


UYARI: SANALKURS'ta yer alan materyaller ile ilgili her türlü sorumluluk hazırlayan veya gönderene aittir. SANALKURS'ta yer alan hiçbir makale, yazarından izinsiz başka bir yerde yayınlanamaz. SANALKURS kullanıcıları ve üyeleri, üçüncü kişilerin telif hakkı sahibi bulunduğu her türlü fikri eser, fotoğraf, resim vb. materyal ve ürünleri kullanamazlar. SANALKURS kullanıcı ve yazarlarının, üçüncü kişilerin telif hakkı sahibi olduğu yazı, resim vb. ürünleri kullanması durumunda, her türlü hukuki ve cezai sorumluluk kendilerine aittir. Söz konusu haksız kullanım nedeniyle SANALKURS .NET'in hiçbir hukuki sorumluluğu bulunmamakta olup, haksız kullanım nedeniyle SANALKURS.NET'in üçüncü kişilere ödemek zorunda kalabileceği her türlü tazminat ve/veya adli/idari para cezaları ilgili Sanalkurs kullanıcılarından rücu edilecektir.
 İSTATİSTİKLER
XML Kaynağımızdan yararlanarak sitemizdeki derslerimizi masaüstünüzden yada web sitenizden takip edebilirsiniz
ÇEVRİMİÇİ 194 Ziyaretçi, 20 Üye (1 Gizli)
zaferg, denokutu, tarhan72, Serkan KÖSE, baser_87, sevimgüven, Necati Özden, grafikel, erengul, pavillion, Ernesto_1968, ziyade, onurçeven, snyasrk, askurt08, nil_ars, esay, Adem27, drakan
BUGÜN DOĞUM GÜNÜ OLAN ÜYEMİZ:
elcins (19)
Bugün: 6128, Dün: 6596, Bu Ay: 25027, Toplam Ziyaret: 1882030, Toplam Üye: 133011, Son Üye: pavillion
Toplam Ders: 2011, Toplam Yazar: 45, Toplam Dosya: 34, Toplam Link: 55
   
RSS Kaynağımızdan yararlanarak sitemizdeki derslerimizi masaüstünüzden yada web sitenizden takip edebilirsiniz