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..3fcabbf 100644 --- a/python-pdfkit.spec +++ b/python-pdfkit.spec @@ -1,27 +1,23 @@ %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: 9%{?dist} Summary: Wkhtmltopdf python wrapper +Group: Development/Libraries 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: python2-setuptools +BuildRequires: python2-devel BuildRequires: python3-setuptools BuildRequires: python3-devel BuildRequires: python3 -BuildRequires: wkhtmltopdf +Requires: python3 +Requires: wkhtmltopdf Requires: wkhtmltopdf @@ -30,10 +26,19 @@ Python 2 wrapper for wkhtmltopdf utility to convert HTML to PDF using Webkit. This is an adapted version of Ruby PDFKit. +%package -n python2-%{pypi_name} +Summary: Wkhtmltopdf python wrapper +Group: Development/Libraries +%{?python_provide:%python_provide python2-%{pypi_name}} +%description -n python2-%{pypi_name} +Python 2 wrapper for wkhtmltopdf utility to convert HTML to PDF using Webkit. + +This is an adapted version of Ruby PDFKit. + %package -n python3-%{pypi_name} Summary: Wkhtmltopdf python wrapper +Group: Development/Libraries %{?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. @@ -45,124 +50,28 @@ This is an adapted version of Ruby PDFKit. rm -rf %{pypi_name}.egg-info %build +%py2_build %py3_build %install +%py2_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 python2-%{pypi_name} +%{!?_licensedir:%global license %%doc} +%license LICENSE +%doc README.rst LICENSE HISTORY.rst +%{python2_sitelib}/%{pypi_name} +%{python2_sitelib}/%{pypi_name}-%{version}-py?.?.egg-info %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 - -* Thu Oct 03 2019 Miro Hrončok - 0.5.0-16 -- Rebuilt for Python 3.8.0rc1 (#1748018) - -* Mon Aug 19 2019 Miro Hrončok - 0.5.0-15 -- Rebuilt for Python 3.8 - -* Fri Jul 26 2019 Fedora Release Engineering - 0.5.0-14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Sat Feb 02 2019 Fedora Release Engineering - 0.5.0-13 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Wed Oct 10 2018 Miro Hrončok - 0.5.0-12 -- Python2 binary package has been removed - See https://fedoraproject.org/wiki/Changes/Mass_Python_2_Package_Removal - -* Sat Jul 14 2018 Fedora Release Engineering - 0.5.0-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Tue Jun 19 2018 Miro Hrončok - 0.5.0-10 -- Rebuilt for Python 3.7 - * Fri Feb 09 2018 Iryna Shcherbina - 0.5.0-9 - Update Python 2 dependency declarations to new packaging standards (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) 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