Created
December 6, 2024 03:03
-
-
Save namnv609/20214ceeb5222376f5950ee91cb69428 to your computer and use it in GitHub Desktop.
Add grid coordinates to existing PDF file
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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