TYPO3扩展:生成PDF

时间:2013-02-19 10:46:51

标签: typo3

我试图用Kickstarter进行扩展,覆盖页面的正常渲染,并呈现PDF文件。为此我使用FPDF。但我不知道该怎么做。我试过这样做,但它没有用:

<?php

// require_once(PATH_tslib . 'class.tslib_pibase.php');

class tx_ishurkunde_pi1 extends tslib_pibase {
    public $prefixId      = 'tx_ishurkunde_pi1';
    public $scriptRelPath = 'pi1/class.tx_ishurkunde_pi1.php';
    public $extKey        = 'ish_urkunde';
    public $pi_checkCHash = TRUE;

    public function main($content, array $conf) {

        if (!t3lib_extMgm::isLoaded('fpdf')) return "Error!";

        $pdf = new FPDF();
        $pdf->AddPage();
        $content = $pdf->Output('', 'S');
        return $content;

    }
}
?>

它仍然保持渲染普通的网页模板。我错过了什么?

仅供参考,我不是要将HTML呈现为PDF。我试图从头开始生成PDF,使用URL参数是文本变量。

1 个答案:

答案 0 :(得分:0)

据我了解,您的目标是呈现PDF而不是页面元素。

您当前的方法将无效,因为您要在页面上插入插件。然后将插件的返回值返回给TYPO3内容解析器,如果页面已完成解析,则显示该插件。它没有任何部分可以抛弃整个页面渲染;至少它不打算这样做,你也不应该这样做(虽然有扩展可以做到这一点)。

eID方法将创建一个eID脚本(看看dd_googlesitemap),该脚本通过GET参数调用并仅呈现您需要的内容。你基本上可以做你想做的一切。

在您的扩展程序ext_localconf.php中,您注册了eID脚本,如下所示:

$GLOBALS['TYPO3_CONF_VARS']['FE']['eID_include'][$_EXTKEY] = "EXT:{$_EXTKEY}/path/to/my/EIDHandler.php";

示例eID处理程序结构:

class Tx_MyExt_EIDHandler
{
  public function main()
  {
    // Your code here
  }
}

$output = t3lib_div::makeInstance('Tx_MyExt_EIDHandler');
$output->main();

要在前端调用您的eID脚本,您可以附加相应的GET参数,例如http://example.com/index.php?eID=tx_myext。这是您在ext_localconf.php中定义的数组键(在我的示例中,它是$_EXTKEY,但它基本上可以是任何字符串)。

插件/拼写检测方法就像是TemplaVoila这样做:你创建一个PAGE类型并调用user_func来完成你的工作。这是最快的方法,因为你已经有了一个插件。重要的是,您只需使用插件即可呈现自己的页面类型。

TypoScript示例:

specialPage = PAGE
specialPage {
  type = 2
  10 = USER
  10.userFunc = tx_myextension_pi1->myFunc
}

之后,您可以使用http://example.com/index.php?type=2调用新页面。但是,仍然会呈现标题等,您可能需要删除它们。