【问题标题】:How to make Print View of invoice in Joomla VirtueMart publicly viewable?如何使 Joomla VirtueMart 中发票的打印视图公开可见?
【发布时间】:2011-12-04 05:22:31
【问题描述】:

我希望在 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 joomla joomla1.5 virtuemart


    【解决方案1】:

    您可以使用 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 框架中运行此脚本,否则它将无法访问该页面。

    【讨论】:

    • 谢谢,但它也保存了登录页面,因为需要登录。我认为需要发送远程用户的 cookie 或身份验证才能使其正常工作
    • 正是你给我的。我已经找到了解决方案。我将编辑并放在问题下方
    猜你喜欢
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 2012-08-24
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    相关资源
    最近更新 更多