wkhtmltopdf 는 Html 로 pdf 를 돌 리 는 도구 가 좋 습 니 다.

실습 할 때 회 사 는 html 페이지 의 일부 내용 을 pdf 파일 로 만들어 야 합 니 다.그리고 저 는 phop 으로 html 페이지 를 pdf 파일 로 둘 러 싼 종 류 를 찾 습 니 다.방법 은 많은 것 을 찾 았 다 고 할 수 있 습 니 다.html 2 pdf,pdflib,FPDF 등 은 모두 시험 해 보 았 지만 제 가 원 하 는 요구 에 이 르 지 못 했 습 니 다.
pdflib,FPDF 두 가지 방법 은 프로그램 을 작성 하여 pdf 를 생 성 하 는 것 입 니 다.html 페이지 를 pdf 로 직접 변환 하 는 것 은 지원 되 지 않 습 니 다.html 2pdf 이것 은 html 페이지 를 pdf 파일 로 변환 할 수 있 지만 일반적인 간단 한 html 코드 만 변환 할 수 있 습 니 다.html 내용 이 배경 뉴스 편집 기 를 통 해 레이아웃 되 어야 한다 면 안 됩 니 다.
한참 동안 고민 하 다가 바 이 두 라 니 요?구 글 검색 을 다 사 용 했 습 니 다.한참 동안 검색 을 했 는데 마음 에 드 는 사람 을 저 버 리 지 않 고 좋 은 방법 을 찾 았 습 니 다.다음은 성대하게 소개 하 겠 습 니 다.
이것 은 바로 wkhtmltopdf,wkhtmltopdf 는 브 라 우 저 에서 탐색 할 수 있 는 모든 웹 페이지 를 pdf 로 직접 변환 할 수 있 습 니 다.먼저 phop 류 가 아니 라 html 페이지 를 pdf 로 변환 하 는 소프트웨어(서버 에 설치 해 야 합 니 다)라 는 것 을 설명 합 니 다.그러나 간단 한 데스크 톱 소프트웨어 가 아니 라 cmd 로 직접 처리 합 니 다.php 의 셸 사용 하기exec()함 수 는 그것 을 호출 할 수 있다.php+js+html 로 pdf 파일 을 만 드 는 방법 을 소개 합 니 다.
wkhtmltopdf 다운로드 및 설치
1.다운로드 주소:http://wkhtmltopdf.org/downloads.html 그림:
这里写图片描述  
2.위 에 각종 플랫폼 아래 에 설 치 된 설치 가방 이 있 는데 영어 가 좋 지 않 은 것 은 구 글 에서 직접 번역 해 보 세 요.다음은 windows 7 플랫폼 에서 예 를 들 어 제 가 다운로드 한 것 은 stable(안정 판)의 wkhtmlopdf-0.12.3.2-installer.exe 버 전 입 니 다.저 는 win 7,win 8 32 비트 와 64 비트,win-sever 에 테스트 를 설치 하 는 데 문제 가 없습니다.시스템 에 있 을 때 몇 분 의 설치 패 키 지 를 다운로드 합 니 다.다 운 받 은 후에 바로 설치 하면 됩 니 다.설치 경 로 를 알 고 아래 에 사용 할 것 입 니 다.
这里写图片描述
3.설 치 된 후에 시스템 환경 변수 이름 이'Path'인 후에 추가 해 야 합 니 다.D:\wkhtmltopdf\bin 은 바로 당신 이 설치 한 디 렉 터 리 입 니 다.설치 하고 컴퓨터 다시 켜.
다음 그림 은 환경 변 수 를 어떻게 설정 합 니까?
내 컴퓨터 를 켜 고 오른쪽 단 추 를 누 르 면 속성 이
打开我的电脑右键属性
고급 시스템 설정 클릭
点击高级系统设置
고급 환경 변 수 를 찾 습 니 다.
找到高级里面点击环境变量
시스템 변수 에 있 는 path 를 찾 고 편집 을 누 르 면 방금 설치 한 위 치 를 마지막 으로 복사 합 니 다.앞 에 분 호 를 추가 하 는 것 을 기억 하 세 요!
找到系统变量中的path,点击编辑,将刚刚的安装位置复制到最后,记得前面加一个分号哦!
这里写图片描述
2.사용 효과 테스트
cmd 에 직접 입력:wkhtmltopdf http://www.baidu.com/ D:website 1.pdf(중간 에 빈 칸 이 있 음 을 주의 하 세 요)
첫 번 째 는 소프트웨어 이름(이것 은 변 하지 않 음)을 실행 하 는 것 입 니 다.두 번 째 는 사이트 주소 이 고 세 번 째 는 생 성 된 경로 와 파일 이름 입 니 다.차 에 돌아 온 후에 생 성 진도 바 의 힌트 를 보 는 것 이 아 닙 니까?성공 한 것 을 축하합니다.생 성 디 렉 터 리 에 방금 생 성 된 pdf 파일 이 있 는 지 확인 하 세 요.
조작 방법:1.windows 키+r 검색 상 자 를 열 고 cmd 를 입력 하고 확인 을 클릭 합 니 다.
这里写图片描述
2.cmd 에 직접 입력:wkhtmltopdf http://www.baidu.com/ D:website 1.pdf(중간 에 빈 칸 이 있 음 을 주의 하 세 요)
这里写图片描述
3.리 턴 을 클릭 하면 진도 표를 볼 수 있 습 니 다.그리고 전환 성공 을 알 립 니 다!
这里写图片描述
4.그 후에 해당 위치(즉 방금 설 정 된 D 디스크)에서 Pdf 파일 이 하나 더 있 는 것 을 발견 하면 성공 한 것 을 의미한다.
这里写图片描述
php 호출
php 에서 호출 은 간단 합 니 다.셸 로exec 이 함수 면 됩 니 다.셸exec 함 수 는 php.ini 에서 사용 하지 않 는 지 확인 할 수 없습니다.(php.ini 의 셸 을 찾 습 니 다.exec 함수,주석 을 취소 하면 됩 니 다.일반적으로 직접 사용 할 수 있 습 니 다).간단 한 예:

<?php shell_exec("wkhtmltopdf https://www.jb51.net/ 1.pdf") ?>
php 파일 의 동급 디 렉 터 리 에 1.pdf 파일 이 생 성 되 는 것 을 발견 할 수 있 습 니 다.
다음 코드 는 사이트 개발 에서 어떻게 사용 하 는 지 예 를 들 어 소개 합 니 다.주요 기능 은 웹 페이지 의 부분 을 캡 처 하여 phop 에 전달 하여 pdf 문서 로 처리 하 는 것 입 니 다.
html 페이지 코드:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
 <script src="js/jquery-2.1.4.min.js"></script>
 <link rel="stylesheet" href="css/common.css" rel="external nofollow" rel="external nofollow" >
 <link rel="stylesheet" href="css/myCenter.css" rel="external nofollow" rel="external nofollow" >
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>       </title>
</head>
<body>
<!--startprint-->
<div class="right5"> 
    <div class="right_top" style="background-image:url(images/right-di.png);">
      <h3>       </h3>
    </div>
    <div class="print">
      <input type="button" value="    " id="down" class="print_btn">
    </div> 
    <div class="Hollander">
        <h6>MBTI    :ESTJ</h6>
        <div id="chart"></div>
        <p>  ・   (John Holland)     ・           ,           。             ,           (VocatIonaI Preference lnventory)        (Self-directed Search)        ,                        。                                   。</p>
    </div>  
    <table class="tbl1">
     <tbody>
      <tr node-type="toolBar">
        <td class="tbl11">    :</td>
        <td class="tbl12">
          <p>①    ,     ②           ③  、           ④            ⑤     ,                 </p>
        </td>
       </td>
      </tr>
      <tr node-type="toolBar">
        <td class="tbl11">    :</td>
        <td class="tbl12">
          <p>①    ,     ②           ③  、           ④            ⑤     ,                 </p>
        </td>
       </td>
      </tr>
      <tr node-type="toolBar">
        <td class="tbl11">    :</td>
        <td class="tbl12">
          <p>①    ,     ②           ③  、           ④            ⑤     ,                 </p>
        </td>
       </td>
      </tr>
      <tr node-type="toolBar">
        <td class="tbl11">    :</td>
        <td class="tbl12">
          <p>①    ,     ②           ③  、           ④            ⑤     ,                 </p>
        </td>
       </td>
      </tr>
      <tr node-type="toolBar">
        <td class="tbl11">      :</td>
        <td class="tbl12">
          <a><span>       >></span></a>
        </td>
       </td>
     </tr>
    </tbody>
   </table>  
</div>
<!--endprint-->
  <form action="pdf.php" method="post" name="hld_res" id="hideform">
   <input type="hidden" id="hide_content" name="html"/>
  </form> 
</body>
 <script>
  $(function () {
   //       Html     <!--startprint--><!--endprint-->  
   bdhtml=window.document.body.innerHTML; 
   sprnstr="<!--startprint-->"; 
   eprnstr="<!--endprint-->"; 
   prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17); 
   prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr)); 
   //    html           php    
   $("#hide_content").val(""+prnhtml+"");
  } );  

  $("#down").click(function(){
   $("#hideform").submit();
  }); 

 </script>
</html>
php 페이지:

<?php
  //  pdf
    $html=$_POST['html'];
    //Turn on output buffering
    ob_start();
    $html='
    <link rel="stylesheet" href="css/common.css" rel="external nofollow" rel="external nofollow" >
    <link rel="stylesheet" href="css/myCenter.css" rel="external nofollow" rel="external nofollow" >
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'.$html;
    //         Html                      ,              html           demo     (  )           html         
    //$html = ob_get_contents();
    //$html=$html1.$html;
    $filename = "hld";

    //save the html page in tmp folder    html                               
    file_put_contents("{$filename}.html", $html);

    //Clean the output buffer and turn off output buffering
    ob_end_clean();

    //convert HTML to PDF
    shell_exec("wkhtmltopdf -q {$filename}.html {$filename}.pdf");
    if(file_exists("{$filename}.pdf")){
      header("Content-type:application/pdf");
      header("Content-Disposition:attachment;filename={$filename}.pdf");
      echo file_get_contents("{$filename}.pdf");
      //echo "{$filename}.pdf";
    }else{
      exit;
    }
   ?>
페이지 의 다운로드 단 추 를 누 르 면,
这里写图片描述
다운로드 알림 이 뜨 고 다운로드 한 pdf 를 켜 면 웹 페이지 의 스타일 과 똑 같 지 않 습 니까?
这里写图片描述  
这里写图片描述
Php 파일 의 파일 저장 위 치 를 열 어서 임시 파일 이 두 개 더 생 겼 는 지 확인 해 보 세 요.
이 두 임시 파일 이 어디 에 있 는 지,css 가 어디 에 있 는 지,또는 상대 경 로 를 직접 사용 하여 다른 파일 의 css 스타일 을 참조 하 셔 도 됩 니 다.가장 간단 한 것 은 css 스타일 을 pdf 로 전환 할 html 페이지 에 직접 쓰 는 것 입 니 다.
这里写图片描述
만약 스타일 이 존재 하지 않 는 다 면,그것 은 바로 당신 의 스타일 경로 가 맞지 않 은 것 입 니 다.다시 한 번 검사 하면 됩 니 다!
넷 째,페이지 별 문제 해결
wkhtmltopdf 는 쓰기 좋 지만 마음 에 들 지 않 습 니 다.html 페이지 가 길 면 제 가 지정 한 곳 에 페이지 를 나 눠 야 하 는데 어 떡 하 죠?wkhtmltopdf 개발 자가 개발 할 때 이 점 을 고려 하지 않 은 것 이 아니 라 wkhtmltopdf 에 좋 은 방법 이 있 습 니 다.바로 그 div 스타일 뒤에 페이지-break-inside:avoid 를 추가 하 는 것 입 니 다.됐어.
예컨대
div{ width:800px; min-height:1362px;margin:auto;page-break-inside:avoid;}
이상 은 개인 적 으로 총괄 적 으로 pdf 를 돌 리 는 방법 입 니 다.많은 부분 을 확장 할 수 있 습 니 다.아이들 은 머리 를 써 보 세 요.하지만 아직 해결 되 지 않 았 습 니 다.중국어 이름 으로 파일 을 명명 할 수 없습니다.해결 할 수 있 는 파트너 가 있다 면 아래 에 메 시 지 를 남 겨 주세요.감사합니다.

좋은 웹페이지 즐겨찾기