42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
from pathlib import Path
|
|
from pypdf import PdfReader, PdfWriter, Transformation, PageObject
|
|
|
|
INPUT_PDF = Path(r"2009-05-04 Puzzle SudokuKiller 376 [difficulty 4 of 10] [average solving time 30 min].pdf")
|
|
OUTPUT_PDF = Path(r"sudoku_50pct_A4.pdf")
|
|
|
|
# A4 v bodech, 72 dpi
|
|
A4_WIDTH = 595.2756
|
|
A4_HEIGHT = 841.8898
|
|
|
|
SCALE = 0.5
|
|
|
|
reader = PdfReader(str(INPUT_PDF))
|
|
source_page = reader.pages[0]
|
|
|
|
source_width = float(source_page.mediabox.width)
|
|
source_height = float(source_page.mediabox.height)
|
|
|
|
# Nová prázdná A4 stránka
|
|
new_page = PageObject.create_blank_page(
|
|
width=A4_WIDTH,
|
|
height=A4_HEIGHT
|
|
)
|
|
|
|
# Výpočet pozice pro vycentrování
|
|
target_width = source_width * SCALE
|
|
target_height = source_height * SCALE
|
|
|
|
x = (A4_WIDTH - target_width) / 2
|
|
y = (A4_HEIGHT - target_height) / 2
|
|
|
|
# Vložit původní PDF stránku jako vektorový objekt, zmenšený na 50 %
|
|
transform = Transformation().scale(SCALE).translate(x, y)
|
|
new_page.merge_transformed_page(source_page, transform, expand=False)
|
|
|
|
writer = PdfWriter()
|
|
writer.add_page(new_page)
|
|
|
|
with OUTPUT_PDF.open("wb") as f:
|
|
writer.write(f)
|
|
|
|
print(f"Hotovo: {OUTPUT_PDF}") |