저는 Drupal 모듈에 웹 서비스를 구축했습니다. 내 문제는 Drupal 또는 webservice와 관련이 없습니다. 그것은 잘 작동합니다.pdf 소스 코드를 변수에 저장하여 파일을 만들고 다운로드하는 방법은 무엇입니까?
사용자가 양식을 채우고 제출하고 웹 서비스에 연결됩니다. 사용자가이 웹 서비스에 연결되어있는 경우
는, 내가 변수에 저장하여 PDF 소스 코드를 얻을 : 나는 테스트 목적으로 $result
의 내용을 표시하는 경우 $result
을 PDF 파일의 소스 코드 맞습니다. 여기
echo '<pre>' . $result . '</pre>';
내가이 pdf 파일을 다운로드하는 사용자를 싶습니다 지금
$result
%PDF-1.4
1 0 obj
<<
의 시작입니다. 웹 서비스를 작성하지 않았기 때문에 고객의 이전 코드를 사용했습니다. 모듈과 모든 PHP 코드를 SoapClient
과 연결하여 작성했습니다.
그는이 일을했다 : 여기
header("Content-disposition: attachment; filename=bulletin.pdf");
header("Content-Type: application/pdf");
echo $result;
exit;
을 그리고 것은 내 문제입니다 : 제대로 작동하지만 일부 HTML은 PDF 소스 코드의 시작 부분에 추가가 나타났습니다
. Chrome, Firefox, Preview (OSX)는 파일을 읽을 수 있지만 Acrobat은 읽을 수 없습니다. 그리고이 여분의 HTML을 허용하고 싶지 않습니다.
추가 된 추가 HTML은 현재 페이지 HTML 코드 (양식이있는 곳)입니다.
<!DOCTYPE html>
<html lang="fr" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
%PDF-1.4
1 0 obj
<<
이걸 어떻게 방지 할 수 있습니다
: 여기 는 PDF 파일의 소스 코드 (내-pdf.pdf) I 코드 편집기로 열면입니까? 내 PHP 코드를 다른 PHP 파일 (HTML없이 Drupal 외부에 놓으면 코드가 작동 함).나는 (버퍼 등을 세척 다른 헤더)는 많은 것을 테스트 한 :
ob_clean();
flush();
header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename='downloaded.pdf'");
echo $result;
exit;
무엇을 내 header
잘못 나는 처음에이 html 코드를 얻을 이유는 무엇입니까? echo $result
없이이 파일을 생성 할 수있는 방법이 있습니까?
예, 맞습니다. 제 질문에서 언급했듯이 모든 PHP 코드를 테스트했습니다. Drupal (HTML이없는 파일, PHP 만) 외부의 파일에서 제대로 작동합니다. 나는 많은 질문을하기 전에 읽었고,'echo $ results'는 적절한'http-headers '를 보낸 후에 파일을 생성하는 올바른 방법이라고 생각합니다. –
해결책을 찾았습니다. 내 대답을 게시했습니다. 좋은 접근 방법인지는 모르겠지만 PDF 소스 코드에는 HTML 코드가 없습니다. 내 해결책에 대해 어떻게 생각하세요? –
@ SébastienGicquel 작동해야하지만 이미 작성된 헤더를 제거하는 것이 아니라 처음부터 불필요한 헤더를 작성하는 것이 좋습니다. 예를 들어 AJAX를 사용할 수 있습니다. https://api.drupal.org/api/examples/ajax_example%21ajax_example.module/group/ajax_example/7.x-1.x –