from pdf2image import convert_from_path
from PIL import Image
import os,time


def compress_pdf_images(input_pdf, output_pdf, quality=50):
    # Convert PDF pages to images
    images = convert_from_path(input_pdf)

    # Compress images
    compressed_images = []
    for image in images:
        image = image.convert("RGB")
        image.save("temp.jpg", "JPEG", quality=quality)
        compressed_images.append(Image.open("temp.jpg"))
        image.close()
        Image.close()

        for attempt in range(5):
            retry_delay=3
            try:
                # Your code that might fail
                os.remove("temp.jpg")
                print("Success:", result)
                break  # Exit the loop if successful
            except Exception as e:
                print(f"Attempt {attempt + 1} failed:", e)
                if attempt < 5 - 1:
                    print(f"Retrying in {retry_delay} seconds...")
                    time.sleep(retry_delay)
                else:
                    print("Max retries reached. Exiting.")


    # Save compressed images as a new PDF
    compressed_images[0].save(output_pdf, save_all=True, append_images=compressed_images[1:])




# Usage
inputpdf=r"u:\Dropbox\!!!Days\Downloads Z230\Dokumentace\a.pdf"
outputpdf=r"u:\Dropbox\!!!Days\Downloads Z230\Dokumentace\aconverted.pdf"
# Usage
compress_pdf_images(inputpdf, outputpdf, quality=50)