0

PdfBundleの実装では、スタイルシートを Pdf() 注釈に追加しても、エラーがスローされることも使用されることもありません。表示されるページは、予想される 5 x 8 ではなく、デフォルトの 8.5 x 11 です。スタイルシート ファイル名をランダムな文字に置き換えても、エラーは発生しません。スタイルシートを利用するには、他の構成が必要ですか?

コントローラ:

   /**
     * @Pdf(stylesheet="ManaClientBundle:Test:pdfstyle.xml.twig",
     * @Route("/card")
     */
    public function cardAction() {
        $em = $this->getDoctrine()->getManager();
        $household = $em->getRepository('ManaClientBundle:Household')->find(8607);
        $facade = $this->get('ps_pdf.facade');
        $response = new Response();
        $this->render('ManaClientBundle:Test:card.pdf.twig', array(
            'household' => $household,
            'date' => date_create(),
        ), $response);
        $xml = $response->getContent();
        $content = $facade->render($xml);
        return new Response($content, 200, array('content-type' => 'application/pdf'));
    }

テンプレート (.../Resources/views/Test/ 内)

<pdf>
    <page id="card">
    ...
    </page>
</pdf>

.../Resources/views/Test/pdfstyle.xml.twig のスタイルシート

<stylesheet>
    <page id="card" page-size="8in:5in"  margin=".5in" font-size="12">
    </page>
</stylesheet>
4

1 に答える 1

0

バンドルの作者から:

$facade オブジェクトを直接使用する場合、Pdf アノテーションは不要です。暗黙的な方法で pdf レンダリングを使用する場合は、pdf 注釈を使用する必要があります。コードでは、スタイルシート xml を $facade->render(...) メソッドの 2 番目の引数として渡す必要があります。

コントローラーは次のようになります。

   /**
     * @Route("/card")
     */
    public function cardAction() {
        $em = $this->getDoctrine()->getManager();
        $household = $em->getRepository('ManaClientBundle:Household')->find(8607);

        $stylesheetXml = $this->renderView('ManaClientBundle:Test:pdfstyle.xml.twig', array());

        $facade = $this->get('ps_pdf.facade');
        $response = new Response();

        $this->render('ManaClientBundle:Test:card.pdf.twig', array(
            'household' => $household,
            'date' => date_create(),
        ), $response);
        $xml = $response->getContent();
        $content = $facade->render($xml, $stylesheetXml);
        return new Response($content, 200, array('content-type' => 'application/pdf'));
    }
于 2013-10-02T15:14:45.627 に答える