2011-10-10 101 views
1

我希望在Joomla 1.5.22中为虚拟机1.1.8提供一个功能,允许发送PDF发票给已确认购买的客户。我已经尝试了各种插件,不按我想要的方式工作。因此我自己编写它。如何使Joomla VirtueMart的发票打印视图公开显示?

为了减少依赖性,我选择使用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); 
?> 

回答

2

您可以使用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); 
?> 

然后你可以转发这个保存的文件的网址为pdfcrowd.com。

但是,您需要从Joomla框架运行此脚本,否则它将无法访问该页面。

+0

谢谢,但它也保存了登录页面,因为需要登录。我认为需要发送远程用户的cookie或认证才能使其工作 – faulty

+0

它不应该是这样的,你是怎么称呼这个代码的? – Caner

+0

正是你给我的。尽管我找到了解决方案。我将编辑并放在问题 – faulty