Monday, September 12, 2011

PDF Formlarin Uzerine Yazi Yazmak

Alttaki Python programi, biraz da Imagemagick yardimi ile bir PDF bazli formu otomatik olarak doldurma servisini sagliyor. PDF dokuman.pdf dosyasi isleniyor ve bu dosyanin 7. sayfasina bazi bilgiler eklenerek doldurulmus halde out7.jpg adli bir dosya yaratiliyor. Bu teknik basit bir ayar dosyasi ve biraz OCR yardimiyla herhangi bir PDF formunu doldurabilecek bir programa evrilebilir. Altta hem text hem de biraz imza jpg (signature.jpg) imajini belli noktalara koyuyoruz.

Ilk once ImageMagick convert cagrisi ile PDF dosyasini alip eger birden fazla sayfa varsa, o kadar jpg dosyasina ceviriyoruz. Not: convert islemi biraz zaman alir, ve sadece bir kez yapilmasi yeter zaten, script'in diger kisimlarini ardi ardina test ederken convert satiri sonraki isletimlerde iptal edilebilir.

Imza imajini koyarken, paste kullaniyoruz. Bir imaji digerinin icine yapistirirken paste cagrisina bir "kutu (box)" parametresi verilir, bu dort ogeli bir Python tupu (tuple), yani (100,100,200,200) gibi bir deger. Ornekte verilen degerler sol ust kosesi 100,100'de sag alt kosesi (200,200)'de olan bir kutuyu tarif ediyor.

Sonra, diyelim ki degistirilen dosya out7.jpg sadece, ama diger sayfalar hala oldugu gibi, yine ImageMagic convert kullanarak tum bu dosyalari degisen imaj ile beraber toparlayip tekrar bir PDF haline getirebiliriz.

convert Dokuman-1.jpg Dokuman-2.jpg ... out7.jpg Dokuman-8.jpg Yeni_Dokuman.pdf

gibi. Tek sayfa uzerinde degisim yapan script asagida.
import os, sys
import PIL
from PIL import ImageFont
from PIL import Image
from PIL import ImageDraw

os.system("convert -density 200x200 -quality 60 ~/Desktop/Dokuman.pdf Dokuman.jpg")
img = Image.open("Dokuman-7.jpg")
sign = Image.open("signature.jpg")
x = 900
y = 1450
sizex = 350
sizey = 122
img.paste(sign, (x,y,x+sizex,y+sizey))
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("/usr/share/fonts/truetype/msttcorefonts/Times_New_Roman.ttf",27)
draw.text((350, 1500), "Isim Soyad, Vesaire", font=font, fill='black')
img.save("out7.jpg")

Tuesday, September 6, 2011

Ikili PDF Sayfalari Tek Sayfali Yapmak (Ortadan Bolmek)

2 sayfa yanyana scan edilmis PDF dokumanlarini normal hale getirmek icin alttaki yontem kullanilabilir. Once pdfjam adli program lazim, apt-get bunu kurar. Ardindan

pdfjam -o cift.pdf --trim '14cm 0cm 0cm 0cm' --clip true --scale 1.0 dokuman.pdf
pdfjam -o tek.pdf --trim '0cm 0cm 14cm 0cm' --clip true --scale 1.0 dokuman.pdf
pdftk A=cift.pdf B=tek.pdf shuffle BE AE output final_dokuman.pdf

Bu komutlarin yaptigi su; biri sagdan bir soldan olmak uzere 14 cm'lik bolumu kesip atiyoruz (trim ve clip true), ve bu budanmis dokumanlardan birini tek sayili sayfalar, digerini cift sayili sayfalar olarak kaydediyoruz. Sonra bir pdftk taklasi atmak gerekiyor, bu komuta iki dokumani birlestirmesini soyluyoruz, ama tek sayfalari bir yerden, cift sayfalari baska bir yerden almasini soyluyoruz (shuffle B A secenegi, E ekini biz yaptik, E harfi dogu yonunde -east- cevirim, boylece BE AE oldu cunku bizim sayfalari bir de 90 derece saga cevirmek gerekti).

Thursday, September 1, 2011

Uygulamalı Matematik Kitapçığı ve Github

Ornek Python kodlariyla Uygulamali Matematik yazilarinin LaTex, png, vs. dosyalarinin tamami Github uzerinde.

Github