Page 1 of 1

Behalten Sie die Dateigröße bei der PDF-Konvertierung bei

Posted: 27 Jan 2025, 11:17
by Anonymous
Ich muss ein PDF in eine Liste mit Bildern konvertieren, dort einige Änderungen vornehmen und es dann erneut in ein PDF konvertieren. Es stellt sich heraus, dass ich nicht in der Lage bin, die Originalgröße der PDF-Vorkonvertierung bei gleichbleibender Qualität wiederherzustellen. Dies ist die Funktion, die ich verwende.

Code: Select all

import cv2
import fitz

def pdf_to_images_and_back(pdf_path: str, zoom = 2):

matrix = fitz.Matrix(zoom, zoom)

new_pdf_document = fitz.open()
with fitz.open(pdf_path) as pdf_document:
for page_number in range(len(pdf_document)):
page = pdf_document.load_page(page_number)
pix = page.get_pixmap(matrix=matrix)
img = np.frombuffer(pix.samples, dtype=np.uint8).reshape(
pix.height, pix.width, pix.n
)
if pix.n == 3:
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
cv2.imwrite(f"test_im_{page_number}.png", img)
page = new_pdf_document.new_page()
rect = fitz.Rect(0, 0, img.shape[1] / zoom, img.shape[0] / zoom)
page.insert_image(rect, filename=f"test_im_{page_number}.png")

new_pdf_document.save("output_pdf.pdf", deflate=True, garbage=3)
Bei einem Zoom von 1 hat die Ausgabe eine vergleichbare Größe wie das Original-PDF, aber die Qualität ist viel schlechter. Bei einem Zoom von 2 bleibt die Qualität ungefähr gleich, aber die Größe verdoppelt sich fast. Deshalb habe ich mich gefragt, was ich anders machen könnte, um sowohl Qualität als auch Größe beizubehalten.
Ich freue mich über alle Erkenntnisse oder Hinweise!