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

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

Post 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!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post