Rehber A3 ve A4 belgeleri separate yapmak

Katılım
22 Aralık 2023
Mesajlar
933
Makaleler
1
Çözümler
3
Beğeniler
224
A3 ve A4 belgelerin bir arada olduğunu ve ayrıca bunları ayırt etmekde bazen zorlanabiliyoruz. Bu yazımda Sizlere yapay zeka teknolojisini kullanarak Python scripti yazdırmayı denedim. Açıkçası böyle bir rehbere kendimin de ihtiyacım olduğu için işimi kolaylaştırma adına bu rehberi Sizinle de paylaşıyorum. Aslında rehberi demeyelim de direkt Python kodunu buraya bırakıyorum. Bu kod sayesinde A3 ve A4 belgeleri bir birinden rahatlıkla ayırabileceksiniz. Örneğin Ben bir ihale işinde çalıştığım için devamlı AutoCAD çizgileri gönderiyorlar. İçerisinde A3 ve A4 karışık sayfalar olabilir.


File.pdf yazan yere dosyanızın ismini yazın. Burada dikkat etmeniz gereken dosya adında boşluk olmayacak. Örneğin File 1.pdf şeklinde değil de File_1.pdf şeklinde yazın ve başlat deyip bekleyin. Otomatik olarak dosyaları kendisi Python ayıracaktır. A3_pages.pdf ve A4_pages.pdf ve eğer sayfa size eşleşmiyor ise other_pages.pdf olarak kendisi ayıracaktır.

Python:
import pikepdf

input_pdf = "File.pdf"
pdf = pikepdf.open(input_pdf)

a3_pdf = pikepdf.Pdf.new()
a4_pdf = pikepdf.Pdf.new()
other_pdf = pikepdf.Pdf.new()

# Standard sizes in points
A3 = (841.89, 1190.55)
A4 = (595.28, 841.89)
tol = 5  # increased tolerance

for i, page in enumerate(pdf.pages, start=1):
    media = page.MediaBox
    
    # Properly check if CropBox exists
    try:
        crop = page.CropBox
    except AttributeError:
        crop = media
    
    # Alternative approach using hasattr:
    # crop = page.CropBox if hasattr(page, 'CropBox') else media

    width = float(crop[2]) - float(crop[0])
    height = float(crop[3]) - float(crop[1])
    dims = sorted([width, height])  # sort in case of rotation

    if abs(dims[0] - A3[0]) < tol and abs(dims[1] - A3[1]) < tol:
        a3_pdf.pages.append(page)
        print(f"Page {i} -> A3")
    elif abs(dims[0] - A4[0]) < tol and abs(dims[1] - A4[1]) < tol:
        a4_pdf.pages.append(page)
        print(f"Page {i} -> A4")
    else:
        other_pdf.pages.append(page)
        print(f"Page {i} -> OTHER ({width:.2f} x {height:.2f})")

# Only save PDFs that contain pages
if len(a3_pdf.pages) > 0:
    a3_pdf.save("A3_pages.pdf", linearize=True)
    print(f"✅ A3_pages.pdf created with {len(a3_pdf.pages)} pages")
else:
    print("⚠️  No A3 pages found - A3_pages.pdf not created")

if len(a4_pdf.pages) > 0:
    a4_pdf.save("A4_pages.pdf", linearize=True)
    print(f"✅ A4_pages.pdf created with {len(a4_pdf.pages)} pages")
else:
    print("⚠️  No A4 pages found - A4_pages.pdf not created")

if len(other_pdf.pages) > 0:
    other_pdf.save("Other_pages.pdf", linearize=True)
    print(f"✅ Other_pages.pdf created with {len(other_pdf.pages)} pages")
else:
    print("⚠️  No other-sized pages found - Other_pages.pdf not created")

print("Done ✅ Processing completed successfully.")
 
Bu harika bir çözüm! A3 ve A4 belgelerini ayırmak için kullanışlı bir Python scripti paylaşmışsınız. pikepdf kütüphanesini kullanarak sayfa boyutlarını belirlemek ve dosyaları ayırmak için iyi bir yol sunduğunuz için teşekkürler.

Dosya adları konusunda yaptığınız uyarı da önemli; boşluk olmayan adlar kullanmak, scriptin düzgün çalışması için gereklidir. Eğer başka sorularınız varsa veya kodu geliştirmek isterseniz, yardımcı olmaktan memnuniyet duyarım!
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…