2017-04-04 7 views
1

현재 DOMPDF를 테스트 중이며 CSS 스타일링, mysql 데이터베이스 등에서 가져온 내용 표시 등 제 목적에 꽤 잘 작동하고 있습니다.DOMPDF에서 생성 된 PDF에서 Javascript를 사용할 수있는 방법이 있습니까?

지금 자바 스크립트를 사용하려고했지만 작동하지 않습니다. 어딘가에 페이지

HTML : 나는 테스트를위한 아주 간단한 스크립트를 사용

<div id='mydiv1' style='width: 100%;height:20px;background:#ddd;'></div> 

JS (단지 (하지만 난 마우스 오른쪽 오프닝 <body> 태그 다음에 그것을 시도) 닫는 </body> 태그 위에 :

나는 브라우저 (I는 전체 HTML/PHP 페이지에 포함 된 변수를 반향하고)이 페이지를 에코 때 내가 DOMPDF의 loadHtml에서 같은 변수를 넣고 렌더링 할 때
<script> 
    document.getElementById('mydiv1').innerHTML = 'this is a test'; 
</script> 

는, 그 텍스트는 DIV. 나타납니다 출력, 스크립트로 생성 된 텍스트는 PDF에 나타나지 않습니다 (나머지 페이지는 않습니다).

제 질문은 DOMPDF에서 생성 된 PDF에서 Javascript를 사용할 수있는 방법이 있습니까?

+1

([PHP에서 자바 스크립트를 실행]이 응답에 http : // 유래. com/a/2699303/5217142)는 웹 페이지에서 HTML을 생성하기 위해 [HtmlUnit] (http://htmlunit.sourceforge.net/)을 사용하며 관심이있을 수 있습니다. – traktor53

답변

1

DOMPDF는 자바 스크립트를 지원하지 않습니다. phantomjs과 같은 것을 고려해보십시오. used to save pdf files 일 수도 있습니다.

+0

답변 해 주셔서 감사합니다. 하지만 나를 위해 가장 중요한 것은 PHP 기능과 MYSQL을 통해 콘텐츠를 가져올 수있는 가능성이며 이것은 phantomjs로는 불가능합니다. – Johannes

+0

Github의 DOMPDF "기능"페이지에서 "PDF 문서 API와 호환되는 스크립트를 사용한 인라인 PDF Javascript 지원"에서이 줄을 보았습니다. 하지만 나는 HTML 태그에 직접 쓰여질 수있는 JS 물건만을 의미한다고 생각한다. (?) – Johannes

+1

내가 실수하지 않는다면, 자바 스크립트를 PDF 파일 자체에 임베딩하는 것에 대해 이야기하고있다. 일부 pdf 시청자] (http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/js_api_reference.pdf) –

0

인라인 자바 스크립트를 켤 수있는 DOMPDF 옵션이 있습니다 :

$ isJavascriptEnabled = true로;

을 heres DOMPDF 옵션을 사용하는 방법의 예 :

$HTML = <<<HTML 
!DOCTYPE html> 
<html> 
<head> 
<body> 
some html 
</body> 
<script> somejs </script> 
</head> 
</html> 
HTML; 

require_once "sites/all/libraries/dompdf/autoload.inc.php"; 
use Dompdf\Dompdf; 
use Dompdf\Options; 
$options = new Options(); 
$options->set('isJavascriptEnabled', TRUE); 
$dompdf = new Dompdf($options); 
$dompdf->load_html($HTML); 
$dompdf->setPaper('A4', 'portrait'); 
$dompdf->render(); 
$dompdf->stream('blah.pdf'); 

내가 DOMPDF의 옵션 페이지에서이 나섭니다 : https://github.com/dompdf/dompdf/blob/master/src/Options.php

+0

답장을 보내 주셔서 감사합니다! 그러나,이 옵션은 기본적으로 * enabled/true이고, 위에서 설명한 테스트 상황에서도 작동하지 않습니다. – Johannes