我現在不使用PHP,現在我陷入了一個問題。 我需要將網頁瀏覽器的網站保存爲pdf。我現在正在使用mPDF(它是在stackoverflow的wiki中提出的),它似乎工作得很好(我只是簡單地寫一個簡短的html代碼到一個php變量中,然後創建pdf)。將html代碼導入到php變量中
但現在我必須在瀏覽器中獲取實際站點的html代碼,然後將其保存到php變量中。我怎樣才能做到這一點?
我現在不使用PHP,現在我陷入了一個問題。 我需要將網頁瀏覽器的網站保存爲pdf。我現在正在使用mPDF(它是在stackoverflow的wiki中提出的),它似乎工作得很好(我只是簡單地寫一個簡短的html代碼到一個php變量中,然後創建pdf)。將html代碼導入到php變量中
但現在我必須在瀏覽器中獲取實際站點的html代碼,然後將其保存到php變量中。我怎樣才能做到這一點?
你或許可以通過PHP的file_get_contents()
-function獲取遠程內容:
$html = file_get_contents('http://example.org');
如果這不工作,請確保您的php.ini中啓用了allow_url_fopen
。
問題是,在這個過程中鏈接不會改變。例如您的訂單包含2頁。第一頁=選擇產品,第二頁=確認。現在我只想將確認頁面保存爲pdf。當我使用你的解決方案,然後我有一個PDF文件包含第一頁,這也是空的(你不選擇),因爲與file_get_contents('')它加載從新的頁面... – mkn 2010-09-24 07:57:47
好吧,我得到問題。問題是,服務器不能(或不應該)使用客戶端會話來獲取相同的網站視圖。我想你可能需要['ob_ *'-functions](http://php.net/ob_)來捕獲你想要放入PDF的頁面輸出。這樣做:如果用戶使用打印參數(由打印鏈接提供)調用頁面,則照常打印頁面。但你這樣做就像Sarfraz建議的那樣。在打印頁面之前調用'ob_start()',之後調用'ob_get_contents()'接收輸出。 'ob_end_clean()'防止PHP發送輸出。 – jwueller 2010-09-24 08:11:30
「按照慣例打印頁面」是什麼意思?該頁面是用php編寫的,這意味着它包含html和php代碼的組合。現在打印按鈕只是調用另一個.php文件(action ='printpdf.php'),該文件有一個小代碼,它打印我提供的php變量的內容。 – mkn 2010-09-24 08:17:23
這可能是過度殺手,但您可以嘗試使用SimpleHTML DOM,它可以加載遠程網站並提取其HTML。
如果我理解正確的話,你可以將網頁的內容存儲到PHP變量是這樣的:
ob_start();
// your html code goes here
$contents = ob_get_contents();
ob_end_clean();
// see the contents now
echo $contents;
'$ contents = ob_get_clean();''obb_get_clean()會返回緩衝區的值並清除它。 – Peeeech 2013-03-14 17:22:58
好的,我需要添加更多的細節。該網站是由一個PHP代碼生成的。所以,如果我將這些代碼提供給打印機,那麼這將是一團糟。此外,它必須是用戶友好的,這意味着用戶可以按下保存按鈕,然後生成pdf。 (用戶看到一個確認的html頁面,他想把這個確認頁面保存爲pdf) – mkn 2010-09-24 07:47:20