如何使打印视图的发票在Joomla VirtueMart公开可见


How to make Print View of invoice in Joomla VirtueMart publicly viewable?

我想在Joomla 1.5.22的VM 1.1.8中添加一个功能,允许将pdf发票通过电子邮件发送给已确认购买的客户。我尝试过各种插件,非我想要的方式工作。所以我自己编码。

为了减少依赖性,我选择使用pdfcrowd.com来进行html到pdf的转换,这是一些stackoverflowers在这里推荐的。但是,我现在面临的一个问题是,要转换的页面必须是可公开查看的,以便pdfcrowd看到输出,否则pdf文件最终将只有管理登录页面。我一直在用谷歌搜索,但没有得到任何东西,也许我用错了搜索词。

我也尝试过制作一个独立的php页面来显示公共发票,但是要设置所有内容以使其正常工作而不涉及joomla的内部,这太麻烦了。

我要复制的页面是

administrator/index.php?page=order.order_printdetails&order_id=######&no_menu=1&pop=1&tmpl=component&option=com_virtuemart

/administrator/components/com_virtuemart/html/order.order_printdetails.php

顺便说一句,我将为发票视图页面实现一次令牌检查,因此它只能在短时间内用于转换。转换后的发票将被存储,并在以后需要时重用。

请建议。谢谢你。

编辑:感谢LAS_VEGAS指向cURL。他的代码适用于公共页面。要访问登录页面,我只需要添加代码来传递cookie。

<?php
// no direct access
defined('_JEXEC') or die;
//Store cookie in format compatible with cURL
$cookie = "";
foreach($_COOKIE as $key => $value) {
    $cookie .= $key . "=" . $value . "; ";
}
$ch = curl_init();
$fp = fopen("example_page.html", "w");
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/administrator/index.php?page=order.order_printdetails&order_id=######&no_menu=1&pop=1&tmpl=component&option=com_virtuemart");
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
?>

您可以使用PHP curl库将网页保存到服务器上的某个位置。

<?php
// no direct access
defined('_JEXEC') or die;
$ch = curl_init("http://www.example.com/administrator/index.php?page=order.order_printdetails&order_id=######&no_menu=1&pop=1&tmpl=component&option=com_virtuemart");
$fp = fopen("example_page.html", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
?>

然后你可以将这个保存文件的url转发到pdfcrowd.com。

但是你需要从Joomla框架中运行这个脚本,否则它将无法访问页面