forked from mirrors/cbz
Merge pull request #17 from tssujt/pdf
Replace PyMuPDF with pypdf for PDF handling
This commit is contained in:
+5
-8
@@ -8,7 +8,7 @@ from io import BytesIO
|
|||||||
from typing import Union
|
from typing import Union
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import fitz
|
from pypdf import PdfReader
|
||||||
import xmltodict
|
import xmltodict
|
||||||
|
|
||||||
from cbz.constants import XML_NAME, COMIC_FIELDS, IMAGE_FORMAT, PAGE_FIELDS
|
from cbz.constants import XML_NAME, COMIC_FIELDS, IMAGE_FORMAT, PAGE_FIELDS
|
||||||
@@ -98,13 +98,10 @@ class ComicInfo(ComicModel):
|
|||||||
ComicInfo: An instance of ComicInfo.
|
ComicInfo: An instance of ComicInfo.
|
||||||
"""
|
"""
|
||||||
pages: list[PageInfo] = []
|
pages: list[PageInfo] = []
|
||||||
with fitz.open(path) as pf:
|
reader = PdfReader(path)
|
||||||
for element in pf:
|
for page in reader.pages:
|
||||||
# Check if the page has images
|
for image in page.images:
|
||||||
images = element.get_images(full=True)
|
pages.append(PageInfo.loads(data=image.data))
|
||||||
for i, image in enumerate(images):
|
|
||||||
base = pf.extract_image(image[0])
|
|
||||||
pages.append(PageInfo.loads(data=base['image']))
|
|
||||||
|
|
||||||
assert pages, 'No valid images present in file'
|
assert pages, 'No valid images present in file'
|
||||||
return ComicInfo.from_pages(pages=pages)
|
return ComicInfo.from_pages(pages=pages)
|
||||||
|
|||||||
+2
-2
@@ -34,7 +34,7 @@ python = ">=3.8"
|
|||||||
xmltodict = ">=0.13.0"
|
xmltodict = ">=0.13.0"
|
||||||
langcodes = ">=3.4.0"
|
langcodes = ">=3.4.0"
|
||||||
Pillow = ">=10.4.0"
|
Pillow = ">=10.4.0"
|
||||||
PyMuPDF = ">=1.24.7"
|
pypdf = ">=5.6.1"
|
||||||
|
|
||||||
[tool.poetry.scripts]
|
[tool.poetry.scripts]
|
||||||
cbzplayer = "cbz.__main__:main"
|
cbzplayer = "cbz.__main__:main"
|
||||||
@@ -45,4 +45,4 @@ url = "https://pypi.org/simple/"
|
|||||||
priority = "primary"
|
priority = "primary"
|
||||||
|
|
||||||
[certificates]
|
[certificates]
|
||||||
localpypi = { cert = false }
|
localpypi = { cert = false }
|
||||||
|
|||||||
Reference in New Issue
Block a user