2012-02-16 22 views
5

Tôi muốn tạo một trang web có cùng sự xuất hiện của Microsoft Word hoặc Acrobat Reader khi mức thu phóng nhỏ và nó hiển thị các trang song song với trang đường viền.Mô phỏng tài liệu nhiều trang trong CSS3

Điều tôi không biết phải làm là định nghĩa một paperborder có kích thước cố định và ném nội dung bên trong nó (sẽ là một số biến của các phần tử khối html) và làm cho các phần tử này "chảy" từ một trang cho người khác, tạo nhiều trang khi cần với các ngắt trang thích hợp. Điều này được thiết kế để mô phỏng đầu ra được in, để tạo mẫu thử nhanh về thiết kế. Một điều gì đó trong tâm trí của tôi nói javascript là cần thiết, nhưng vì kiến ​​thức của tôi về javascript là gần bằng không, và tôi muốn hầu như không học CSS3 thủ thuật bố trí, CSS tinh khiết sẽ được ưa thích (mặc dù giải pháp JS sẽ là một lựa chọn tốt đẹp).

Một tài liệu trang duy nhất hiện nay là như sau:

<!DOCTYPE html> 
<html lang="pt-br" xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta charset="UTF-8" /> 
     <title>Relatório Html</title> 
     <style type="text/css"> 
      html, body { 
       margin:0; 
       padding:0; 
      } 

      body { 
       background-color: #aaa; 
      } 

      .paperpage { 
       position: absolute; 
       width: 600px; 
       padding: 50px 30px 40px 30px; 
       margin-left: -320px; 
       left: 50%; 
       top:10px; 
       bottom:10px; 
       background-color: white; 
       box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); 
      } 

      #innerpage { 
       position: relative; 
       margin: 0 auto; 
       height: auto !important; 
       min-height: 100%; 
      } 
     </style> 
    </head> 

    <body> 
    <div class="paperpage"> 
     <div id="innerpage"> 
      <p>Some Content</p> 
     </div> 
    </div> 
    </body> 
</html> 

Trả lời

2

Đây không phải là dễ dàng để làm trong CSS3 hoặc thậm chí trong Javascript. Google Docs, thực hiện điều này, có công cụ riêng để tính toán các trang. Điều đó nói rằng, có một bản dự thảo rất sớm được đăng của CSS3 Regions Module mà sẽ làm cho điều này đơn giản hơn rất nhiều.

Lý thuyết chung ở đây là đo kích thước của văn bản mỗi khi được cập nhật và tính toán lại các trang cần thiết, điền nội dung phù hợp. Như bạn có thể tưởng tượng, đây không phải là điều dễ nhất trên thế giới để làm. Có rất nhiều cách khác nhau để đo nội dung và những thứ như thế này, và nếu bạn thực sự tận tâm và đi sâu vào, tôi khuyên bạn nên kiểm tra nhiều câu hỏi ở đây liên quan đến đo kích thước văn bản và phần tử trong javascript.

0

Cách tốt nhất mà chúng tôi đã thực hiện để có loại hiển thị này là thực sự có màn hình ở định dạng PDF và hiển thị nó bằng PDFObject hoặc tốt hơn, trực tiếp trong phần tử <object>. Vì trình duyệt sẽ trực tiếp sử dụng Adobe hoặc phương pháp hiển thị được tích hợp sẵn, nó sẽ giống hệt với những gì bạn đang tìm kiếm, mà không cần nỗ lực thiết kế nó.

Ví dụ:

<object 
    data="/clients/<%= client.id %>/reports/print?preview=true" 
    type="application/pdf" width="100%" height="98%"> 
    <p>Your browser does not support embedded PDFs.</p> 
</object> 

Chúng tôi sử dụng wkhtmltopdf cho tất cả các HTML của chúng tôi để chuyển đổi PDF. Nó tương đối đơn giản để sử dụng và chúng tôi đã sử dụng nó trên các tài liệu HTML cực kỳ phức tạp với tất cả các loại kỹ thuật CSS với thành công lớn.

Theo kinh nghiệm của tôi, nó sẽ giúp bạn tiết kiệm nhiều thời gian hơn khi hiển thị theo cách này so với mã hóa một phương thức hiển thị CSS cụ thể miễn là bạn không cần chỉnh sửa tài liệu trong chế độ xem đó.

Best of luck!

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