我尝试使用以下命令在 Windows 的 conda 中安装新包:
conda install -c conda-forge python-pdfkit
但出现以下错误:
收集包元数据 (current_repodata.json):已完成 解决环境:初始冻结解决失败。使用灵活的解决方案重试。解决环境:current_repodata.json 中的 repodata 失败,将使用下一个 repodata 源重试。
我尝试了以下解决方法,但没有用,仍然出现相同的错误:
解决方法1:
$conda create --name myenv
$conda activate myenv
Run Code Online (Sandbox Code Playgroud)
解决方法2:
conda config --set ssl_verify false
Run Code Online (Sandbox Code Playgroud) 我目前正在创建一个非常好的PDF.它在技术上没有任何问题.但是,TOC很难看.
TOC是通过xsl生成的,xsl通过jinja2传递给页面顶部的简单细节.我修改了XSL以精确匹配客户的品牌和设计.然而,该名单的高度不断增加.
这是当前的结果(很抱歉模糊文本)你可以看到toc在新页面上的正确位置拾取,但似乎没有办法在新页面上应用上边距:

代码: 这是xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:outline="http://wkhtmltopdf.org/outline"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
indent="yes" />
<xsl:template match="outline:outline">
<html>
<head>
<title>Table of Contents</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
body{
background-color: #fff;
margin-left: 0px;
margin-top: 0px;
color:#1e1e1e;
font-family: arial, verdana,sans-serif;
font-size: 90px;
}
.contentSection{
position:relative;
height:3200px;
width:6100px;
}
.profile{
position:absolute;
display:inline-block;
top:200px !important;
}
h1 {
text-align: left;
font-size: 70px;
font-family: arial;
color: #ef882d;
}
li {
border-bottom: 1px dashed rgb(45,117,183);
}
span {float: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用pdfKit从html文件创建pdf文件来在python中设置服务.
所以基本上我会将我的元素作为字符串发送并期望服务器返回它的pdf版本,但为了准确表示我还需要发送元素的css文件.
我怎样才能做到这一点?仅使用元素及其所有子元素的相关样式属性和选择器生成JSON /对象.尊重层次结构,没有重复.有类似的问题,但它们已经过时,往往不考虑儿童元素.
我想也许有一种方法可以从这个元素创建一个新的DOM,然后获得根css?
我正在使用 pdfkit 从字符串生成 pdf 文件。
问:我传递给 pdfkit 的每个字符串我都希望它作为输出 pdf 中的一个新页面。
我知道使用如下 from_file 是可能的。但是,我不想将它写入文件并使用它。
pdfkit.from_file(['file1', 'file2'], 'output.pdf') 这将创建 2 页的 output.pdf 文件。
类似下面的东西可能吗?
pdfkit.from_string(['ABC', 'XYZ'], 'output.pdf')
Run Code Online (Sandbox Code Playgroud)
它应该在 output.pdf 文件的第 1 页和第 2 页中写“ABC”和“XYZ”
我有一个奇怪的错误。我尝试使用 pdfkit 将 HTML 字符串转换为 PDF,但收到“没有这样的文件或目录:'which'”。我知道 pdfkit 使用 wkhtmltopdf,并且它尝试使用 which 来找到该实用程序。我不知道发生了什么事。'which' 工作正常,wkhtmltopdf 安装在 /usr/bin/ 上。我在这一行收到错误:
pdf = pdfkit.from_string(html, False, options=options)
Run Code Online (Sandbox Code Playgroud)
和回溯:
Traceback:
File "/srv/zboss-git/venv/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
39. response = get_response(request)
File "/srv/zboss-git/venv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/srv/zboss-git/venv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/srv/zboss-git/venv/lib/python3.5/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
23. return view_func(request, *args, **kwargs)
File "/srv/zboss-git/venv/lib/python3.5/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
23. return view_func(request, *args, **kwargs)
File "/srv/zboss-git/zboss/issues/views.py" in export_comments
453. pdf = pdfkit.from_string(html, False, options=options)
File "/srv/zboss-git/venv/lib/python3.5/site-packages/pdfkit/api.py" in …Run Code Online (Sandbox Code Playgroud) 我有大量的结构化 HTML,我需要将其转换为能够在 pdfkit 中呈现它。
我正在使用 pdfkit,它似乎不太适合布局,但确实适合网格。
任何帮助将不胜感激!
<div class="row">
<div class="col-md-10">
<div class="col-md-3 left" style="padding: 20px 0 30px 0; color:#454545; font-family: Arial, sans-serif; font-size: 16px;">
Packages
</div>
<div class="col-md-9 left" style="padding: 20px 0 30px 0; color:#454545; font-family: Arial, sans-serif; font-size: 16px;">
<h4>User 1 </h4>
<div class="row">
<div class="col-md-6">
<p style="padding-left:20px">
Total records <br/>
Total cycles <br/>
Total records out <br/>
Consumable Costs<br/>
<br/>
Total Artwork Changes <br/>
Artwork Change Costs <br/>
<br/>
<span style="color:green;">Artwork Change Discount </span><br/>
Subtotal <br/>
Sales …Run Code Online (Sandbox Code Playgroud) 我在下面重现了我的问题:
我在网页上画了一个 210x297 的矩形
<!DOCTYPE html>
<html>
<style>
div.rectangle {
border: solid 1px;
width: 210mm;
height: 297mm;
}
</style>
<head>
</head>
<body>
<div class="rectangle">
<img/>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)我使用 Python 中的 pdfkit 将此 html 文档转换为 pdf
import pdfkit
options = {
'page-size':'A4',
'encoding':'utf-8',
'margin-top':'0cm',
'margin-bottom':'0cm',
'margin-left':'0cm',
'margin-right':'0cm'
}
pdfkit.from_file('test.html', 'test.pdf', options=options)
Run Code Online (Sandbox Code Playgroud)我获得了一个 pdf 文件,左上角有一个矩形,其大小大约小了 5 倍......
如果您能看看,我将不胜感激!
我想找到一种在 pdfkit 中换行的方法。
我尝试了字符串和 html 文件,但它没有按预期工作。
以下两个最小的示例不是为我提供“a”(换行符)“b”,而是生成“a b”。我将不胜感激你的帮助。
# from_string example (html example follows)
import pdfkit
options = {
'page-size': 'A4',
'margin-top': '0.75in',
'margin-right': '0.75in',
'margin-bottom': '0.75in',
'margin-left': '0.75in',
'encoding': 'UTF-8',
'quiet': ''
}
s1 = 'a \n b'
pdfkit.from_string(s1, 'out.pdf', options=options)
# html example
import pdfkit
s2 = """
a
b
"""
h1 = """<html>
<head></head>
<body><p>"""
h2 = """</p></body>
</html>"""
content = h1 + s2 + h2
f = open('out.html', 'w')
f.write(content)
f.close()
options = {
'page-size': 'A4', …Run Code Online (Sandbox Code Playgroud) 在 Heroku 上托管我的 Django 应用程序后,当我尝试下载动态 pdf 时,我的 Django 应用程序的 wkhtmltopdf 会导致此错误。
在本地机器(Ubuntu)中我已经申请了
sudo apt-get install wkhtmltopdf
Run Code Online (Sandbox Code Playgroud)
我还在项目目录中添加了 Aptfile,以便 Heroku 在构建应用程序时安装这些依赖项和要求。
apt文件:
wkhtmltopdf
Run Code Online (Sandbox Code Playgroud)
但不幸的是 Heroku 甚至不构建具有给定依赖项的应用程序。
我还尝试通过运行 Heroku bash 来安装它,但 Heroku 阻止了。
W: Not using locking for read only lock file /var/lib/dpkg/lock-frontend
W: Not using locking for read only lock file /var/lib/dpkg/lock
E: Unable to locate package wkhtmltopdf
Run Code Online (Sandbox Code Playgroud)
我生成pdf的代码是:
def pdf_generation(request, pk):
''' Will generate PDF file from the html template '''
template = get_template('bankApp/print_view.html')
withdraw_obj = get_object_or_404(Withdraw, id=pk)
year_month_day = …Run Code Online (Sandbox Code Playgroud) 我正在努力用Python 3.5.2,python-pdfkit和wkhtmltox-0.12.2生成一个带有非ascii字符的简单PDF.
这是我能写的最简单的例子:
import pdfkit
html_content = u'<p>ö</p>'
pdfkit.from_string(html_content, 'out.pdf')
Run Code Online (Sandbox Code Playgroud)
我在 Debian Docker 映像上使用 python 3.6 和 pdfkit 0.6.1(似乎是 wkhtmltopdf 0.12.3.2)。我尝试查看docs & wkhtmltopdf 选项,但无法指定整个文档的字体。只有页脚和页眉的字体选项。
我尝试指定
font-family: "Times New Roman", Times, serif;
Run Code Online (Sandbox Code Playgroud)
在html 到 pdf 转换之前的divhtml<style>部分的包装器中,但它没有出现“Times New Roman”。查看二进制文件,似乎它正在使用DejaVuSerif.
有没有办法指定正在转换的文档的字体?
我正在尝试使用Weasyprint python 包从 HTML 模板生成 pdf 文件,我需要使用通过电子邮件发送它。
这是我尝试过的:
def send_pdf(request):
minutes = int(request.user.tagging.count()) * 5
testhours = minutes / 60
hours = str(round(testhours, 3))
user_info = {
"name": str(request.user.first_name + ' ' + request.user.last_name),
"hours": str(hours),
"taggedArticles": str(request.user.tagging.count())
}
html = render_to_string('users/certificate_template.html',
{'user': user_info})
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'filename=certificate_{}'.format(user_info['name'] + '.pdf')
pdf = weasyprint.HTML(string=html).write_pdf(response, )
from_email = 'our_business_email_address'
to_emails = ['Reciever1', 'Reciever2']
subject = "Certificate from INC."
message = 'Enjoy your certificate.'
email = EmailMessage(subject, message, from_email, to_emails) …Run Code Online (Sandbox Code Playgroud) python-pdfkit ×12
python ×7
pdfkit ×6
wkhtmltopdf ×5
css ×2
django ×2
anaconda ×1
encoding ×1
heroku ×1
html ×1
html-to-pdf ×1
javascript ×1
pdf ×1
python-3.x ×1
weasyprint ×1
xsl-fo ×1
xslt ×1