z230
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
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}")
|
||||
Reference in New Issue
Block a user