2013-10-04 3 views
0

dompdf에서 pdf 첨부 파일을 성공적으로 전자 메일에 첨부하는 데 문제가 있습니다. pdf 문서는 잘못된 형식을 말하며 어떤 종류의 오류도 표시하지 않지만 직접 링크를 클릭하면 pdf가 다운로드되고 성공적으로로드됩니다.joomla의 DOMPDF, 오류 처리 및 전자 메일

전자 메일을 보내면 다음과 같은 메시지가 표시되어 문제가 발생할 수 있습니다. 항목 ID와 ID가 다음 코드

$app = JFactory::getApplication(); 
     $menu = $app->getMenu(); 
     $menuItem = $menu->getItems('link', 'index.php?option=com_helloworld&view=core', true); 
     $Itemid = $menuItem->id; 
$id = JRequest::getVar('assessmentId',null,'get'); 

이 실제 이메일 작성을위한 모든이다에서로드

$mailer->addStringAttachment(file_get_contents(JRoute::_('index.php?option=com_helloworld&view=finish&format=pdf&tmpl=component&data='.$id.'&Itemid='.$Itemid)),'Assessment.pdf');

, 그것은 그러나 PDF는, 첨부 된 PDF 파일과 함께 이메일을 보내 않습니다 흉하게 생긴.

view.pdf.php 파일도 실행됩니다. 유일한 차이점은 ID가 세션이 아닌 데이터를로드한다는 것입니다.

$data = JRequest::getVar('data',false,'get'); 
       if($data!==false){ 
         //$data = urldecode($data); 
         //$data = json_decode($data); 
         $this->curData = array('id'=>$data,'data'=>$model->getAssessment($data)); 
       }else{ 
         $this->curData = $session->get('core_value_assessment'); 
       } 
+0

전자 메일에서 PDF를 저장하고 텍스트 편집기에서 엽니 다. 손상된 PDF는 출력 스트림에서 PHP 알림/경고가 발견되어 종종 발생합니다. – BrianS

+0

나는 그것을 ..... 생각하지 않았다는 것을 믿을 수 없다 감사합니다! –

+0

쉽게 놓칠 수 있습니다. 출력 스트림에서 PHP 알림/경고를 캡처 할 필요는 없습니다. 우리는 여전히 문제가되는 것처럼 보이지만이를 피하기 위해 변화를 시도하고 있습니다. – BrianS

답변

0

해결책은 결국 "오류"또는 JRoute의 오류, 이상한 동작이되었습니다. &을 &으로 자동 변경합니다. 마녀가 시스템 매개 변수를 사용하여 필요한 뷰가 아닌 기본 뷰로 라우팅하려고합니다. 해결책은 메뉴 항목 ID JRoute::_('index.php?Itemid=%%%')을 얻기 위해 JRoute 만 사용하는 것이 었습니다. 이렇게하면 적절한 경로가 생기고 추가 매개 변수를 추가 할 수 있습니다.

진단하기 어려운 이유는 JRoute의 시각 장애인 신뢰입니다. 그래서 저는 그러한 직선 경로가 올바른 시각으로 나아 가지 않을 것이라고 결코 생각하지 않았습니다.

그래서이 문제가 있거나 비슷한 다른 누군가에게 전자 메일을 생성하기 때문에 코드의 해당 부분을 끌어 와서보기에 인쇄하여 링크가 어떻게 생성되는지 확인할 수 있습니다.

+0

죄송합니다. _ "변경 및 &"_? 자, 혁신! – geomagas

+0

요청을 'urlencode'해야할까요? – Latheesan

+0

자동으로 변경된 것 같습니다 : D는 '&'을 의미합니다. 또한 JRoute는 자동으로 urlencode를 처리해야합니다. –

0

오류 발생시 domPDF 예외가 발생합니다. try catch으로 PDF를 생성하는 코드를 래핑하려고 시도 했습니까?

<?php 

require_once("dompdf_config.inc.php"); 

try 
{ 
    $dompdf = new DOMPDF(); 
    $dompdf->load_html('YOUR PDF HTML GOES HERE'); 
    $dompdf->set_paper("a4", "portrait"); 
    $dompdf->render(); 

    // $dompdf->stream("dompdf_out.pdf", array("Attachment" => false)); 
    $fp = fopen('test.pdf', 'w'); 
    fwrite($fp, $dompdf->output()); 
    fclose($fp); 
} 
catch (Exception $e) 
{ 
    // log $e->getMessage() to file to see if any error(s) are occuring 
} 

?> 
+0

이것은 domPDF의 Joomla 구현을 사용하므로이 상황에서는 작동하지 않습니다. 또한 문제는 전자 메일 만 보내고 PDF는 생성하지 않는 것입니다 (잘 작동합니다). 그러나 try/catch 시도하는 것이 좋습니다, 나는 upvote 것입니다하지만 현상금에 내 모든 담당자를 낭비 .... –

0

이것은 어리석은 것처럼 들릴 수도 있지만 문제의 핵심이 될 수는 없습니다.

index.php?option=com_helloworld&view=finish&format=pdf... 스크립트가 출력되는 PHP 오류를 생성하지 않는지 확인하십시오.

생성 된 파일을 텍스트 편집기에서 열고 <b>Notice:</b> . . . 등과 같은 몇 줄이 아닌 이진 헤더의 정렬로 시작하는지 확인하십시오.

+0

예,이 시도하고 결국 사건이 끝나지 않았다. –