2012-03-06 44 views
6

Tôi có một trang web tôi đang xây dựng lấy dữ liệu (tên của người đó) từ một biểu mẫu và đăng nó vào một "ghi chú" được tùy chỉnh trong bảng trên trang tiếp theo. Tôi muốn người dùng sau đó có thể lưu "ghi chú" của họ làm hình ảnh với tên tùy chỉnh của họ trên đó. Có cách nào để lưu TABLE HTML TABLE dưới dạng PNG không? Có thể chụp ảnh màn hình của một tọa độ cụ thể trên một trang web?Lưu bảng HTML dưới dạng hình ảnh

Nếu không có cách nào để hiển thị nội dung PHP đã đăng từ biểu mẫu trong canvas HTML?

Mọi trợ giúp đều tuyệt vời. Tôi đang ở trên đầu tôi một chút ngay bây giờ.

+2

có xem xét các chức năng hình ảnh được xây dựng trong php: http://nz.php.net/manual/en/refs.utilspec.image.php –

Trả lời

0

khả thi giải pháp

  • sử dụng FPDF để tạo pdf từ html (bảng)
  • ImageMagick sử dụng để chuyển đổi pdf để png
0

Bạn có thể sử dụng giống như html2ps

0

Bạn có thể cũng sử dụng Xvfb. Đó là một gói linux. Nó là viết tắt của "X-window Virtual Frame Buffer" (nếu bạn đang tự hỏi tại sao trên trái đất nó lại có một cái tên bí truyền).

Điều gì sẽ làm, là tải trang, thực thi bất kỳ JavaScript nào và áp dụng các kiểu tạo kiểu khác nhau từ CSS, tất cả trong bộ đệm khung của máy chủ. Sau đó, bạn có thể lưu hình ảnh.

Xvfb có thể sẽ không khả dụng trên hầu hết các dịch vụ lưu trữ được chia sẻ, tuy nhiên, nếu điều đó không quan trọng thì đó sẽ là giải pháp khả thi.

2

Khi bạn có thể hiển thị HTML bằng nhiều công cụ khác nhau, bạn không thể chắc chắn rằng những công cụ đó sẽ hiển thị HTML giống như cách trình duyệt của bạn hiển thị.

Nếu mục tiêu cuối cùng của bạn là để tạo ra một hình ảnh với văn bản trên nó, sau đó chúng ta hãy giải quyết vấn đề đó thay vì cố gắng để làm cho giải pháp bạn đề nghị công việc.

Hãy xem hàm imagettftext() của PHP. Nó chứa một ví dụ Ví dụ # 1 tạo hình ảnh nhỏ, đơn giản từ văn bản có thể được lưu trữ trong bất kỳ biến nào ... bao gồm biến biểu mẫu.

Bằng cách sử dụng ví dụ này và thêm một số khác là PHP's GD functions, bạn có thể tạo một bản sao hoàn chỉnh của bảng và đảm bảo nó giống chính xác theo cách bạn muốn, thay vì cách html2ps hoặc một số công cụ khác hiển thị .

<?php 
// Set the content-type 
header('Content-Type: image/png'); 

// Create the image 
$im = imagecreatetruecolor(400, 30); 

// Create some colors 
$white = imagecolorallocate($im, 255, 255, 255); 
$grey = imagecolorallocate($im, 128, 128, 128); 
$black = imagecolorallocate($im, 0, 0, 0); 
imagefilledrectangle($im, 0, 0, 399, 29, $white); 

// The text to draw 
$text = isset($_POST['name']) ? $_POST['name'] : "name"; 
// Replace path by your own font path 
$font = 'arial.ttf'; 

// Add some shadow to the text 
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text); 

// Add the text 
imagettftext($im, 20, 0, 10, 20, $black, $font, $text); 

// Using imagepng() results in clearer text compared with imagejpeg() 
imagepng($im); 
imagedestroy($im); 
?> 

Dưới đây là sản lượng mẫu được tạo ra bởi các tập lệnh trên:

enter image description here

Lưu ý rằng bạn sẽ cần cung cấp arial.ttf theo hướng dẫn tại liên kết ở trên.

Nếu mọi thứ không hoạt động, hãy tìm lỗi trên màn hình và trong nhật ký lỗi máy chủ web của bạn FIRST, trước khi theo dõi tại đây. Có thể mô-đun GD của PHP không được cài đặt trên máy chủ web của bạn. Nếu trường hợp này xảy ra, bạn nên kiểm tra với quản trị viên máy chủ để đảm bảo những gì bạn cần có sẵn cho bạn.

+0

Tôi nghĩ rằng việc thực hiện phía máy chủ là quá mức cần thiết cho tác vụ này, có thể được thực hiện theo cách đơn giản hơn nhiều với thư viện được đề xuất bởi @Anber. Ví dụ ở đây http://jsfiddle.net/arthurcamara/6phhb5g9 –

+0

@ArthurCamara - Tôi đồng ý làm điều này phía khách hàng làm cho một giải pháp sạch hơn, nhưng câu hỏi của OP là cụ thể về cách tạo ra một PNG trong PHP. – ghoti

+0

Tôi nghĩ câu hỏi của anh ta là tạo ra PNG với bảng. và "Nếu không có cách nào để hiển thị PHP đã đăng". Vì vậy, PHP là một lựa chọn thứ 2, vì nó phải là :) –

2

Bạn có thể thử this JS library ở phía máy khách.

+0

Với tôi đây là một giải pháp sạch hơn nhiều là tốt. Ví dụ JSFiddle với thư viện được đề xuất (html2canvas) ở đây: https://jsfiddle.net/arthurcamara/6phhb5g9/ –

+0

Đó là một thư viện hữu ích. Nó cũng sẽ là tuyệt vời nếu câu trả lời này [ngữ cảnh được cung cấp] (http://stackoverflow.com/help/how-to-answer) cho liên kết và giải quyết yêu cầu được nêu trong câu hỏi: "* Tôi muốn người dùng sau đó có thể lưu "ghi chú" của họ làm hình ảnh với tên tùy chỉnh của họ trên đó. * " – ghoti

+0

Đồng ý với @ghoti :) Thêm ngữ cảnh và câu trả lời sâu hơn sẽ là tuyệt vời. Một lưu ý với tên tùy chỉnh của họ trên hình ảnh cũng có thể với canvas, do đó, nó sẽ không có vấn đề đến với một giải pháp phía khách hàng cho việc này. –

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