如何在 localhost:8000/storage/file.html 上使用 laravel snappyPDF?
How to use laravel snappyPDF on localhost:8000/storage/file.html?
我目前正在尝试使用 snappy laravel 从 html 文件生成 pdf。当我调用 to pdf 方法时,我的服务器冻结并输出 60 秒超时错误。我在 github issue 中读到 wkhtmltopdf 不喜欢使用端口 8000,我想知道是否有任何解决方法,我我已经尝试将 google.com
打印为 pdf 并且它正在工作...
我也无法从我的 html 文件内容(内容存储在变量中)打印 pdf,我想这是因为 css 文件,这是我正在做的一个例子:
$snappy->generate('http:localhost:8000/storage/file.html', $fileName.'.pdf');
这里是file.html内容。
<div class="pdfContainer">
<meta charset="UTF-8">
<link href="http://localhost:8000/css/pdfpreview.css" rel="stylesheet" type="text/css">
<div class="headerPreview">
<img src="http://localhost:8000/image/logo.png">
<div class="soumissionInfoContainer">
<div>
<strong>Soumission # </strong>
<strong>Projet :</strong>
<strong>Date : </strong>
</div>
<div>
<p> S1-17</p>
<p>Garage de béton</p>
<p> 20-02-2017</p>
</div>
</div>
<div class="infoComp">
<p>2236, rue de l'Ardoise, Jonquière (QC) G8A 0A5</p>
<p>Saguenay : 418-550-5382 Alma : 418-719-0588</p>
<p>R.B.Q.: 5670-0578-01</p>
</div>
<h2>SOUMISSION</h2>
<div class="clientInfoContainer">
<div style="width:70px;"><p style="font-size: 12px;text-align: right">Destinataire: </p>
</div>
<div>
<p>Jean Tremblay</p>
<p>1010 St Hubert
, G7H 2B1</p>
<p>418 555 5555</p>
</div>
</div>
</div>
<table class="previewTable" id="previewTable">
<tbody>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th>Quantité</th>
<th>Description</th>
<th>Prix</th>
</tr>
<tr>
<td></td>
<td>
<textarea id="title1" onchange="setInnerHTML('title1')"
style="font-size: 2em; background: rgba(0, 0, 0, 0) none repeat scroll 0% 0%; height: 99px;">Excavation lol</textarea>
</td>
<td><textarea id="total1" onchange="setInnerHTML('total1')"
style="background: rgba(0,0,0,0); width: 100px; height: 70px">919.51</textarea>
</td>
</tr>
<tr>
<td></td>
<td>
<textarea id="desc1" onchange="setInnerHTML('desc1')" style="resize: horizontal; width: 553px;" rows="5"
cols="50" title=""> this is working</textarea>
</td>
</tr>
</tbody>
</table>
<script>
function setInnerHTML(id) {
var area = document.getElementById(id);
area.innerHTML = area.value;
}
</script>
<textarea class="totalSoumission" id="totalSoumission" onchange="setInnerHTML('totalSoumission')">TOTAL AVANT TAXES: 919.51 $</textarea>
<div class="ligne_signature">
<p>À la signature, ce devis est bon pour travaux et valide 90 jours</p>
</div>
</div>
我最关心的是,当我收到消息输出错误时,我复制并粘贴了确切的命令并将其粘贴到我的终端中,不到一秒钟就生成了 pdf,所以这意味着有我活泼的 pdf 使用确实有问题...
snappy 失败的原因是因为 wkhtmltopdf 不喜欢使用当前主机资源。使用 wkhtmltopdf 时,您无法从主机获取任何内容。你需要在 URI 中转换你的图像,这样你就不会从你的 public 目录中获取它们,你需要将你的 css 插入你的 html,link 不会'不要这样做。 我自己使用 blade 将 css 与我的页面 分开。在我的案例中失败的主要原因是因为我试图从 127.0.0.1:8000(我当前的主机)获取 ccs sheet。
问题:
<link href="http://localhost:8000/css/pdfpreview.css" rel="stylesheet" type="text/css">
解决方案:
<style>
...
</style>
我目前正在尝试使用 snappy laravel 从 html 文件生成 pdf。当我调用 to pdf 方法时,我的服务器冻结并输出 60 秒超时错误。我在 github issue 中读到 wkhtmltopdf 不喜欢使用端口 8000,我想知道是否有任何解决方法,我我已经尝试将 google.com
打印为 pdf 并且它正在工作...
我也无法从我的 html 文件内容(内容存储在变量中)打印 pdf,我想这是因为 css 文件,这是我正在做的一个例子:
$snappy->generate('http:localhost:8000/storage/file.html', $fileName.'.pdf');
这里是file.html内容。
<div class="pdfContainer">
<meta charset="UTF-8">
<link href="http://localhost:8000/css/pdfpreview.css" rel="stylesheet" type="text/css">
<div class="headerPreview">
<img src="http://localhost:8000/image/logo.png">
<div class="soumissionInfoContainer">
<div>
<strong>Soumission # </strong>
<strong>Projet :</strong>
<strong>Date : </strong>
</div>
<div>
<p> S1-17</p>
<p>Garage de béton</p>
<p> 20-02-2017</p>
</div>
</div>
<div class="infoComp">
<p>2236, rue de l'Ardoise, Jonquière (QC) G8A 0A5</p>
<p>Saguenay : 418-550-5382 Alma : 418-719-0588</p>
<p>R.B.Q.: 5670-0578-01</p>
</div>
<h2>SOUMISSION</h2>
<div class="clientInfoContainer">
<div style="width:70px;"><p style="font-size: 12px;text-align: right">Destinataire: </p>
</div>
<div>
<p>Jean Tremblay</p>
<p>1010 St Hubert
, G7H 2B1</p>
<p>418 555 5555</p>
</div>
</div>
</div>
<table class="previewTable" id="previewTable">
<tbody>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th>Quantité</th>
<th>Description</th>
<th>Prix</th>
</tr>
<tr>
<td></td>
<td>
<textarea id="title1" onchange="setInnerHTML('title1')"
style="font-size: 2em; background: rgba(0, 0, 0, 0) none repeat scroll 0% 0%; height: 99px;">Excavation lol</textarea>
</td>
<td><textarea id="total1" onchange="setInnerHTML('total1')"
style="background: rgba(0,0,0,0); width: 100px; height: 70px">919.51</textarea>
</td>
</tr>
<tr>
<td></td>
<td>
<textarea id="desc1" onchange="setInnerHTML('desc1')" style="resize: horizontal; width: 553px;" rows="5"
cols="50" title=""> this is working</textarea>
</td>
</tr>
</tbody>
</table>
<script>
function setInnerHTML(id) {
var area = document.getElementById(id);
area.innerHTML = area.value;
}
</script>
<textarea class="totalSoumission" id="totalSoumission" onchange="setInnerHTML('totalSoumission')">TOTAL AVANT TAXES: 919.51 $</textarea>
<div class="ligne_signature">
<p>À la signature, ce devis est bon pour travaux et valide 90 jours</p>
</div>
</div>
我最关心的是,当我收到消息输出错误时,我复制并粘贴了确切的命令并将其粘贴到我的终端中,不到一秒钟就生成了 pdf,所以这意味着有我活泼的 pdf 使用确实有问题...
snappy 失败的原因是因为 wkhtmltopdf 不喜欢使用当前主机资源。使用 wkhtmltopdf 时,您无法从主机获取任何内容。你需要在 URI 中转换你的图像,这样你就不会从你的 public 目录中获取它们,你需要将你的 css 插入你的 html,link 不会'不要这样做。 我自己使用 blade 将 css 与我的页面 分开。在我的案例中失败的主要原因是因为我试图从 127.0.0.1:8000(我当前的主机)获取 ccs sheet。
问题:
<link href="http://localhost:8000/css/pdfpreview.css" rel="stylesheet" type="text/css">
解决方案:
<style>
...
</style>