diff options
Diffstat (limited to 'python-pychromepdf.spec')
| -rw-r--r-- | python-pychromepdf.spec | 486 |
1 files changed, 486 insertions, 0 deletions
diff --git a/python-pychromepdf.spec b/python-pychromepdf.spec new file mode 100644 index 0000000..b7ac95e --- /dev/null +++ b/python-pychromepdf.spec @@ -0,0 +1,486 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pychromepdf +Version: 1.1 +Release: 1 +Summary: Creates PDFs from HTML rendered using chrome or chromium +License: MIT License +URL: https://github.com/nvnmo/pychromepdf +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/57/f4/75d2ef3b4a93b253924f56a3c0617768a1dbdc342ee552da596778f5bb8c/pychromepdf-1.1.tar.gz +BuildArch: noarch + + +%description +# Pychromepdf [](https://badge.fury.io/py/pychromepdf) [](https://travis-ci.org/github/nvnmo/pychromepdf) + +Pychromepdf is a Python package that lets you easily create PDFs by rendering HTML content using Chrome or Chromium as backend. It works without any external dependecies except a working installation of Chrome or Chromium that supports headless mode. + +# Installation + +```bash +pip install pychromepdf +``` + +## Usage + +### Rendering HTML bytestring to PDF + +```python +from pychromepdf import ChromePDF + +# change to your chrome executable path +PATH_TO_CHROME_EXE = '/usr/bin/google-chrome-stable' +# if you're on MacOS +# PATH_TO_CHROME_EXE = '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome' + +if __name__ == '__main__': + # initialize chromepdf object + cpdf = ChromePDF(PATH_TO_CHROME_EXE) + + # the html that need to be rendered into pdf + html_bytestring = ''' + <!doctype html> + <html> + <head> + <style> + @media print { + @page { margin: 0; } + body { margin: 1.6cm; } + } + </style> + </head> + <body> + <h1>Hello, World</h1> + <h5> Generated using headless chrome </h5> + </body> + </html> + ''' + + # create a file and write the pdf to it + with open('test.pdf','w') as output_file: + if cpdf.html_to_pdf(html_bytestring,output_file): + print("Successfully generated the pdf: {}".format(output_file.name)) + else: + print("Error generating pdf") + +``` + +### Rendering a flask template into PDF + +```python +from flask import Flask, render_template, send_file +import tempfile +from pychromepdf import ChromePDF + +app = Flask(__name__) + +# change to your chrome executable path +PATH_TO_CHROME_EXE = '/usr/bin/google-chrome-stable' +# if you're on MacOS +# PATH_TO_CHROME_EXE = '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome' + +# initialize a chromepdf object +cpdf = ChromePDF(PATH_TO_CHROME_EXE) + +# home route +@app.route('/') +def index(): + return render_template('index.html',username="John") + +# custom pdf route +@app.route('/getpdf',defaults={'username': 'John'}) +@app.route('/getpdf/<username>') +def getpdf(username): + + # get the rendered html as string using the template + rendered_html = render_template('index.html',username=username) + + # create a temporary output file which will be deleted when closed + with tempfile.NamedTemporaryFile(suffix='.pdf') as output_file: + + # create a pdf from the rendered html and write it to output_file + if cpdf.html_to_pdf(rendered_html,output_file): + print("PDF generated successfully: {0}".format(output_file.name)) + + try: + # send the file to user + return send_file(output_file.name,attachment_filename='awesome.pdf') + except Exception as e: + return str(e) + else: + print("Error creating PDF") + + return "Error" + + +if __name__ == '__main__': + app.run(debug=True) + +``` + +Template + +```html +{# templates/index.html #} + +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Example</title> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <style> + @media print { + @page { margin: 0; } + body { margin: 1.6cm; } + } + </style> +</head> +<body> + <h1>Hello {{ username }}!</h1> + <h4>Generated using ChromePDF</h4> +</body> +</html> + +``` +# Contributors +- [nvnmo](https://github.com/nvnmo) +- [chibiegg](https://github.com/chibiegg) + +# License +MIT License + +%package -n python3-pychromepdf +Summary: Creates PDFs from HTML rendered using chrome or chromium +Provides: python-pychromepdf +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pychromepdf +# Pychromepdf [](https://badge.fury.io/py/pychromepdf) [](https://travis-ci.org/github/nvnmo/pychromepdf) + +Pychromepdf is a Python package that lets you easily create PDFs by rendering HTML content using Chrome or Chromium as backend. It works without any external dependecies except a working installation of Chrome or Chromium that supports headless mode. + +# Installation + +```bash +pip install pychromepdf +``` + +## Usage + +### Rendering HTML bytestring to PDF + +```python +from pychromepdf import ChromePDF + +# change to your chrome executable path +PATH_TO_CHROME_EXE = '/usr/bin/google-chrome-stable' +# if you're on MacOS +# PATH_TO_CHROME_EXE = '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome' + +if __name__ == '__main__': + # initialize chromepdf object + cpdf = ChromePDF(PATH_TO_CHROME_EXE) + + # the html that need to be rendered into pdf + html_bytestring = ''' + <!doctype html> + <html> + <head> + <style> + @media print { + @page { margin: 0; } + body { margin: 1.6cm; } + } + </style> + </head> + <body> + <h1>Hello, World</h1> + <h5> Generated using headless chrome </h5> + </body> + </html> + ''' + + # create a file and write the pdf to it + with open('test.pdf','w') as output_file: + if cpdf.html_to_pdf(html_bytestring,output_file): + print("Successfully generated the pdf: {}".format(output_file.name)) + else: + print("Error generating pdf") + +``` + +### Rendering a flask template into PDF + +```python +from flask import Flask, render_template, send_file +import tempfile +from pychromepdf import ChromePDF + +app = Flask(__name__) + +# change to your chrome executable path +PATH_TO_CHROME_EXE = '/usr/bin/google-chrome-stable' +# if you're on MacOS +# PATH_TO_CHROME_EXE = '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome' + +# initialize a chromepdf object +cpdf = ChromePDF(PATH_TO_CHROME_EXE) + +# home route +@app.route('/') +def index(): + return render_template('index.html',username="John") + +# custom pdf route +@app.route('/getpdf',defaults={'username': 'John'}) +@app.route('/getpdf/<username>') +def getpdf(username): + + # get the rendered html as string using the template + rendered_html = render_template('index.html',username=username) + + # create a temporary output file which will be deleted when closed + with tempfile.NamedTemporaryFile(suffix='.pdf') as output_file: + + # create a pdf from the rendered html and write it to output_file + if cpdf.html_to_pdf(rendered_html,output_file): + print("PDF generated successfully: {0}".format(output_file.name)) + + try: + # send the file to user + return send_file(output_file.name,attachment_filename='awesome.pdf') + except Exception as e: + return str(e) + else: + print("Error creating PDF") + + return "Error" + + +if __name__ == '__main__': + app.run(debug=True) + +``` + +Template + +```html +{# templates/index.html #} + +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Example</title> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <style> + @media print { + @page { margin: 0; } + body { margin: 1.6cm; } + } + </style> +</head> +<body> + <h1>Hello {{ username }}!</h1> + <h4>Generated using ChromePDF</h4> +</body> +</html> + +``` +# Contributors +- [nvnmo](https://github.com/nvnmo) +- [chibiegg](https://github.com/chibiegg) + +# License +MIT License + +%package help +Summary: Development documents and examples for pychromepdf +Provides: python3-pychromepdf-doc +%description help +# Pychromepdf [](https://badge.fury.io/py/pychromepdf) [](https://travis-ci.org/github/nvnmo/pychromepdf) + +Pychromepdf is a Python package that lets you easily create PDFs by rendering HTML content using Chrome or Chromium as backend. It works without any external dependecies except a working installation of Chrome or Chromium that supports headless mode. + +# Installation + +```bash +pip install pychromepdf +``` + +## Usage + +### Rendering HTML bytestring to PDF + +```python +from pychromepdf import ChromePDF + +# change to your chrome executable path +PATH_TO_CHROME_EXE = '/usr/bin/google-chrome-stable' +# if you're on MacOS +# PATH_TO_CHROME_EXE = '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome' + +if __name__ == '__main__': + # initialize chromepdf object + cpdf = ChromePDF(PATH_TO_CHROME_EXE) + + # the html that need to be rendered into pdf + html_bytestring = ''' + <!doctype html> + <html> + <head> + <style> + @media print { + @page { margin: 0; } + body { margin: 1.6cm; } + } + </style> + </head> + <body> + <h1>Hello, World</h1> + <h5> Generated using headless chrome </h5> + </body> + </html> + ''' + + # create a file and write the pdf to it + with open('test.pdf','w') as output_file: + if cpdf.html_to_pdf(html_bytestring,output_file): + print("Successfully generated the pdf: {}".format(output_file.name)) + else: + print("Error generating pdf") + +``` + +### Rendering a flask template into PDF + +```python +from flask import Flask, render_template, send_file +import tempfile +from pychromepdf import ChromePDF + +app = Flask(__name__) + +# change to your chrome executable path +PATH_TO_CHROME_EXE = '/usr/bin/google-chrome-stable' +# if you're on MacOS +# PATH_TO_CHROME_EXE = '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome' + +# initialize a chromepdf object +cpdf = ChromePDF(PATH_TO_CHROME_EXE) + +# home route +@app.route('/') +def index(): + return render_template('index.html',username="John") + +# custom pdf route +@app.route('/getpdf',defaults={'username': 'John'}) +@app.route('/getpdf/<username>') +def getpdf(username): + + # get the rendered html as string using the template + rendered_html = render_template('index.html',username=username) + + # create a temporary output file which will be deleted when closed + with tempfile.NamedTemporaryFile(suffix='.pdf') as output_file: + + # create a pdf from the rendered html and write it to output_file + if cpdf.html_to_pdf(rendered_html,output_file): + print("PDF generated successfully: {0}".format(output_file.name)) + + try: + # send the file to user + return send_file(output_file.name,attachment_filename='awesome.pdf') + except Exception as e: + return str(e) + else: + print("Error creating PDF") + + return "Error" + + +if __name__ == '__main__': + app.run(debug=True) + +``` + +Template + +```html +{# templates/index.html #} + +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Example</title> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <style> + @media print { + @page { margin: 0; } + body { margin: 1.6cm; } + } + </style> +</head> +<body> + <h1>Hello {{ username }}!</h1> + <h4>Generated using ChromePDF</h4> +</body> +</html> + +``` +# Contributors +- [nvnmo](https://github.com/nvnmo) +- [chibiegg](https://github.com/chibiegg) + +# License +MIT License + +%prep +%autosetup -n pychromepdf-1.1 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-pychromepdf -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 1.1-1 +- Package Spec generated |
