PDF'i otomatik pilota bağlamak!
16 Ağustos 2007
"İ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ü davetisiyesinden oluşmuş bir PDF dosyası) ve bir dolu isim ve emailden 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.
Beni twitter'de takip edebilirsiniz: @mehmet_dogan


Harikasın, emin ol bi gün mutlaka işime yarayacak.
Bize böyle enteresan şeyleri gerektirecek işler geliyor hep.
Teşekkürler. :)
dubai'ye neden taşındığınızı halen anlamaya çabalarken yazınız için teşekkür ediyorum işime gerçekten yarayacak :)
dubai yaradı galiba :O)
Teşekkürler
Yaramaz mı yaramaz mı, hemen saklayalım bu güzel dokümanı... :)
Gerçekten çok özel bir döküman oldu:D. bana da aynı şeyleri söyluyorda yazılım eğitimlerinde, ama bende yazılımcı değilim. :D Şu bir gerçek ki pratik zekalı olmak zorudayız...
Harika bir script günün birinde bir çoğumuzun işine yarayacağına eminim paylaşım için çok teşekkürler sayın Doğan
Yaşasın tembellik !!!
Aslında yaşasın pratik zeka ve bilgi demek daha doğru ama olsun, ilki insanların duymak istediği...
Teşekkürler..
Öncelikle size uzun zamandır yazamadığım için üzüntülerimle satırlarıma başladığımı bilmelisiniz.
Askerlik günlerinde kalmıştık. Anlaşılıyor ki askerlikten terhis olmuşsunuz.
Şimdi ise dubai'desiniz.
Başarılar. Bize yazdığınız için teşekkürler.
Abone olmamıza rağmen uzun günlerdir ilk defa e-mailinizi aldım.
javascript mi öğrensek ne?
Teşekkürler!
Dubai'nin sıcakları böyle yapıyor herhalde adamı
super,yazı iyi geldi,moralim düzeldi.teşekkürler
"İyi yazılımcı, tembel yazılımcıdır" sonuna kadar doğru bir laf. eskiler de "ihtiyaç organ üretir" derlermiş.
Eskiden tembellik veya kısa yol konusuna hiç girmeyen Mehmet askerliği sonrasında tembellik ve kolaylıkları anlatmaya başladı.Anlaşılıyor,ülkemde su içip yemek yediği.Yakın zamanda düzelir,bize yine güzel web kuralları dolu şeyler yazarsın.
@can, güzel tespit :)
İşe yarar bir döküman, teşekkürler.
12.Yoruma + 1
Programcı özünde tembeldir. Şöyle, bir programcıdan bir şeyi bir defa istersiniz yapar, aynı şeyi tekrar istemeye başlarsanız programcı onu otomatiğe alacak bir program yazar :) .
Bundan daha mı kolay olur emin değilim ama ben aynı işlemi yapmak için Word'ün "mail merge" (Türkçe'sini bilemeyeceğim) özelliğini kullanıyorum. Sonra da print to PDF.
Özellikle "...kendi beynini kullanmak yerine, bilgisayarının işlemcisini kullanmayı tercih edecektir..." kısmına sonuna kadar katılıyorum. Bu arada sahalara tekrar dönmene çok sevindim Mehmet Abi :)
MS Word'deki Mail Merge (Türkçe sürümde Adres/Mektup birleştirme), herhangi bir programlama deneyimi olmaya bir kullanıcı için daha cazip olabilir. PDF dokümanını Word'e aktarın.(Eğer kopyala-yapıştır yapamıyorsanız, pek çok ücretsiz PDF Converter yazılımı mevcut). Sonra Adrs/mektup birleştirme sihirbazını kullanarak, herhangi bir Excel ya da Word tablosunda istediğiniz sütunları şablon dokümanınız üzerinde istediğiniz yere yerleştirebilirsiniz.
Fakat PDF üzerinde Javascript çalıştırmak da eğlenceli bir işmiş hani! Yaşasın tembellik!
portable document file asıl adı
Arkadaşlar Katılıyorum cidden yaşasın tembellik önceden baya ugrastırıyordu bu olaylar..
tadindan yiyemedigim en kiymetli ozelligi ise, text editlere izin vererek, elinizde kaynak dosyasi olmayan uzuuun bir metin uzerinde cabucanak degi$iklikler yapmaya izin vermesidir. ofis insaninin bilgisayarina kurulmasi gereken adobe acrobat gibi bir programin yavrucagidir.
Vallahi bravo hocam. bende eski bir programcı olarak kutluyorum zekanızı.
pratik zekayı seren tüm hünerli yüreklere bayılıyorum....tebrikler,
slm site yapmanın puf noktaları nelerdir acaba :)
YAZIYI YAZAN SAHIS SABIR TIMSALI GALIBA ,BASARMAK ICIN ANCAK BOYLE GAYRET GEREKIR TESEKKUR EDERIM.
yeni yazı yazmanızı bekliyorum, umarım bir sorununuz yoktur. Bu arada, yazilarinizdan öğrendiğim şeyleri sitelerimden birisine uyguladım ve kullanıcı sayısında gözle görülür bir artış oldu :)
Zaten hep öyle değilmidir tembel bildiğimiz kişilerin genelde ya işleri yoktur yani ya gerçek tembeldir
yada işlerini kısa yoldan bitirmiş farklı işler bekleyendir buda gerçek pratik zekadır
İyi yazılımcı, tembel yazılımcıdır.. =)))
Aynı anlama yakın bir cümleyi bizim hocamızda söylemişti kursta -web tasarım- bakalım ilerde iyi bir tasarımcı olursam ben de hem söylicem hem de yapıcam inşallah bu pratik yöntemi =)
http://ykslnbsk.blogcu.com/
Yaşasın tembellik .. Bir gun mutlaka işime yarayacak.. ellerine sağlık hocam..
Kaliteli site ve içerik son zamanlarda hepimizin sıkıntısı. Gerçekten güzel bir yazı şuanda işime yaramasada bu pratik çözüm ileride işime mutlaka yarayacaktır.
teşekkürler
Abi ne zamandır böyle birşey arıyordum mantığını bulmamda yardımcı olduğun için teşekkürler
Kitabımı satın almak ister misiniz?