1
1
mirror of https://github.com/Kozea/WeasyPrint.git synced 2024-10-04 07:57:52 +03:00

Fix images embedded from multiple pages

Fix #1486.
This commit is contained in:
Guillaume Ayoub 2021-11-05 21:59:09 +01:00
parent d62974e0b4
commit ce44a72318
2 changed files with 20 additions and 5 deletions

View File

@ -14,6 +14,8 @@ from codecs import BOM_UTF16_BE
import pytest
from weasyprint import Attachment
from weasyprint.document import Document, DocumentMetadata
from weasyprint.text.fonts import FontConfiguration
from weasyprint.urls import path2url
from .testing_utils import (
@ -505,6 +507,21 @@ def test_embed_image_once():
''').write_pdf().count(b'/Filter /DCTDecode') == 1
@assert_no_logs
def test_embed_images_from_pages():
page1, = FakeHTML(
base_url=resource_filename('dummy.html'),
string='<img src="blue.jpg">').render().pages
page2, = FakeHTML(
base_url=resource_filename('dummy.html'),
string='<img src="not-optimized.jpg">').render().pages
document = Document(
(page1, page2), metadata=DocumentMetadata(),
font_config=FontConfiguration(), url_fetcher=None,
optimize_size=()).write_pdf()
assert document.count(b'/Filter /DCTDecode') == 2
@assert_no_logs
def test_document_info():
pdf = FakeHTML(string='''

View File

@ -96,10 +96,8 @@ class SVGImage:
def get_image_from_uri(cache, url_fetcher, optimize_size, url,
forced_mime_type=None, context=None):
"""Get an Image instance from an image URI."""
missing = object()
image = cache.get(url, missing)
if image is not missing:
return image
if url in cache:
return cache[url]
try:
with fetch(url_fetcher, url) as result:
@ -137,7 +135,7 @@ def get_image_from_uri(cache, url_fetcher, optimize_size, url,
raster_exception)
else:
# Store image id to enable cache in Stream.add_image
image_id = len(cache)
image_id = hash(url)
image = RasterImage(pillow_image, image_id, optimize_size)
except (URLFetchingError, ImageLoadingError) as exception: