2012-12-12 38 views
11

Tôi gặp sự cố với việc tạo PDF hiện tại hệ thống của tôi đang sử dụng dompdf để chuyển đổi HTML sang PDF, tất cả đều hoạt động tốt. Tuy nhiên, nếu người dùng chèn một hình ảnh lớn hơn một trang A4 thì PDF sẽ bị hỏng và tất cả nội dung bên dưới hình ảnh lớn sẽ bị gộp lại hoặc không được hiển thị.Vấn đề tràn hình ảnh dompdf

Dưới đây là hai file PDF để hiển thị một ví dụ về vấn đề này

Cái này là tốt

https://dl.dropbox.com/u/65878041/OK.pdf

này một bạn có thể nhìn thấy bằng hình ảnh đầu tiên là lớn hơn trang A4 tất cả các nội dung sau đây bị vặn lên khi nó phải giống như trước đó.

https://dl.dropbox.com/u/65878041/Issue.pdf

Những gì tôi muốn lý tưởng muốn làm là phá vỡ hình ảnh thành nhiều phần và trải rộng ngang qua các trang theo yêu cầu. Giống như những gì được thực hiện trong LaTeX solution này. Có khả năng làm điều này với dompdf? hoặc bất kỳ thư viện PHP nào khác để thực hiện HTML sang PDF?

Tôi đã tự tìm hiểu và rõ ràng là tôi có thể cắt hình ảnh nếu nó lớn hơn trang A4. Nhưng vấn đề là với cách tiếp cận đó cần phải biết nếu có văn bản trên trang trước khi tay hoặc bất cứ điều gì như thế để nó không hoàn toàn đơn giản.

Cảm ơn mọi người trước. Bất kỳ cái nhìn sâu sắc nào sẽ được đánh giá rất nhiều.

+2

Đó là không phải là giải pháp trực tiếp, nhưng bạn có thể xem xét chuyển sang một trình tạo PDF dựa trên HTML khác. Tôi đã có may mắn với 'wkhtmltopdf', sử dụng webkit. Điều này có nghĩa là bạn có thể sử dụng CSS và thậm chí Javascript để thao tác nội dung trang trong khi nó đang được hiển thị. Ví dụ: bạn có thể đo hình ảnh đối với chế độ xem dự kiến, như được hiển thị, sau đó thay đổi kích thước khi thích hợp. Tôi sẽ không đảm bảo chất lượng của thay đổi kích cỡ, tất nhiên ... – Charles

+0

Phiên bản DOMPDF là gì? Tôi đã có một vấn đề tương tự và phiên bản beta mới nhất đã làm các trick cho tôi. –

+0

Đây là phiên bản 0.6.0 beta 3 mới nhất nhưng tôi sẽ cố gắng kéo phiên bản mới nhất tuyệt đối từ github. –

Trả lời

4

Nó sẽ cho tôi nhiều hơn nữa hữu ích nếu bạn gửi bạn html và css ... Got hai điều trong tâm trí:

Lựa chọn # 1

Cố gắng quấn của bạn hình ảnh trong DIV bổ sung và đặt rõ ràng quy tắc chiều rộng và tràn.

Lựa chọn # 2

Trước khi tôi còn là một fan hâm mộ lớn của dompdf nhưng sau khi phát hiện wkhtmltopdf bao giờ nhìn lại. wkhtmltopdf là một công cụ phi thường được thực hiện đúng công việc. Để thử giải pháp này, hãy làm như sau:

  1. Tải xuống nhị phân tĩnh từ project home page, kiến ​​trúc cụ thể để chọn đúng ... bạn có thể tải xuống cả hai; vào thời gian chạy, phát hiện kiến ​​trúc và tải tệp nhị phân thích hợp
  2. Đặt tệp vào một số thư mục có thể truy cập bởi dự án của bạn, ví dụ:
    /path/to/my/proj/bin/wkhtmltopdf
  3. Chạy tập lệnh và tài liệu html chung của bạn; lưu nó vào một số tập tin tmp
    file_put_contents('/tmp/myfile.html', $html);
  4. Chạy lệnh chuyển đổi
    shell_exec('/path/to/my/proj/bin/wkhtmltopdf /tmp/myfile.html /tmp/myfile.pdf')
  5. Nhận nội dung của pdf được tạo ra, tiêu đề thay đổi phản ứng và máy chủ tập tin:
    header('Content-Type: application/pdf');

    echo file_get_contents('/tmp/myfile.pdf');

+0

Trao đổi với wkhtmltopdf đã làm các trick. Cảm ơn Alex. –

1

Tôi không biết cách hiển thị hình ảnh, nhưng bạn có thể yêu cầu dompdf chia nhỏ các trang sau hoặc trước một phần tử nhất định. Ví dụ:

<div style='page-break-after:always;'> 
    <img src="PATH_TO_IMAGE" /> 
</div> 
+0

Khi nào trang sẽ bị ngắt? nếu chứa 100 hình ảnh. tôi cần phải phá vỡ nếu tràn div hoặc tràn tờ A4. – 151291

Các vấn đề liên quan