本文整理汇总了Python中weasyprint.HTML.write_pdf方法的典型用法代码示例。如果您正苦于以下问题:Python HTML.write_pdf方法的具体用法?Python HTML.write_pdf怎么用?Python HTML.write_pdf使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类weasyprint.HTML
的用法示例。
在下文中一共展示了HTML.write_pdf方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: md2pdf
# 需要导入模块: from weasyprint import HTML [as 别名]
# 或者: from weasyprint.HTML import write_pdf [as 别名]
def md2pdf(pdf_file_path, md_content=None, md_file_path=None,
css_file_path=None, base_url=None):
"""
Convert markdown file to pdf with styles
"""
# Convert markdown to html
raw_html = ""
extras = ["cuddled-lists"]
if md_file_path:
raw_html = markdown_path(md_file_path, extras=extras)
elif md_content:
raw_html = markdown(md_content, extras=extras)
if not len(raw_html):
raise ValidationError('Input markdown seems empty')
# Weasyprint HTML object
html = HTML(string=raw_html, base_url=base_url)
# Get styles
css = []
if css_file_path:
css.append(CSS(filename=css_file_path))
# Generate PDF
html.write_pdf(pdf_file_path, stylesheets=css)
return
示例2: make_book
# 需要导入模块: from weasyprint import HTML [as 别名]
# 或者: from weasyprint.HTML import write_pdf [as 别名]
def make_book(self, filename, config):
#QtGui.QMessageBox.critical(None, "Network Error","make_book")
with tempfile.TemporaryDirectory(prefix="pySpellbook-") as tempdir:
temphtml = tempfile.NamedTemporaryFile(dir=tempdir, delete=False, suffix=".html", mode="w")
temphtml.write(self.rendered)
#QtGui.QMessageBox.critical(None, "Network Error","wrote html")
tmpname = temphtml.name
temphtml.close()
#QtGui.QMessageBox.critical(None, "Network Error",tmpname)
#os.mkdir(os.path.join(tempdir, "resources"))
#for r in self.resourcelist:
# shutil.copy(r, os.path.join(tempdir,"resources"))
if config['backend'] == 'prince':
os.system("\"%s\" %s -o %s" % (config['prince_path'], tmpname, filename))
elif config['backend'] == 'HTML':
shutil.copy(os.path.join(tempdir, tmpname), filename)
webbrowser.open_new_tab("file:///%s" % filename)
elif config['backend'] == 'custom':
custom_command = config['custom'].replace("$INPUT", temphtml).replace("$OUTPUT", filename)
shutil.copy(custom_command)
else:
if weasy:
html = HTML("file://%s" % tmpname)
html.write_pdf(target=filename)
else:
import pySpellbook.qtpdf
os.chdir(tempdir)
printer = pySpellbook.qtpdf.Printer(self.parent)
printer.load(tmpname)
printer.print(filename)
示例3: download_pdf
# 需要导入模块: from weasyprint import HTML [as 别名]
# 或者: from weasyprint.HTML import write_pdf [as 别名]
def download_pdf(story, output='', message=True):
""" Download a story to pdf.
:type message: bool
"""
if output == '':
output = _get_download_name(story)
output = _add_extension(output, 'pdf')
if message:
print 'Downloading \'%s\' to %s...' % (story.title, output)
html = ''
for chapter in story.get_chapters():
if message:
print 'Adding %s...' % (chapter.title)
html += '<h2>Chapter %d: %s</h2>' % (chapter.number, chapter.title)
html += chapter.raw_text
html += '</br>' * 10
if message:
print 'Compiling PDF...'
# This turned out not to work on the command line as it needed an X interface.
#pdfkit.from_string(html, output)
# Instead trying with weasyprint
content = unicode(html.strip(codecs.BOM_UTF8), 'utf-8')
h = HTML(content)
h.write_pdf(output)
示例4: pdf_print
# 需要导入模块: from weasyprint import HTML [as 别名]
# 或者: from weasyprint.HTML import write_pdf [as 别名]
def pdf_print(request, requisition_id):
"""Exports the requisition in PDF."""
# Selecting the requisition
requisition = get_object_or_404(models.Requisition, pk=requisition_id)
rendered = render_to_response('purchase/requisition_report.html', {
'vessel': Vessel.objects.latest('id'),
'title': _("Requisition"),
'user': request.user,
'requisition': requisition,
'today': datetime.date.today(),
},
context_instance=RequestContext(request))
# Creating the response
filename = "pharmaship_requisition_{0}.pdf".format(requisition.reference)
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="{0}"'.format(filename)
# Converting it into PDF
html = HTML(string=rendered.content,
base_url=request.build_absolute_uri()
)
html.write_pdf(response,
stylesheets=[
CSS(settings.BASE_DIR + '/purchase/static/css/purchase/report.css')
])
return response
示例5: savePDF
# 需要导入模块: from weasyprint import HTML [as 别名]
# 或者: from weasyprint.HTML import write_pdf [as 别名]
def savePDF(self, pdf_filename, parent_soup, target_node, yes_phrase, url, key, school_name):
if target_node:
grandparent_node = target_node.parent.parent
tag = self.highlightedNode(target_node, yes_phrase, parent_soup)
self.replaceNode(target_node, tag)
body = Tag(parent_soup,"body")
body.append(grandparent_node)
else:
body = parent_soup
try:
weasyprint = HTML(string=body.prettify())
tmp_filename = 'pdfs/tmp.pdf'
weasyprint.write_pdf(tmp_filename,stylesheets=[CSS(string='body { font-size: 10px; font-family: serif !important }')])
except:
print "weasyprint failed on url: "+url
if target_node:
self.replaceNode(tag, target_node) #return to old state
return
if target_node:
self.replaceNode(tag, target_node) #return to old state
sep_filename = "pdfs/sep.pdf"
self.makeSepPage(sep_filename, url, key, school_name)
merger = PdfFileMerger()
if (os.path.exists(pdf_filename)):
merger.append(PdfFileReader(file(pdf_filename, 'rb')))
merger.append(PdfFileReader(file(sep_filename, 'rb')))
merger.append(PdfFileReader(file(tmp_filename, 'rb')))
merger.write(pdf_filename)
示例6: render_pdf
# 需要导入模块: from weasyprint import HTML [as 别名]
# 或者: from weasyprint.HTML import write_pdf [as 别名]
def render_pdf(self):
total = self.doc['total']
if self.home_country:
invoice_country_iso = self.doc['address']['country_iso_alpha2']
if invoice_country_iso and invoice_country_iso != self.home_country: # no tax in bill
total = self.doc['amount']
self.doc['total'] = total
tpl = self.jinja_env.get_template('invoice_tpl.html')
self.invoice_fname = "{date}_CHF{total:.2f}_Nr{nr}_hosting-{name}_ta".format(
date=self.doc['date'].strftime("%Y-%m-%d"),
total=total,
nr=self.doc['nr'],
name=self.client_name_normalized()
)
for file_format in ['html', 'pdf']:
path = "%s/%s" % (self.output_dir, file_format)
if not os.path.exists(path):
os.mkdir(path)
with codecs.open(
'%s/html/%s.html' % (self.output_dir, self.invoice_fname),
'w+', encoding="utf-8"
) as invoice_html:
invoice_html.write(tpl.render(**self.doc))
invoice_html.seek(0)
base_url = "%s/html" % self.invoice_template_dir
html = HTML(invoice_html, base_url=base_url)
html.write_pdf('%s/pdf/%s.pdf' % (self.output_dir, self.invoice_fname))
示例7: make_pdf
# 需要导入模块: from weasyprint import HTML [as 别名]
# 或者: from weasyprint.HTML import write_pdf [as 别名]
def make_pdf(config, data):
"""
Generate PDF file out of generated 'index.html' page.
"""
from weasyprint import HTML
output_dir = config.get('output_dir', 'build')
output_file = os.path.join(output_dir, config.get('pdf_file', 'resume.pdf'))
input_file = os.path.join(output_dir, 'index.html')
theme_location = os.path.join('themes', config['theme'])
html = HTML(input_file, base_url=theme_location)
html.write_pdf(output_file)
示例8: generate_pdf
# 需要导入模块: from weasyprint import HTML [as 别名]
# 或者: from weasyprint.HTML import write_pdf [as 别名]
def generate_pdf(self):
''' renders html from file with given context and creates pdf file from it
'''
html_string = Template(self.template.template.read()).render(Context(json.loads(self.content)))
html = HTML(string=html_string, base_url='')
filename = self.name.replace('/', '.') + '.pdf'
buffer = BytesIO()
html.write_pdf(target=buffer)
pdf = buffer.getvalue()
buffer.close()
self.file.save(filename, ContentFile(pdf))
示例9: print_order
# 需要导入模块: from weasyprint import HTML [as 别名]
# 或者: from weasyprint.HTML import write_pdf [as 别名]
def print_order(orders, name, phone):
template = env.get_template('template.md')
total = sum(order.price for order in orders)
md = template.render(name=name, phone=phone, orders=orders, total=total)
html = markdown.markdown(md, extensions=['markdown.extensions.tables'])
document = HTML(string=html)
tmp = tempfile.NamedTemporaryFile(mode='wb', suffix='.pdf')
document.write_pdf(tmp, stylesheets=[CSS(filename='order-style.css')])
return tmp
示例10: render_to_pdf
# 需要导入模块: from weasyprint import HTML [as 别名]
# 或者: from weasyprint.HTML import write_pdf [as 别名]
def render_to_pdf(template_name, pdf_filename=None, template_values=None, css_sheets=None):
context_extras = {'LANGUAGES': settings.LANGUAGES, 'LANGUAGE_CODE': translation.get_language(),
'LANGUAGE_BIDI': translation.get_language_bidi()}
template_values.update(context_extras)
html_content = render_to_string(template_name, template_values or {})
css_objs = [CSS(filename=finders.find(x)) for x in css_sheets] if css_sheets else []
html_obj = HTML(string=html_content)
if pdf_filename is None:
with tempfile.NamedTemporaryFile() as n:
pdf_filename = n.name
html_obj.write_pdf(pdf_filename, stylesheets=css_objs)
return pdf_filename
示例11: _get_pdf
# 需要导入模块: from weasyprint import HTML [as 别名]
# 或者: from weasyprint.HTML import write_pdf [as 别名]
def _get_pdf(self, markup):
logger = logging.getLogger(__name__)
base_url = self.base_url if self.base_url else ''
pdf_file = StringIO.StringIO()
logger.info("Creating weasy")
weasy = HTML(
file_obj=StringIO.StringIO(markup.encode("UTF-8")),
encoding='UTF-8',
base_url=base_url,
url_fetcher=self._url_fetcher
)
logger.info("Starting pdf generation")
weasy.write_pdf(pdf_file)
logger.info("PDF generated, returning")
return pdf_file.getvalue()
示例12: execute
# 需要导入模块: from weasyprint import HTML [as 别名]
# 或者: from weasyprint.HTML import write_pdf [as 别名]
def execute(self, id_user, id_meeting):
render = RenderHtml(id_user, id_meeting, self.__dirToProject)
value = render.split_question_on_pages()
with codecs.open(self.__dir, 'w', 'utf8') as f2:
f2.write(value)
pdf = HTML(self.__dir)
newName = str(id_user) + str(id_meeting) + self.__file_name
pdf.write_pdf(self.__result_dir + newName)
res = []
res.append(newName)
res.append(self.__result_dir)
return res
示例13: render
# 需要导入模块: from weasyprint import HTML [as 别名]
# 或者: from weasyprint.HTML import write_pdf [as 别名]
def render():
html = request.args['html']
assert html.strip()
if html:
assert 'fuu' not in html
# Save the input HTML
with open(INPUT, 'w') as fd:
fd.write(html.encode('utf-8'))
html = HTML(INPUT, encoding='utf8')
html.write_pdf(PDF_OUTPUT)
html.write_png(PNG_OUTPUT)
return send_file(PNG_OUTPUT, cache_timeout=0)
示例14: pdf
# 需要导入模块: from weasyprint import HTML [as 别名]
# 或者: from weasyprint.HTML import write_pdf [as 别名]
def pdf(obj, path, site_url=None):
activate(obj.language_code) # required if called from command line
# first page
header_url = urljoin(site_url, reverse('activities:print-preview-header', kwargs={'code': obj.code, }))
header_html_source = url_read(header_url)
header = HTML(string=header_html_source, base_url=site_url).render()
# other pages
content_url = urljoin(site_url, reverse('activities:print-preview-content', kwargs={'code': obj.code, }))
content_html_source = url_read(content_url)
content = HTML(string=content_html_source, base_url=site_url).render()
header.pages += content.pages
header.write_pdf(path)
示例15: export_schedule_to_pdf
# 需要导入模块: from weasyprint import HTML [as 别名]
# 或者: from weasyprint.HTML import write_pdf [as 别名]
def export_schedule_to_pdf(request, callgroup):
from weasyprint import HTML
context = get_context(request)
context['site'] = callgroup.description
month, year = int(request.GET.get('month', 1)), int(request.GET.get('year', 9999))
weekstart = int(request.GET.get('weekstart', 0))
monthstart = datetime.date(year, month, day=1)
context['month'] = monthstart.strftime("%B %Y")
monthstart = monthstart - datetime.timedelta(days=monthstart.day - 1)
# make sure we start on a sunday (or monday if weekstart=1)
monthstart = monthstart - datetime.timedelta(days=(monthstart.isoweekday() % 7)) + \
datetime.timedelta(weekstart)
user = request.session['MHL_Users']['MHLUser']
context['weeks'] = generateOnCallList(callgroup, monthstart, weekstart, user)
context['days'] = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
for _ in range(weekstart):
context['days'].append(context['days'].pop(0))
# load template with context and static root for pdf renderer, generate pdf buffer
static_root = settings.STATICFILES_DIRS[0]
html = render_to_string('pdf_schedule.html', {'STATIC_ROOT': static_root}, context)
weasyhtml = HTML(string=html)
schedcss = join(static_root, 'css', 'pdf_schedule.css')
pdf = weasyhtml.write_pdf(stylesheets=[schedcss]) # ,target='/tmp/test.pdf')
# prepare response, append &nopdf to GET url for test
response = HttpResponse(pdf, mimetype="application/pdf")
response["Cache-Control"] = "no-cache"
response["Accept-Ranges"] = "none"
response["Content-Disposition"] = "attachment; filename=schedule-%d-%d.pdf" % (year, month)
return response if 'nopdf' not in request.GET else \
render_to_response("pdf_schedule.html", context)