0

在 magento1.7 中,只需在 app\code\core\Mage\Wishlist\Helper\Data.php (Data.php) 文件中写入以下行

  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\design\frontend\base\default\template\wishlist\view.phtml (view.phtml) 文件中就<div class="my-wishlist">在行之前。现在在浏览器中运行 magento 并登录。然后单击我的愿望清单链接,它将在下载文件夹中显示 myfile.pdf。打开时会抛出错误消息。现在替换这些行

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

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

然后打开magento1.7文件夹中的mydoc.pdf,它打开没有错误,并在Pdf文档的每一页上显示“Hello World”。现在在文本编辑器中比较这两个文件“myfile.pdf”和“mydoc.pdf”,您将看到“myfile.pdf”中存在html内容。我的问题是我无法找到从生成的 PDF 文档中删除这些 html 内容的方法。谁能帮我解决这个问题。请注意,上面的代码只是我所做的演示。

4

3 回答 3

1

给猫剥皮的方法不止一种。我认为你想要一个不错的愿望者的 PDF。考虑使用 wkhtml2pdf 来制作它。这将涉及对页面的 PRINT 版本进行样式设置 - 如果 media=print,则会为此添加一个 CSS,wkhtml2pdf 就是这种情况。

wkhtml2pdf 的结果比 Zend PDF 的任何“手绘”都要好得多。

要开始安装 wkhtml2pdf 并简单地在命令行上运行它,修改选项直到它出现一半体面。

wkhtml2pdf 的唯一缺点是您无法控制分页符。

于 2012-08-31T12:36:35.867 回答
0

在您的末尾添加此代码Mage_Wishlist_IndexController::indexAction()

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

就在$this->renderLayout()电话后面。

于 2012-08-31T15:00:22.613 回答
0

为了从 Magento 发送 PDF 字符串并将其呈现在浏览器上,您需要执行以下操作:

$pdfString = $pdf->render();
$this->getResponse()->setHeader('Content-Type', 'application/pdf');
$this->getResponse()->setBody($pdfString);
于 2012-12-05T10:14:38.300 回答