Skip to content

Instantly share code, notes, and snippets.

@namnv609
Created December 6, 2024 03:03
Show Gist options
  • Save namnv609/20214ceeb5222376f5950ee91cb69428 to your computer and use it in GitHub Desktop.
Save namnv609/20214ceeb5222376f5950ee91cb69428 to your computer and use it in GitHub Desktop.
Add grid coordinates to existing PDF file
from reportlab.lib.pagesizes import A4, landscape
from reportlab.pdfgen import canvas
from PyPDF2 import PdfReader, PdfWriter
from reportlab.lib.colors import Color
import io
def create_grid_overlay():
packet = io.BytesIO()
c = canvas.Canvas(packet, pagesize=landscape(A4))
grid_spacing = 5 # Khoảng cách giữa các đường lưới
c.setStrokeColor(Color(255, 0 ,0 , alpha = 0.2))
c.setLineWidth(0.2)
# Vẽ các đường dọc
for x in range(0, int(A4[1]), grid_spacing):
c.line(x, 0, x, A4[0])
# Vẽ các đường ngang
for y in range(0, int(A4[0]), grid_spacing):
c.line(0, y, A4[1], y)
# Thêm tọa độ vào lưới
for x in range(0, int(A4[1]), grid_spacing):
for y in range(0, int(A4[0]), grid_spacing):
c.setFont("Helvetica", 1.2)
c.drawString(x + 2, y + 2, f"({x}, {y})") # Dịch văn bản một chút để dễ nhìn hơn
c.save()
packet.seek(0)
return PdfReader(packet)
def add_grid_to_existing_pdf(existing_pdf_path, output_pdf_path):
grid_overlay = create_grid_overlay()
reader = PdfReader(existing_pdf_path)
writer = PdfWriter()
for page_number in range(len(reader.pages)):
page = reader.pages[page_number]
# Thêm trang lưới lên trang hiện tại của file PDF gốc
if page_number < len(grid_overlay.pages):
overlay_page = grid_overlay.pages[page_number]
page.merge_page(overlay_page)
writer.add_page(page)
with open(output_pdf_path, "wb") as output_file:
writer.write(output_file)
# Ví dụ sử dụng:
add_grid_to_existing_pdf("input_file.pdf", "output_file.pdf")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment