def test_generate_pdf_and_url_special_chars(self): """ Test outputting a PDF with special characters. One unicode character is tested. Also, the Javascript escape character for multi-line strings (due to us using it in document.write(`{}`)) """ from chromepdf import generate_pdf, generate_pdf_url # top-level, not via chromepdf.shortcuts html = 'Unicode Char: \u0394 Javascript escape character: ` Some quotes: "\'' # generate_pdf pdfbytes = generate_pdf(html) self.assertIsInstance(pdfbytes, bytes) self.assertEqual(1, extractText(pdfbytes).count(html)) # generate_pdf_url extracted_text = '' try: tempfile = createTempFile(html) tempfile_uri = pathlib.Path(tempfile.name).as_uri() pdfbytes = generate_pdf_url(tempfile_uri) extracted_text = extractText(pdfbytes).strip() finally: os.remove(tempfile.name) self.assertEqual(1, extracted_text.count(html))
def test_generate_pdf_chrome_path_failure(self): from chromepdf import generate_pdf # top-level, not via chromepdf.shortcuts html = 'One Word' with self.assertRaises(ChromePdfException): _pdfbytes = generate_pdf( html, chrome_path=r"C:\Program Files (x86)\badpath.exe")
def test_generate_pdf_chrome_path_success(self): from chromepdf import generate_pdf # top-level, not via chromepdf.shortcuts html = 'One Word' pdfbytes = generate_pdf(html, chrome_path=findChromePath()) self.assertIsInstance(pdfbytes, bytes) self.assertEqual(1, extractText(pdfbytes).count(html))
def test_scale(self): "Scale should affect text size, NOT the paper size." from chromepdf import generate_pdf # top-level, not via chromepdf.shortcuts html = '' pdfbytes = generate_pdf(html, {'scale': 2}) self.assertPageSizeInInches(pdfbytes, (8.5, 11))
def test_papersize_override_landscape(self): "" from chromepdf import generate_pdf # top-level, not via chromepdf.shortcuts html = '' pdfbytes = generate_pdf(html, {'paperFormat': 'A4', 'landscape': True}) self.assertPageSizeInInches(pdfbytes, (11.69, 8.26))
def test_generate_pdf_without_django(self): """Test outputting a PDF using the generate_pdf() shortcut function.""" from chromepdf import generate_pdf # top-level, not via chromepdf.shortcuts html = 'One Word' pdfbytes = generate_pdf(html) self.assertIsInstance(pdfbytes, bytes)
def test_generate_pdf(self): """Test outputting a PDF using the generate_pdf() shortcut function.""" from chromepdf import generate_pdf # top-level, not via chromepdf.shortcuts html = 'One Word' pdfbytes = generate_pdf(html) self.assertIsInstance(pdfbytes, bytes) self.assertEqual(1, extractText(pdfbytes).count(html))
def test_default_size(self): "" from chromepdf import generate_pdf # top-level, not via chromepdf.shortcuts html = '' pdfbytes = generate_pdf(html) # default page size is 8.5 x 11 self.assertPageSizeInInches(pdfbytes, (8.5, 11))
def test_default_size_landscape(self): "" from chromepdf import generate_pdf # top-level, not via chromepdf.shortcuts html = '' pdfbytes = generate_pdf(html, {'landscape': True}) # default page size is 8.5 x 11 self.assertPageSizeInInches(pdfbytes, (11, 8.5))
def test_generate_pdf_chromedriver_path_success(self): from chromepdf import generate_pdf # top-level, not via chromepdf.shortcuts chromedriver_path = download_chromedriver_version( get_chrome_version(findChromePath())) html = 'One Word' pdfbytes = generate_pdf(html, chromedriver_path=chromedriver_path) self.assertIsInstance(pdfbytes, bytes) self.assertEqual(1, extractText(pdfbytes).count(html))
def test_generate_pdf_huge_pdfs(self): """Test outputting PDFs when the HTML is 1 MB.""" from chromepdf import generate_pdf # top-level, not via chromepdf.shortcuts html = '123456789 ' * ((1000 * 1000) // 10) # 10 bytes * 1 MB = 1 MB # generate_pdf pdfbytes = generate_pdf(html) self.assertIsInstance(pdfbytes, bytes) extracted_text = extractText(pdfbytes).strip() self.assertEqual(1000 * 100, extracted_text.count('123456789'))