From a9da839c3976e36e6be89d33082df6c2d244254f Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Thu, 8 Feb 2018 00:15:12 -0800 Subject: [PATCH] Add vector-only PDF test case --- tests/resources/README.rst | 3 +++ tests/resources/vector.pdf | Bin 0 -> 38923 bytes tests/test_main.py | 18 +++++++++++++++++- 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 tests/resources/vector.pdf diff --git a/tests/resources/README.rst b/tests/resources/README.rst index 561c5fa7..7c74aa67 100644 --- a/tests/resources/README.rst +++ b/tests/resources/README.rst @@ -100,6 +100,9 @@ under the terms of the license in LICENSE.rst. * - trivial.pdf - @jbarlow83 - smallest possible valid PDF-1.3 with all required fields + * - vector.pdf + - @Catscratch + - a PDF with vector art and text rendered as curves with no fonts Assemblies diff --git a/tests/resources/vector.pdf b/tests/resources/vector.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a8ed7ff88d570a12f5da28cf851347d190ffbcf0 GIT binary patch literal 38923 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 ANdN!< literal 0 HcmV?d00001 diff --git a/tests/test_main.py b/tests/test_main.py index e371dd74..63307726 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1081,4 +1081,20 @@ def test_decompression_bomb(resources, outpdf): outpdf, '--max-image-mpixels', '2000' ) - assert p.returncode == 0 \ No newline at end of file + assert p.returncode == 0 + + +def test_text_curves(spoof_tesseract_noop, resources, outpdf): + check_ocrmypdf( + resources / 'vector.pdf', outpdf, env=spoof_tesseract_noop) + + info = PdfInfo(outpdf) + assert len(info.pages[0].images) == 0, "added images to the vector PDF" + + check_ocrmypdf( + resources / 'vector.pdf', outpdf, '--force-ocr', + env=spoof_tesseract_noop) + + info = PdfInfo(outpdf) + assert len(info.pages[0].images) != 0, "force did not rasterize" +