view tests/test_insertimage.py @ 1:1d09e1dec1d9 upstream

ADD: PyMuPDF v1.26.4: the original sdist. It does not yet contain MuPDF. This normally will be downloaded when building PyMuPDF.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:37:51 +0200
parents
children
line wrap: on
line source

"""
* Insert same image with different rotations in two places of a page.
* Extract bboxes and transformation matrices
* Assert image locations are inside given rectangles
"""
import json
import os

import pymupdf

scriptdir = os.path.abspath(os.path.dirname(__file__))
imgfile = os.path.join(scriptdir, "resources", "nur-ruhig.jpg")


def test_insert():
    doc = pymupdf.open()
    page = doc.new_page()
    r1 = pymupdf.Rect(50, 50, 100, 100)
    r2 = pymupdf.Rect(50, 150, 200, 400)
    page.insert_image(r1, filename=imgfile)
    page.insert_image(r2, filename=imgfile, rotate=270)
    info_list = page.get_image_info()
    assert len(info_list) == 2
    bbox1 = pymupdf.Rect(info_list[0]["bbox"])
    bbox2 = pymupdf.Rect(info_list[1]["bbox"])
    assert bbox1 in r1
    assert bbox2 in r2

def test_compress():
    document = pymupdf.open(f'{scriptdir}/resources/2.pdf')
    document_new = pymupdf.open()
    for page in document:
        pixmap = page.get_pixmap(
                colorspace=pymupdf.csRGB,
                dpi=72,
                annots=False,
                )
        page_new = document_new.new_page(-1)
        page_new.insert_image(rect=page_new.bound(), pixmap=pixmap)
    document_new.save(
            f'{scriptdir}/resources/2.pdf.compress.pdf',
            garbage=3,
            deflate=True,
            deflate_images=True,
            deflate_fonts=True,
            pretty=True,
            )

def test_3087():
    path = os.path.abspath(f'{__file__}/../../tests/resources/test_3087.pdf')
    
    doc = pymupdf.open(path)
    page = doc[0]
    print(page.get_images())
    base = doc.extract_image(5)["image"]
    mask = doc.extract_image(5)["image"]
    page = doc.new_page()
    page.insert_image(page.rect, stream=base, mask=mask)
    
    doc = pymupdf.open(path)
    page = doc[0]
    print(page.get_images())
    base = doc.extract_image(5)["image"]
    mask = doc.extract_image(6)["image"]
    page = doc.new_page()
    page.insert_image(page.rect, stream=base, mask=mask)