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