2011-10-10 35 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