diff --git a/.gitignore b/.gitignore
index b2721d5..1632b9a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,2 @@
/pdfkit-0.4.1.tar.gz
/pdfkit-0.5.0.zip
-/pdfkit-0.6.1.tar.gz
diff --git a/6f1077dbae22863390915b6f69c8ec77f7c4a83f_example.css b/6f1077dbae22863390915b6f69c8ec77f7c4a83f_example.css
deleted file mode 100644
index 1e2acd0..0000000
--- a/6f1077dbae22863390915b6f69c8ec77f7c4a83f_example.css
+++ /dev/null
@@ -1 +0,0 @@
-body { font-size: 80px; }
\ No newline at end of file
diff --git a/6f1077dbae22863390915b6f69c8ec77f7c4a83f_example.html b/6f1077dbae22863390915b6f69c8ec77f7c4a83f_example.html
deleted file mode 100644
index 8b15991..0000000
--- a/6f1077dbae22863390915b6f69c8ec77f7c4a83f_example.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
- Oh Hai!
-
-
\ No newline at end of file
diff --git a/6f1077dbae22863390915b6f69c8ec77f7c4a83f_example2.css b/6f1077dbae22863390915b6f69c8ec77f7c4a83f_example2.css
deleted file mode 100644
index 016db27..0000000
--- a/6f1077dbae22863390915b6f69c8ec77f7c4a83f_example2.css
+++ /dev/null
@@ -1 +0,0 @@
-a { color: blue; }
\ No newline at end of file
diff --git a/6f1077dbae22863390915b6f69c8ec77f7c4a83f_pdfkit-tests.py b/6f1077dbae22863390915b6f69c8ec77f7c4a83f_pdfkit-tests.py
deleted file mode 100644
index 78fc329..0000000
--- a/6f1077dbae22863390915b6f69c8ec77f7c4a83f_pdfkit-tests.py
+++ /dev/null
@@ -1,412 +0,0 @@
-# -*- coding: utf-8 -*-
-import os
-import io
-import sys
-import codecs
-import unittest
-
-
-if sys.version_info[0] == 2 and sys.version_info[1] == 7:
- unittest.TestCase.assertRegex = unittest.TestCase.assertRegexpMatches
-
-
-#Prepend ../ to PYTHONPATH so that we can import PDFKIT form there.
-TESTS_ROOT = os.path.abspath(os.path.dirname(__file__))
-sys.path.insert(0, os.path.realpath(os.path.join(TESTS_ROOT, '..')))
-
-import pdfkit
-
-
-class TestPDFKitInitialization(unittest.TestCase):
- """Test init"""
-
- def test_html_source(self):
- r = pdfkit.PDFKit('Oh hai
', 'string')
- self.assertTrue(r.source.isString())
-
- def test_url_source(self):
- r = pdfkit.PDFKit('http://ya.ru', 'url')
- self.assertTrue(r.source.isUrl())
-
- def test_file_source(self):
- r = pdfkit.PDFKit('fixtures/example.html', 'file')
- self.assertTrue(r.source.isFile())
-
- def test_file_object_source(self):
- with open('fixtures/example.html') as fl:
- r = pdfkit.PDFKit(fl, 'file')
- self.assertTrue(r.source.isFileObj())
-
- def test_file_source_with_path(self):
- r = pdfkit.PDFKit('test', 'string')
- with io.open('fixtures/example.css') as f:
- self.assertTrue(r.source.isFile(path=f))
- with codecs.open('fixtures/example.css', encoding='UTF-8') as f:
- self.assertTrue(r.source.isFile(path=f))
-
- def test_options_parsing(self):
- r = pdfkit.PDFKit('html', 'string', options={'page-size': 'Letter'})
- test_command = r.command('test')
- idx = test_command.index('--page-size') # Raise exception in case of not found
- self.assertTrue(test_command[idx+1] == 'Letter')
-
- def test_options_parsing_with_dashes(self):
- r = pdfkit.PDFKit('html', 'string', options={'--page-size': 'Letter'})
-
- test_command = r.command('test')
- idx = test_command.index('--page-size') # Raise exception in case of not found
- self.assertTrue(test_command[idx+1] == 'Letter')
-
- def test_options_parsing_with_tuple(self):
- options = {
- '--custom-header': [
- ('Accept-Encoding','gzip')
- ]
- }
- r = pdfkit.PDFKit('html', 'string', options=options)
- command = r.command()
- idx1 = command.index('--custom-header') # Raise exception in case of not found
- self.assertTrue(command[idx1 + 1] == 'Accept-Encoding')
- self.assertTrue(command[idx1 + 2] == 'gzip')
-
- def test_options_parsing_with_tuple_no_dashes(self):
- options = {
- 'custom-header': [
- ('Accept-Encoding','gzip')
- ]
- }
- r = pdfkit.PDFKit('html', 'string', options=options)
- command = r.command()
- idx1 = command.index('--custom-header') # Raise exception in case of not found
- self.assertTrue(command[idx1 + 1] == 'Accept-Encoding')
- self.assertTrue(command[idx1 + 2] == 'gzip')
-
- def test_repeatable_options(self):
- roptions = {
- '--page-size': 'Letter',
- 'cookies': [
- ('test_cookie1','cookie_value1'),
- ('test_cookie2','cookie_value2'),
- ]
- }
-
- r = pdfkit.PDFKit('html', 'string', options=roptions)
-
- test_command = r.command('test')
-
- idx1 = test_command.index('--page-size') # Raise exception in case of not found
- self.assertTrue(test_command[idx1 + 1] == 'Letter')
-
- self.assertTrue(test_command.count('--cookies') == 2)
-
- idx2 = test_command.index('--cookies')
- self.assertTrue(test_command[idx2 + 1] == 'test_cookie1')
- self.assertTrue(test_command[idx2 + 2] == 'cookie_value1')
-
- idx3 = test_command.index('--cookies', idx2 + 2)
- self.assertTrue(test_command[idx3 + 1] == 'test_cookie2')
- self.assertTrue(test_command[idx3 + 2] == 'cookie_value2')
-
- def test_custom_configuration(self):
- conf = pdfkit.configuration()
- self.assertEqual('pdfkit-', conf.meta_tag_prefix)
- conf = pdfkit.configuration(meta_tag_prefix='prefix-')
- self.assertEqual('prefix-', conf.meta_tag_prefix)
- with self.assertRaises(IOError):
- conf = pdfkit.configuration(wkhtmltopdf='wrongpath')
-
-
-class TestPDFKitCommandGeneration(unittest.TestCase):
- """Test command() method"""
-
- def test_command_construction(self):
- r = pdfkit.PDFKit('html', 'string', options={'page-size': 'Letter', 'toc-l1-font-size': 12})
- command = r.command()
- self.assertEqual(command[0], r.wkhtmltopdf)
- self.assertEqual(command[command.index('--page-size') + 1], 'Letter')
- self.assertEqual(command[command.index('--toc-l1-font-size') + 1], '12')
-
- def test_lists_of_input_args(self):
- urls = ['http://ya.ru', 'http://google.com']
- paths = ['fixtures/example.html', 'fixtures/example.html']
- r = pdfkit.PDFKit(urls, 'url')
- r2 = pdfkit.PDFKit(paths, 'file')
- cmd = r.command()
- cmd2 = r2.command()
- self.assertEqual(cmd[-3:], ['http://ya.ru', 'http://google.com', '-'])
- self.assertEqual(cmd2[-3:], ['fixtures/example.html', 'fixtures/example.html', '-'])
-
- def test_read_source_from_stdin(self):
- r = pdfkit.PDFKit('html', 'string')
- self.assertEqual(r.command()[-2:], ['-', '-'])
-
- def test_url_in_command(self):
- r = pdfkit.PDFKit('http://ya.ru', 'url')
- self.assertEqual(r.command()[-2:], ['http://ya.ru', '-'])
-
- def test_file_path_in_command(self):
- path = 'fixtures/example.html'
- r = pdfkit.PDFKit(path, 'file')
- self.assertEqual(r.command()[-2:], [path, '-'])
-
- def test_output_path(self):
- out = '/test/test2/out.pdf'
- r = pdfkit.PDFKit('html', 'string')
- self.assertEqual(r.command(out)[-1:], ['/test/test2/out.pdf'])
-
- def test_pdfkit_meta_tags(self):
- body = """
-
-
-
-
-
- """
-
- r = pdfkit.PDFKit(body, 'string')
- command = r.command()
- self.assertEqual(command[command.index('--page-size') + 1], 'Legal')
- self.assertEqual(command[command.index('--orientation') + 1], 'Landscape')
-
- def test_pdfkit_meta_tags_in_bad_markup(self):
- body = """
-
-
-
-
-
-
-
- """
-
- r = pdfkit.PDFKit(body, 'string')
- command = r.command()
- self.assertEqual(command[command.index('--page-size') + 1], 'Legal')
- self.assertEqual(command[command.index('--orientation') + 1], 'Landscape')
-
- def test_skip_nonpdfkit_tags(self):
- body = """
-
-
-
-
-
-
-
- """
-
- r = pdfkit.PDFKit(body, 'string')
- command = r.command()
- self.assertEqual(command[command.index('--orientation') + 1], 'Landscape')
-
- def test_toc_handling_without_options(self):
- r = pdfkit.PDFKit('hmtl', 'string', toc={'xsl-style-sheet': 'test.xsl'})
- self.assertEqual(r.command()[1], 'toc')
- self.assertEqual(r.command()[2], '--xsl-style-sheet')
-
- def test_toc_with_options(self):
- options = {
- 'page-size': 'Letter',
- 'margin-top': '0.75in',
- 'margin-right': '0.75in',
- 'margin-bottom': '0.75in',
- 'margin-left': '0.75in',
- 'encoding': "UTF-8"
- }
- r = pdfkit.PDFKit('html', 'string', options=options, toc={'xsl-style-sheet': 'test.xsl'})
-
- command = r.command()
-
- self.assertEqual(command[1 + len(options) * 2], 'toc')
- self.assertEqual(command[1 + len(options) * 2 + 1], '--xsl-style-sheet')
-
- def test_cover_without_options(self):
- r = pdfkit.PDFKit('html', 'string', cover='test.html')
-
- command = r.command()
-
- self.assertEqual(command[1], 'cover')
- self.assertEqual(command[2], 'test.html')
-
- def test_cover_with_options(self):
- options = {
- 'page-size': 'Letter',
- 'margin-top': '0.75in',
- 'margin-right': '0.75in',
- 'margin-bottom': '0.75in',
- 'margin-left': '0.75in',
- 'encoding': "UTF-8"
- }
- r = pdfkit.PDFKit('html', 'string', options=options, cover='test.html')
-
- command = r.command()
-
- self.assertEqual(command[1 + len(options) * 2], 'cover')
- self.assertEqual(command[1 + len(options) * 2 + 1], 'test.html')
-
- def test_cover_and_toc(self):
- options = {
- 'page-size': 'Letter',
- 'margin-top': '0.75in',
- 'margin-right': '0.75in',
- 'margin-bottom': '0.75in',
- 'margin-left': '0.75in',
- 'encoding': "UTF-8"
- }
- r = pdfkit.PDFKit('html', 'string', options=options, toc={'xsl-style-sheet': 'test.xsl'}, cover='test.html')
- command = r.command()
- self.assertEqual(command[-7:], ['toc', '--xsl-style-sheet', 'test.xsl', 'cover', 'test.html', '-', '-'])
-
- def test_cover_and_toc_cover_first(self):
- options = {
- 'page-size': 'Letter',
- 'margin-top': '0.75in',
- 'margin-right': '0.75in',
- 'margin-bottom': '0.75in',
- 'margin-left': '0.75in',
- 'encoding': "UTF-8"
- }
- r = pdfkit.PDFKit('html', 'string', options=options, toc={'xsl-style-sheet': 'test.xsl'}, cover='test.html', cover_first=True)
- command = r.command()
- self.assertEqual(command[-7:], ['cover', 'test.html', 'toc', '--xsl-style-sheet', 'test.xsl', '-', '-'])
-
- def test_outline_options(self):
- options = {
- 'outline': None,
- 'outline-depth': 1
- }
-
- r = pdfkit.PDFKit('ya.ru', 'url', options=options)
- cmd = r.command()
- #self.assertEqual(cmd[1:], ['--outline', '--outline-depth', '1', 'ya.ru', '-'])
- self.assertIn('--outline', cmd)
- self.assertEqual(cmd[cmd.index('--outline-depth') + 1], '1')
-
- def test_filter_empty_and_none_values_in_opts(self):
- options = {
- 'outline': '',
- 'footer-line': None,
- 'quiet': False
- }
-
- r = pdfkit.PDFKit('html', 'string', options=options)
- cmd = r.command()
- self.assertEqual(len(cmd), 6)
-
-
-class TestPDFKitGeneration(unittest.TestCase):
- """Test to_pdf() method"""
-
- def setUp(self):
- pass
-
- def tearDown(self):
- if os.path.exists('out.pdf'):
- os.remove('out.pdf')
-
- def test_pdf_generation(self):
- r = pdfkit.PDFKit('html', 'string', options={'page-size': 'Letter'})
- pdf = r.to_pdf('out.pdf')
- self.assertTrue(pdf)
-
- def test_raise_error_with_invalid_url(self):
- r = pdfkit.PDFKit('wrongurl', 'url')
- with self.assertRaises(IOError):
- r.to_pdf('out.pdf')
-
- def test_raise_error_with_invalid_file_path(self):
- paths = ['frongpath.html', 'wrongpath2.html']
- with self.assertRaises(IOError):
- pdfkit.PDFKit('wrongpath.html', 'file')
- with self.assertRaises(IOError):
- pdfkit.PDFKit(paths, 'file')
-
- def test_stylesheet_adding_to_the_head(self):
- #TODO rewrite this part of pdfkit.py
- r = pdfkit.PDFKit('Hai!', 'string',
- css='fixtures/example.css')
-
- with open('fixtures/example.css') as f:
- css = f.read()
-
- r._prepend_css('fixtures/example.css')
- self.assertIn('' % css, r.source.to_s())
-
- def test_stylesheet_adding_without_head_tag(self):
- r = pdfkit.PDFKit('Hai!', 'string',
- options={'quiet': None}, css='fixtures/example.css')
-
- with open('fixtures/example.css') as f:
- css = f.read()
-
- r._prepend_css('fixtures/example.css')
- self.assertIn('' % css, r.source.to_s())
-
- def test_multiple_stylesheets_adding_to_the_head(self):
- #TODO rewrite this part of pdfkit.py
- css_files = ['fixtures/example.css', 'fixtures/example2.css']
- r = pdfkit.PDFKit('Hai!', 'string',
- css=css_files)
-
- css=[]
- for css_file in css_files:
- with open(css_file) as f:
- css.append(f.read())
-
- r._prepend_css(css_files)
- self.assertIn('' % "\n".join(css), r.source.to_s())
-
- def test_multiple_stylesheet_adding_without_head_tag(self):
- css_files = ['fixtures/example.css', 'fixtures/example2.css']
- r = pdfkit.PDFKit('Hai!', 'string',
- options={'quiet': None}, css=css_files)
-
- css=[]
- for css_file in css_files:
- with open(css_file) as f:
- css.append(f.read())
-
- r._prepend_css(css_files)
- self.assertIn('' % "\n".join(css), r.source.to_s())
-
- def test_stylesheet_throw_error_when_url(self):
- r = pdfkit.PDFKit('http://ya.ru', 'url', css='fixtures/example.css')
-
- with self.assertRaises(r.ImproperSourceError):
- r.to_pdf()
-
- def test_stylesheet_adding_to_file_with_option(self):
- css = 'fixtures/example.css'
- r = pdfkit.PDFKit('fixtures/example.html', 'file', css=css)
- self.assertEqual(r.css, css)
- r._prepend_css(css)
- self.assertIn('font-size', r.source.to_s())
-
- def test_wkhtmltopdf_error_handling(self):
- r = pdfkit.PDFKit('clearlywrongurl.asdf', 'url')
- with self.assertRaises(IOError):
- r.to_pdf()
-
- def test_pdf_generation_from_file_like(self):
- with open('fixtures/example.html', 'r') as f:
- r = pdfkit.PDFKit(f, 'file')
- output = r.to_pdf()
- self.assertEqual(output[:4].decode('utf-8'), '%PDF')
-
- def test_raise_error_with_wrong_css_path(self):
- css = 'fixtures/wrongpath.css'
- r = pdfkit.PDFKit('fixtures/example.html', 'file', css=css)
- with self.assertRaises(IOError):
- r.to_pdf()
-
- def test_raise_error_if_bad_wkhtmltopdf_option(self):
- r = pdfkit.PDFKit('Hai!', 'string',
- options={'bad-option': None})
- with self.assertRaises(IOError) as cm:
- r.to_pdf()
-
- raised_exception = cm.exception
- self.assertRegex(str(raised_exception), '^wkhtmltopdf exited with non-zero code 1. error:\nUnknown long argument --bad-option\r?\n')
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/python-pdfkit.spec b/python-pdfkit.spec
index 11538e6..8b078f1 100644
--- a/python-pdfkit.spec
+++ b/python-pdfkit.spec
@@ -1,27 +1,20 @@
%global pypi_name pdfkit
-%global commit0 6f1077dbae22863390915b6f69c8ec77f7c4a83f
-%global testurl https://raw.githubusercontent.com/JazzCore/python-%{pypi_name}/%{commit0}/tests/
Name: python-%{pypi_name}
-Version: 0.6.1
-Release: 22%{?dist}
+Version: 0.5.0
+Release: 17%{?dist}
Summary: Wkhtmltopdf python wrapper
License: MIT
-URL: https://github.com/JazzCore/python-%{pypi_name}
-Source0: %{pypi_source}
+URL: https://github.com/JazzCore/python-pdfkit
+Source0: https://pypi.python.org/packages/source/p/%{pypi_name}/%{pypi_name}-%{version}.zip
-# tests taken from github due to not part of pypi
-Source10: %{testurl}/%{pypi_name}-tests.py#/%{commit0}_pdfkit-tests.py
-Source11: %{testurl}/fixtures/example.css#/%{commit0}_example.css
-Source12: %{testurl}/fixtures/example.html#/%{commit0}_example.html
-Source13: %{testurl}/fixtures/example2.css#/%{commit0}_example2.css
-
-BuildArch: noarch
+BuildArch: noarch
BuildRequires: python3-setuptools
BuildRequires: python3-devel
BuildRequires: python3
-BuildRequires: wkhtmltopdf
+Requires: python3
+Requires: wkhtmltopdf
Requires: wkhtmltopdf
@@ -33,7 +26,6 @@ This is an adapted version of Ruby PDFKit.
%package -n python3-%{pypi_name}
Summary: Wkhtmltopdf python wrapper
%{?python_provide:%python_provide python3-%{pypi_name}}
-
%description -n python3-%{pypi_name}
Python 3 wrapper for wkhtmltopdf utility to convert HTML to PDF using Webkit.
@@ -50,94 +42,14 @@ rm -rf %{pypi_name}.egg-info
%install
%py3_install
-%check
-mkdir -p tests/fixtures
-cp -t tests %{SOURCE10}
-cp -t tests/fixtures %{SOURCE11} %{SOURCE12} %{SOURCE13}
-find tests -type f |\
- while read a; do b=$(echo $a |\
- sed -r 's/%{commit0}_//'); \
- mv -v $a $b; done
-cd tests
-%{__python3} pdfkit-tests.py
-
%files -n python3-%{pypi_name}
+%{!?_licensedir:%global license %%doc}
%license LICENSE
%doc README.rst HISTORY.rst
%{python3_sitelib}/%{pypi_name}
-%{python3_sitelib}/%{pypi_name}-%{version}-py%{python3_version}.egg-info
+%{python3_sitelib}/%{pypi_name}-%{version}-py?.?.egg-info
%changelog
-* Fri Sep 19 2025 Python Maint - 0.6.1-22
-- Rebuilt for Python 3.14.0rc3 bytecode
-
-* Fri Aug 15 2025 Python Maint - 0.6.1-21
-- Rebuilt for Python 3.14.0rc2 bytecode
-
-* Fri Jul 25 2025 Fedora Release Engineering - 0.6.1-20
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
-
-* Mon Jun 02 2025 Python Maint - 0.6.1-19
-- Rebuilt for Python 3.14
-
-* Sat Jan 18 2025 Fedora Release Engineering - 0.6.1-18
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
-
-* Mon Jan 06 2025 Miro Hrončok - 0.6.1-17
-- Fix build with setuptools 74+
-- Fixes: rhzb#2319690
-
-* Fri Jul 19 2024 Fedora Release Engineering - 0.6.1-16
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
-
-* Fri Jun 07 2024 Python Maint - 0.6.1-15
-- Rebuilt for Python 3.13
-
-* Fri Jan 26 2024 Fedora Release Engineering - 0.6.1-14
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
-
-* Mon Jan 22 2024 Fedora Release Engineering - 0.6.1-13
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
-
-* Fri Jul 21 2023 Fedora Release Engineering - 0.6.1-12
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
-
-* Tue Jun 13 2023 Python Maint - 0.6.1-11
-- Rebuilt for Python 3.12
-
-* Fri Jan 20 2023 Fedora Release Engineering - 0.6.1-10
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
-
-* Fri Jul 22 2022 Fedora Release Engineering - 0.6.1-9
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
-
-* Mon Jun 13 2022 Python Maint - 0.6.1-8
-- Rebuilt for Python 3.11
-
-* Fri Jan 21 2022 Fedora Release Engineering - 0.6.1-7
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
-
-* Fri Jul 23 2021 Fedora Release Engineering - 0.6.1-6
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
-
-* Fri Jun 04 2021 Python Maint - 0.6.1-5
-- Rebuilt for Python 3.10
-
-* Wed Jan 27 2021 Fedora Release Engineering - 0.6.1-4
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
-
-* Wed Jul 29 2020 Fedora Release Engineering - 0.6.1-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
-
-* Tue May 26 2020 Miro Hrončok - 0.6.1-2
-- Rebuilt for Python 3.9
-
-* Mon Mar 16 2020 Raphael Groner - 0.6.1-1
-- new version
-
-* Mon Mar 16 2020 Raphael Groner - 0.5.0-18
-- add tests
-
* Thu Jan 30 2020 Fedora Release Engineering - 0.5.0-17
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
diff --git a/sources b/sources
index 376ecc3..ba78f2b 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (pdfkit-0.6.1.tar.gz) = b3ac1016d1c01a2a196f567b9b672caca10f564cc6a62122691d34c3cbbf143f6a846bfba26c3474e9c0296977f0d30c0b5af13b3321ab207b787df3cba12e5d
+5cbe42c43d463f0794272a01e37a553f pdfkit-0.5.0.zip