Initial commit
This commit is contained in:
42
A4.py
Normal file
42
A4.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from PyPDF2 import PdfReader, PdfWriter
|
||||
|
||||
# A4 dimensions in points (1mm = 2.83465 points)
|
||||
A4_WIDTH = 210 * 2.83465 # ≈ 595.276 pts (width)
|
||||
A4_HEIGHT = 297 * 2.83465 # ≈ 841.89 pts (height)
|
||||
|
||||
def fit_to_a4(input_pdf_path, output_pdf_path):
|
||||
reader = PdfReader(input_pdf_path)
|
||||
writer = PdfWriter()
|
||||
|
||||
for page in reader.pages:
|
||||
# Get original page dimensions
|
||||
orig_width = float(page.mediabox.width)
|
||||
orig_height = float(page.mediabox.height)
|
||||
|
||||
# Calculate scaling factor to fit A4 (preserve aspect ratio)
|
||||
scale = min(A4_WIDTH / orig_width, A4_HEIGHT / orig_height)
|
||||
|
||||
# Scale the page content
|
||||
page.scale_by(scale)
|
||||
|
||||
# Calculate offsets to center on A4
|
||||
new_width = orig_width * scale
|
||||
new_height = orig_height * scale
|
||||
x_offset = (A4_WIDTH - new_width) / 2
|
||||
y_offset = (A4_HEIGHT - new_height) / 2
|
||||
|
||||
# Set A4 mediabox and shift content
|
||||
page.mediabox.lower_left = (x_offset, y_offset)
|
||||
page.mediabox.upper_right = (x_offset + new_width, y_offset + new_height)
|
||||
|
||||
writer.add_page(page)
|
||||
|
||||
# Save the output PDF
|
||||
with open(output_pdf_path, "wb") as out_file:
|
||||
writer.write(out_file)
|
||||
|
||||
|
||||
|
||||
# Example usage
|
||||
fit_to_a4(r"z:\Dropbox\Ordinace\Dokumentace_ke_zpracování\untitled.pdf", r"z:\Dropbox\Ordinace\Dokumentace_ke_zpracování\output_a4.pdf")
|
||||
print("PDF adjusted to A4 portrait successfully!")
|
||||
Reference in New Issue
Block a user