0

我有一个控制器,它应该生成 pdf 文件,然后应该重定向到另一个站点。

class DocuController extends Controller
{
    public function indexAction() {
          // some other code
            if ($request->get('_add_document'))
            {
                $form->bindRequest($request);
                $em = $this->getDoctrine()->getEntityManager();
                $em->persist($document);      
                $em->flush();   
                if ($session->get('journey_id')!=false)
                {
                    $relation = new DocumentJourneyInJourney();
                    $relation->setJourney($session->get('journey_id'));
                    $relation->setDocument($document->getId());
                    $em->persist($relation);
                    $em->flush();
                }
                $pdf=$this->generatePDF($form);   
                $pdf->Output('file.pdf', 'I');

                return $this->redirect($this->generateUrl('another_site'));
            }
    }        
    return $this->render('Bundle:Page:document.html.twig'); 
}

public function generatePDF($form)
{
    $pdf = $this->get("wrep.tcpdf")->create();
    $pdf->SetTitle('Tittle');        
    $pdf->SetHeaderData('', 0, '  ', '  ', array(0,0,0), array(0,0,0)); 
    $pdf->setHeaderFont(array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
    $pdf->SetPrintFooter(false);  
    $pdf->SetAutoPageBreak(TRUE);         
    $pdf->AddPage();
    $html = $this->renderView('Bundle:document.twig',
                    array(
                    'traveller' => $form["name"]->getData().' '.$form["surname"]->getData(),
                    'document' => $form["full_name"]->getData()
                    )
                );  
    $pdf->writeHTML($html, $ln=false, $fill=false, $reseth=false, $cell=false, $align='');
    return $pdf;
}
}

但是使用此代码会生成 pdf 并且浏览器会下载它,但不会重定向页面。

4

2 回答 2

1

那是不可能的。您只能尝试使用 javascript 来做到这一点。创建一个 iframe 加载 pdf 下载 url 并在使用 javascript 调用 iframe 后重定向用户。(我不知道它是否真的有效)另一个问题是你为什么需要重定向用户?

于 2013-01-03T19:55:33.500 回答
0

这很正常。当您下载文件时,您的回复已发送。发送重定向响应也是如此。

于 2013-01-03T19:38:02.090 回答