Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tạo một số trang bằng dompdf

Vòng lặp của bạn đang hoạt động tốt. Cách bạn thêm các trang vào tệp PDF của mình có thể là sai. Rõ ràng là bạn đang ghi đè nhiều lần một trang thay vì đính kèm một trang mới.

CHỈNH SỬA

Tôi chưa bao giờ sử dụng dompdf. Xem nhanh các tài liệu cho phép tôi nghĩ rằng bạn tạo thứ gì đó giống như đánh dấu HTML, sau đó được chuyển đổi thành PDF, tôi hiểu đúng không?

Mã mẫu

$html = <<<HTML
  <html>
      <head>
            <style type="text/css">
                /* Your document styling goes here */
            </style>
      </head>
      <body>
HTML;

while ( $row = $dbResult->fetch_assoc() ) {
    $html .= '<div class="teacherPage">'
                 . $row['name'] // your teacher document goes here
             '</div>';
}

$html .= '</body></html>';

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("sample.pdf");

Nếu bạn thắc mắc về cú pháp bất thường $var = <<<HTML \r\nHTML , đó là heredoc . Sẽ thoải mái hơn khi sử dụng heredocs khi bạn có nhiều mã nội tuyến xa lạ, điều này có thể có các biến {$varname} và bạn không cần phải lo lắng về báo giá. Tất cả những gì bạn cần chắc chắn là heredoc gần hơn với HTML nằm trong một dòng mới và không được thụt lề.

EDIT2

Vẫn không quá chắc chắn, bạn đang sử dụng thư viện nào. Tôi tìm thấy tiện ích mở rộng này trông khá đẹp và nó được gọi là dompdf, giống như bạn đã nói trong câu hỏi của mình.

Nhận xét mới nhất của bạn cho thấy cho đến nay bạn vẫn chưa giải quyết được vấn đề của mình, vì vậy tôi quyết định bổ sung thêm một số thông tin để đưa bạn đến mục tiêu.

dompdf có thể đọc các thuộc tính CSS2 và CSS3 của tài liệu đầu vào của bạn.

Mỗi chu kỳ trong while vòng lặp trên đại diện cho một giáo viên trong đó mỗi người trong số họ nhận được một trang riêng trong tài liệu đầu ra.

Tôi đặt trang vào vùng chứa div với lớp teacherPage . Bạn có thể điền vào vùng chứa này với tất cả thông tin bạn muốn hiển thị cho giáo viên.

Bây giờ, tất cả những gì chúng ta cần làm là nói với dompdf từng teacherPage là một trang mới. Điều này có thể được thực hiện bằng cách sử dụng @page markup được vận chuyển cùng với CSS3

Tôi đã thêm một vùng chứa css trống <style type="text/css"></style> vào tài liệu ví dụ ở trên, đó là nơi mà kiểu trang sẽ chuyển đến.

CSS mẫu

@page teacher {
  size: A4 portrait;
  margin: 2cm;
}

.teacherPage {
   page: teacher;
   page-break-after: always;
}

Với @page bạn có thể xác định một trang có tên teacher , có thể có các thuộc tính hợp lệ cho toàn bộ vùng chứa trang.

page-break-after: always sẽ bắt đầu một trang mới sau mỗi vùng chứa

Hy vọng điều này sẽ hữu ích, hãy thử vui vẻ :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cố gắng lấy số tháng

  2. Ý nghĩa của id =LAST_INSERT_ID (id)

  3. tham gia bên phải so với tham gia bên trái

  4. CURRENT_TIME Ví dụ - MySQL

  5. Làm cách nào để chuyển một mảng giá trị vào thủ tục đã lưu trữ của tôi?