Skip to content

Commit

Permalink
conversion: Add sanity check for page count
Browse files Browse the repository at this point in the history
Add a sanity check at the end of the conversion from doc to pixels, to
ensure that the resulting document will have the same number of pages as
the original one.

Refs #560
  • Loading branch information
apyrgio committed Sep 28, 2023
1 parent b4e5cf5 commit ccf4132
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 5 deletions.
16 changes: 11 additions & 5 deletions dangerzone/conversion/doc_to_pixels.py
Original file line number Diff line number Diff line change
Expand Up @@ -349,16 +349,22 @@ async def pdftoppm_progress_callback(line: bytes) -> None:
timeout=timeout,
)

self.update_progress("Converted document to pixels")

# Move converted files into /tmp/dangerzone
for filename in (
final_files = (
glob.glob("/tmp/page-*.rgb")
+ glob.glob("/tmp/page-*.width")
+ glob.glob("/tmp/page-*.height")
):
)

# XXX: Sanity check to avoid situations like #560.
if not running_on_qubes() and len(final_files) != 3 * num_pages:
raise errors.PageCountMismatch()

# Move converted files into /tmp/dangerzone
for filename in final_files:
shutil.move(filename, "/tmp/dangerzone")

self.update_progress("Converted document to pixels")

async def install_libreoffice_ext(self, libreoffice_ext: str) -> None:
self.update_progress(f"Installing LibreOffice extension '{libreoffice_ext}'")
unzip_args = [
Expand Down
7 changes: 7 additions & 0 deletions dangerzone/conversion/errors.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,13 @@ class MaxPageHeightException(PagesException):
error_message = f"A page exceeded the maximum height."


class PageCountMismatch(PagesException):
error_code = ERROR_SHIFT + 46
error_message = (
"The final document does not have the same page count as the original one"
)


class PDFtoPPMException(ConversionException):
error_code = ERROR_SHIFT + 50
error_message = "Error converting PDF to Pixels (pdftoppm)"
Expand Down

0 comments on commit ccf4132

Please sign in to comment.