ALTI ÜSTÜ TASARIM – Mehmet Doğan

 
yazı arşivi|abonelik|site ve yazar hakkında|teknoloji kimin umurunda|tavsiye ettiklerim|iletişim
 

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.

  1. var targetDirectory ="/C/Temp/Sonuc/";
  2. var re = /\.pdf$/i;
  3. var filename = this.documentFileName.replace(re,"");
  4. var i = 0, retn = 0;
  5. while( retn == 0 ) {
  6. retn = this.importTextData("veri.txt", i);
  7. var f = this.getField("soyad");
  8. if ( retn == 0 ) {
  9. try {
  10. this.extractPages({
  11. nStart: 0,
  12. cPath: targetDirectory + f.value + ".pdf"
  13. });
  14. } catch (e) { console.println("Aborted: " + e) }
  15. i++;
  16. }
  17. }

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

   
 
Bu yazı Mehmet Doğan tarafından saat 13:53 civarı yazılıp Oradan Buradan dosyası içine işlendi.

Bu konuyu/yazıyı tartışan diğer websiteler diğer bloglar
Bu yazıyı okuyup beğenenler şu yazıyı da okudular.
Bu yazıdaki anahtar kelimeleri twitter'de ara ve bul: | | |
 

1. | 16 Ağustos 2007 14:53 tarihinde, Koray demiş ki:

Harikasın, emin ol bi gün mutlaka işime yarayacak.
Bize böyle enteresan şeyleri gerektirecek işler geliyor hep.
Teşekkürler. :)

2. | 16 Ağustos 2007 14:19 tarihinde, emrah serdaroğlu demiş ki:

dubai'ye neden taşındığınızı halen anlamaya çabalarken yazınız için teşekkür ediyorum işime gerçekten yarayacak :)

3. | 16 Ağustos 2007 15:22 tarihinde, Yunus demiş ki:

dubai yaradı galiba :O)

Teşekkürler

4. | 16 Ağustos 2007 15:56 tarihinde, volkan karakuş demiş ki:

Yaramaz mı yaramaz mı, hemen saklayalım bu güzel dokümanı... :)

5. | 16 Ağustos 2007 16:34 tarihinde, Fatih Murat Eyioğlu demiş ki:

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...

6. | 16 Ağustos 2007 17:43 tarihinde, Murat Durak demiş ki:

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

7. | 17 Ağustos 2007 8:32 tarihinde, Ahmet O. Kalabak demiş ki:

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..

8. | 17 Ağustos 2007 13:16 tarihinde, HASAN GÜLER demiş ki:

Ö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.

9. | 17 Ağustos 2007 14:02 tarihinde, yuci81 demiş ki:

javascript mi öğrensek ne?
Teşekkürler!
Dubai'nin sıcakları böyle yapıyor herhalde adamı

10. | 17 Ağustos 2007 15:52 tarihinde, Cevher demiş ki:

super,yazı iyi geldi,moralim düzeldi.teşekkürler

11. | 17 Ağustos 2007 16:35 tarihinde, Orçun demiş ki:

"İyi yazılımcı, tembel yazılımcıdır" sonuna kadar doğru bir laf. eskiler de "ihtiyaç organ üretir" derlermiş.

12. | 21 Ağustos 2007 4:04 tarihinde, can demiş ki:

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.

13. | 21 Ağustos 2007 10:44 tarihinde, Uğur SAMSA demiş ki:

@can, güzel tespit :)

İşe yarar bir döküman, teşekkürler.

14. | 22 Ağustos 2007 22:30 tarihinde, Çağrı BALCI demiş ki:

12.Yoruma + 1

15. | 27 Ağustos 2007 9:37 tarihinde, wolkanca demiş ki:

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 :) .

16. | 29 Ağustos 2007 15:35 tarihinde, Can demiş ki:

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.

17. | 02 Eylül 2007 3:41 tarihinde, Eneskbc demiş ki:

Ö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 :)

18. | 06 Eylül 2007 12:44 tarihinde, berkman demiş ki:

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!

19. | 07 Eylül 2007 23:54 tarihinde, ilker KULAKSIZ demiş ki:

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.

20. | 14 Eylül 2007 20:51 tarihinde, ozcan demiş ki:

Vallahi bravo hocam. bende eski bir programcı olarak kutluyorum zekanızı.

21. | 20 Eylül 2007 9:27 tarihinde, işitmekaybı demiş ki:


pratik zekayı seren tüm hünerli yüreklere bayılıyorum....tebrikler,

22. | 20 Eylül 2007 15:45 tarihinde, mehmnet demiş ki:

slm site yapmanın puf noktaları nelerdir acaba :)

23. | 22 Eylül 2007 17:29 tarihinde, mehmet demiş ki:

YAZIYI YAZAN SAHIS SABIR TIMSALI GALIBA ,BASARMAK ICIN ANCAK BOYLE GAYRET GEREKIR TESEKKUR EDERIM.

24. | 23 Eylül 2007 1:08 tarihinde, ilhan demiş ki:

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 :)

25. | 27 Eylül 2007 11:02 tarihinde, ERKAN demiş ki:

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

26. | 01 Ekim 2007 20:13 tarihinde, yüKseLenBaŞaK demiş ki:

İ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/

27. | 08 Ekim 2007 2:49 tarihinde, BesST demiş ki:

Yaşasın tembellik .. Bir gun mutlaka işime yarayacak.. ellerine sağlık hocam..

28. | 10 Ekim 2007 9:53 tarihinde, Hüseyin demiş ki:

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

29. | 21 Ekim 2007 19:19 tarihinde, harmankaya demiş ki:

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?

Teknoloji Kimin Umurunda adlı kitabımı satın almak ister misiniz?