2012-08-31 52 views
0

在magento1.7,只寫在應用程序\代碼\核心以下行\法師\收藏\助手\ Data.php(Data.php)文件Zend_pdf文件拋出的magento誤差由於HTML內容存在

public function getpdf() 
    { 
    $pdf = new Zend_Pdf(); 
    $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA); 
    for($i=0; $i<5; $i++) { 
    $page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4); 
    $page->setFont($font, 24) ->drawText('Hello World page '.$i, 72, 720); 
    $pdf->pages[] = $page; 
    } 
    $pdfString = $pdf->render(); 
    header("Content-Disposition: attachment; filename=myfile.pdf"); 
    header("Content-type: application/x-pdf"); 
    echo $pdfString; 
    } 

調用此函數

<?php Mage::helper('wishlist')->getpdf();?> 

在app \設計\前臺\基地\ DEFAULT \模板\心願\ view.phtml(view.phtml)之前<div class="my-wishlist">行文件。現在在瀏覽器中運行magento並登錄。然後點擊我的願望清單鏈接,它會在downlods文件夾中顯示myfile.pdf。當它打開時,它拋出錯誤message.Now在magento1.7文件夾替換這些行

$pdfString = $pdf->render(); 
    header("Content-Disposition: attachment; filename=myfile.pdf"); 
    header("Content-type: application/x-pdf"); 
    echo $pdfString; 

$pdf->save("mydoc.pdf"); 

然後打開mydoc.pdf,它打開,沒有錯誤,並顯示「Hello World」在Pdf文檔的每個頁面上。現在在文本編輯器中比較這兩個文件「myfile.pdf」和「mydoc.pdf」,您會在「myfile.pdf」中看到html內容的存在。 我的問題是,我無法找到一種方法來從生成的PDF文檔中刪除這些html內容。任何人都可以幫助我解決這個問題。 請注意,上面的代碼僅僅是我所做的一個演示。

回答

1

皮膚貓有多種方法。我認爲你需要一個不錯的PDF願望。考慮使用wkhtml2pdf來製作它。這將涉及設計頁面的PRINT版本 - 如果media = print,則會添加一個CSS,wkhtml2pdf就是這種情況。

wkhtml2pdf的reslts比任何'手繪'Zend PDF的東西都要好得多。

要開始安裝wkhtml2pdf,只需在命令行上運行它,修改選項,直到它出現一半體面。

wkhtml2pdf唯一的缺點是你無法控制分頁符。

+0

http://stackoverflow.com/questions/6153480/execute-wkhtmltopdf-from -php – Theodores

+0

我想解決上述問題而不是替代解決方案。請幫助 – Nida

0

Mage_Wishlist_IndexController::indexAction()的末尾添加以下代碼:

$sResponse = $this->getResponse()->getBody(); 
$sNewResponse = strstr($sResponse, '%PDF-1.4'); 
$this->getResponse() 
    ->clearBody() 
    ->appendBody($sNewResponse); 

權背後的$this->renderLayout()電話。

+0

這不起作用,它仍然在pdf文檔中顯示html內容。 – Nida

+0

使用您的給定代碼 - 替換爲'pdf-> save(「mydoc.pdf」)' - 並且添加我的代碼,如新的Magento 1.7.0.2安裝中所示。 –

+0

那麼這可能是我的magento安裝問題。你能否提供一些禁用佈局和查看渲染的其他方法? – Nida

0

爲了從Magento的發送PDF字符串,並將它呈現在瀏覽器上,你需要做到以下幾點:

$pdfString = $pdf->render(); 
$this->getResponse()->setHeader('Content-Type', 'application/pdf'); 
$this->getResponse()->setBody($pdfString); 
相關問題