我一直在努力奋斗,感到无助.Prestashop使用tcpdf从使用Smarty填充的HTML模板生成发票和交付单.我们正在努力更新发票设计,发现缺少CSS支持的tcpdf.经过一些研究,我们决定将wkhtmltopdf作为将HTML/CSS模板转换为PDF的正确工具.
问题
该商店具有将多个发票导出为单个PDF的功能.使用TCPDF我能够通过在生成文件之前具有奇数页数的每张发票之后插入空白页来使批处理文件准备好进行双面打印.但是现在我们切换到了wkhtmltopdf我无法达到同样的效果.
关键问题是,虽然wkhtmltopdf允许使用多个HTML模板,但似乎没有可靠的方法来确定在生成文件之前它们将具有的页数.页眉和页脚模板可以接收发票最终的页数,但它们与主要内容分开,因此我无法相应地插入分页符.
我也尝试计算height of the content/ PDF page height但是一旦我开始导出多个模板就会出现各种问题(使用单个模板可以正常工作).这种方法不是很好,因为在内容中插入空白页本身也会导致页脚出现在新页面上,这不是我想要的.
我最好的尝试
我发现的唯一方法可能让我解决这些问题是非常低效的.使用的一个单独的实例每个模板添加到批我可以一次预先生成它包装的wkhtmltopdf,得到了临时文件名,确定它有多少页中使用pdfinfo,并相应地添加一个空白HTML模板到主实例.这是一个函数的草稿,用于获取添加的最后一个模板的页面数(从扩展包装器的类,基于我在SO上找到的其他一些pdfinfo 问题):
/**
* Return the number of pages in the last invoice template added
* $complete === true => return the length of the entire document
*/
public function getNumPages($complete = false)
{
if (!$complete) {
// Generate …Run Code Online (Sandbox Code Playgroud) 我正在通过无限滚动(通过AJAX实现)将由图片或视频组成的帖子加载到我网站的主要div中.该系统与任何流行的meme网站非常相似.
问题:每个帖子左侧都有一个主体部分,右侧有一个社交按钮容器.我希望社交按钮容器在用户滚动时沿着帖子的主体移动,并停在父div的底部,以便当它们到达帖子的底部时它们可以喜欢它.问题是通过我的AJAX滚动函数加载的一些帖子似乎没有正确计算父项高度,当浏览器窗口的顶部到达时,它们或者从不移动或直接跳到父div的底部.以下是所需行为的直观说明.
实现:我无法编译一个工作的jsFiddle,它可以模拟加载图像和视频的AJAX请求的行为以及on"scroll"调用.这是我的实现和调试尝试:
每篇文章都有以下结构:
<div class="article-container">
<div class="article-body-left"><img src="..."></div>
<div class="social-buttons-right">
<div class="facebook-button">...</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
在每个AJAX请求完成后,我尝试使用'scroll'来确定每个社交按钮容器位置,并在用户使用ajaxComplete()滚动时修改它们:
$(document).ajaxComplete(function() {
bind_sticky_boxes();
});
function bind_sticky_boxes() {
$(window).on('scroll', function() {
$('.social-buttons-right').not('.following').each( function() {
var element = $(this).addClass('following'),
originalY = element.offset().top,
parent_offset = element.parent().offset().top,
parent_height = element.parent().height(),
element_height = element.height(),
destination = originalY+parent_height-element.height() -10;
$(window).on('scroll', function(event) {
var scrollTop = $(window).scrollTop();
if (scrollTop > originalY - 10){
element.css('position','absolute');
element.css('top',(scrollTop - parent_offset + 10) + 'px'); …Run Code Online (Sandbox Code Playgroud) 我正在疯狂寻找解决方案。我需要做一件非常简单的事情 - 将变量传递给自定义404 页面布局。Laravel 通过创建一个类似的文件,让您可以轻松地为您的 http 错误创建自定义视图,/resources/views/errors/404.blade.php但为什么它不能轻松地让您将变量传递给它呢?
我尝试覆盖app/Exceptions/Handler.php渲染方法:
public function render($request, Exception $e)
{
if($this->isHttpException($e)){
switch ($e->getStatusCode()) {
case '404':
parent::render($request, $e)->flash();
$categories = Category::hierarchy();
return View::make('errors.404')->with(['categories' => $categories]);
break;
default:
return $this->renderHttpException($e);
break;
}
}
return parent::render($request, $e);
}
Run Code Online (Sandbox Code Playgroud)
但无论出于何种原因,这都不起作用,我无法访问主布局中的类别变量。我正在一个在错误页面上显示标题的网站上工作,但如果我无法将变量传递给错误视图,则无法创建我的标题。
未定义变量:类别
任何人都知道可能会出什么问题?这样做是不可能的吗?我读过您可以传入异常并从中获取消息,但这有什么意义?我不想复制整个布局并重写所有变量。
使用VueJs和Webpack组合我已经想到要包含外部样式表(例如bootstrap),你可以做以下两件事之一:
在你的主js脚本中你可能需要这样的样式表:
require('./assets/lib/bootstrap.min.css');
Run Code Online (Sandbox Code Playgroud)
或者您可以简单地将其移动到通过Express访问的静态文件夹,并将其链接到您的主html文件中:
<link rel="stylesheet" type="text/css" href="/static/css/lib/bootstrap.min.css">
Run Code Online (Sandbox Code Playgroud)
这两种方法有什么区别?我没有看到在链接上使用require的优势(除非我认为每个组件在本地工作?).使用一个优于另一个有什么优势吗?