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ẻ :)