Hướng dẫn xhtml2pdf footer - chân trang xhtml2pdf

Tôi đang gặp một số khó khăn khi có một chân trang xuất hiện dưới dạng một khung trên trang đầu tiên của tài liệu PISA và như một khung khác trên mỗi trang khác. Tôi đã cố gắng điều chỉnh ý tưởng cuối cùng từ đây, nhưng không có may mắn.

có khả năng làm cái này không?


  
This is a footer
3 dường như không phải là điều đúng ở đây vì tài liệu có một bảng dài có thể [hoặc không] chảy trên nhiều trang.

  
This is a footer
4 cộng với khung hình chỉ có một trang đầu tiên đầy hứa hẹn, mặc dù tôi không chắc chắn làm thế nào để sử dụng chính xác điều này.

Hiện tại tôi đã [Sned For Breevity]:


  @page {
    margin: 1cm;
    margin-bottom: 2.5cm;
    @frame footer {
      -pdf-frame-content: footerFirst;
      -pdf-frame-border: 1;
      bottom: 2cm;
      margin-left: 1cm;
      margin-right: 1cm;
      height: 1cm;
   }
   @frame footer {
      -pdf-frame-content: footerOther;
      bottom: 2cm;
      margin-left: 1cm;
      margin-right: 1cm;
      height: 1cm;
}


  
This is a footer

Điều này đặt cùng một chân trang trên mỗi trang. Tôi cần cùng một không gian còn lại trên mỗi trang liên tiếp, nhưng không có nội dung trong khung.

PDF so với HTML

Trước khi chúng tôi thảo luận về cách xác định bố cục trang với các bảng kiểu XHTML2PDF, nó sẽ giúp hiểu được một số khác biệt vốn có giữa PDF và HTML.

PDF được thiết kế đặc biệt xung quanh các trang có chiều rộng và chiều cao cụ thể. Các phần tử trang PDF [như đoạn văn, bảng và hình ảnh] được định vị ở tọa độ tuyệt đối [X, Y].

Ghi chú

Trong khi các tệp PDF thực sự sử dụng [0,0] để biểu thị phía dưới bên trái của trang, XHTML2PDF sử dụng [0,0] để biểu thị phần trên cùng bên trái của trang, một phần để duy trì sự tương đồng với hệ tọa độ HTML.

HTML, tự nó, không có khái niệm phân trang hoặc các trang có chiều rộng và chiều cao cụ thể. Một trang HTML có thể rộng bằng chiều rộng trình duyệt của bạn [và thậm chí rộng hơn] và nó có thể dài như chính nội dung trang. Các phần tử trang HTML được định vị trong mối quan hệ với nhau và có thể thay đổi khi cửa sổ trình duyệt được thay đổi kích thước.

Để kết nối sự khác biệt giữa HTML và PDF, XHTML2PDF sử dụng khái niệm trang và khung. Các trang xác định kích thước, định hướng và lề của các trang. Khung là các vùng hình chữ nhật với mỗi trang.Pages and Frames. Pages define the size, orientation and margins of pages. Frames are rectangular regions with in each page.

Vị trí khung được chỉ định trong tọa độ tuyệt đối [X, Y], trong khi nội dung khung được sử dụng để lưu lượng nội dung HTML bằng cách sử dụng các quy tắc định vị tương đối của HTML. Đây là bản chất mà từ đó sức mạnh của XHTML2PDF bắt nguồn.Frame location is specified in absolute [X,Y] coordinates, while the Frame content is used to flow HTML content using the relative positioning rules of HTML. This is the essence from which the power of xhtml2pdf stems.

Nội dung HTML sẽ bắt đầu in trong khung nội dung có sẵn đầu tiên. Khi khung đầu tiên được lấp đầy, nội dung sẽ tiếp tục in trong khung tiếp theo và hình tiếp theo, v.v. cho đến khi toàn bộ nội dung HTML được in.

Xác định bố cục trang

XHTML2PDF tạo điều kiện chuyển đổi nội dung HTML thành tài liệu PDF bằng cách chảy nội dung HTML liên tục thông qua một hoặc nhiều trang bằng cách sử dụng các trang và khung. Một trang đại diện cho một bố cục trang trong tài liệu PDF. Một khung biểu thị một vùng hình chữ nhật trong một trang mà nội dung HTML sẽ chảy.

Trang

Đối tượng @page xác định một mẫu trang bằng cách xác định các thuộc tính của một trang, chẳng hạn như loại trang [chữ cái hoặc A4], hướng trang [chân dung hoặc cảnh quan] và lề trang. Định nghĩa @page tuân theo quy ước biểu định kiểu của các bảng kiểu CSS thông thường:@page object defines a Page template by defining the properties of a page, such as page type [letter or A4], page orientation [portrait or landscape], and page margins. The @page definition follows the style sheet convention of ordinary CSS style sheets:


    @page {
        size: letter landscape;
        margin: 2cm;
    }

Khung

Đối tượng @Frame xác định vị trí và kích thước của vùng hình chữ nhật trong một trang. Đối tượng @page có thể giữ một hoặc nhiều đối tượng @Frame. Định nghĩa @Frame tuân theo quy ước biểu định kiểu của các bảng kiểu CSS thông thường:@frame object defines the position and size of rectangular region within a page. A @page object can hold one or more @frame objects. The @frame definition follows the style sheet convention of ordinary CSS style sheets:

Ở đây, một định nghĩa của một mẫu trang với một khung nội dung. Nó sử dụng kích thước trang chữ cái là 612pt x 792pt.


    @page {
        size: letter portrait;
        @frame content_frame {
            left: 50pt;
            width: 512pt;
            top: 50pt;
            height: 692pt;
            -pdf-frame-border: 1;    /* for debugging the layout */
        }
    }

Điều này sẽ dẫn đến bố cục trang sau:

+-page----------------+
|                     |
|  +-content_frame-+  |
|  |               |  |
|  |               |  |
|  |               |  |
|  |               |  |
|  +---------------+  |
|                     |
+---------------------+

Ghi chú

Trong khi các tệp PDF thực sự sử dụng [0,0] để biểu thị phía dưới bên trái của trang, XHTML2PDF sử dụng [0,0] để biểu thị phần trên cùng bên trái của trang, một phần để duy trì sự tương đồng với hệ tọa độ HTML.

HTML, tự nó, không có khái niệm phân trang hoặc các trang có chiều rộng và chiều cao cụ thể. Một trang HTML có thể rộng bằng chiều rộng trình duyệt của bạn [và thậm chí rộng hơn] và nó có thể dài như chính nội dung trang. Các phần tử trang HTML được định vị trong mối quan hệ với nhau và có thể thay đổi khi cửa sổ trình duyệt được thay đổi kích thước.

Để kết nối sự khác biệt giữa HTML và PDF, XHTML2PDF sử dụng khái niệm trang và khung. Các trang xác định kích thước, định hướng và lề của các trang. Khung là các vùng hình chữ nhật với mỗi trang.Static Frames to define content that remains the same across different pages [like headers and footers], and uses Content Frames to position the to-be-converted HTML content.

Vị trí khung được chỉ định trong tọa độ tuyệt đối [X, Y], trong khi nội dung khung được sử dụng để lưu lượng nội dung HTML bằng cách sử dụng các quy tắc định vị tương đối của HTML. Đây là bản chất mà từ đó sức mạnh của XHTML2PDF bắt nguồn.

Nội dung HTML sẽ bắt đầu in trong khung nội dung có sẵn đầu tiên. Khi khung đầu tiên được lấp đầy, nội dung sẽ tiếp tục in trong khung tiếp theo và hình tiếp theo, v.v. cho đến khi toàn bộ nội dung HTML được in.

Ví dụ với 2 khung tĩnh và 1 khung nội dung




    @page {
        size: a4 portrait;
        @frame header_frame {           /* Static Frame */
            -pdf-frame-content: header_content;
            left: 50pt; width: 512pt; top: 50pt; height: 40pt;
        }
        @frame content_frame {          /* Content Frame */
            left: 50pt; width: 512pt; top: 90pt; height: 632pt;
        }
        @frame footer_frame {           /* Another static Frame */
            -pdf-frame-content: footer_content;
            left: 50pt; width: 512pt; top: 772pt; height: 20pt;
        }
    }




    
    Lyrics-R-Us

    
    [c] - page 
        of 
    

    
    To PDF or not to PDF


Trong ví dụ trên, các thẻ dành riêng cho nhà cung cấp


  
This is a footer
7 và

  
This is a footer
8 được sử dụng để hiển thị số trang và tổng số trang. Ví dụ này sẽ tạo ra tài liệu PDF sau:

+-page------------------+
| +-header_frame------+ |
| | Lyrics-R-Us       | |
| +-------------------+ |
| +-content_frame-----+ |
| | To PDF or not to  | |
| | PDF               | |
| |                   | |
| |                   | |
| +-------------------+ |
| +-footer_frame------+ |
| | [c] - page 1 of 1 | |
| +-------------------+ |
+-----------------------+

# Developer's note:
# To avoid a problem where duplicate numbers are printed,
# make sure that these tags are immediately followed by a newline.

Nội dung HTML chảy qua các khung nội dung

Khung nội dung được sử dụng để định vị nội dung HTML trên nhiều trang. Nội dung HTML sẽ bắt đầu in trong khung nội dung có sẵn đầu tiên. Khi khung đầu tiên được lấp đầy, nội dung sẽ tiếp tục in trong khung tiếp theo và hình tiếp theo, v.v. cho đến khi toàn bộ nội dung HTML được in. Khái niệm này được minh họa bằng ví dụ dưới đây.

Mẫu trang ví dụ với tiêu đề, hai cột và chân trang




    @page {
        size: letter portrait;
        @frame header_frame {           /* Static frame */
            -pdf-frame-content: header_content;
            left: 50pt; width: 512pt; top: 50pt; height: 40pt;
        }
        @frame col1_frame {             /* Content frame 1 */
            left: 44pt; width: 245pt; top: 90pt; height: 632pt;
        }
        @frame col2_frame {             /* Content frame 2 */
            left: 323pt; width: 245pt; top: 90pt; height: 632pt;
        }
        @frame footer_frame {           /* Static frame */
            -pdf-frame-content: footer_content;
            left: 50pt; width: 512pt; top: 772pt; height: 20pt;
        }
    }



    Lyrics-R-Us
    [c] - page 
        of 
    
    Old MacDonald had a farm. EIEIO.
    And on that farm he had a cow. EIEIO.
    With a moo-moo here, and a moo-moo there.
    Here a moo, there a moo, everywhere a moo-moo.


Nội dung HTML sẽ chảy từ trang1.col1 đến trang1.col2 đến trang2.col1, v.v. Đây là tài liệu PDF kết quả có thể trông như thế nào:

+-------------------------------+    +-------------------------------+
| Lyrics-R-Us                   |    | Lyrics-R-Us                   |
|                               |    |                               |
| Old MacDonald   farm he had a |    | a moo-moo       everywhere a  |
| had a farm.     cow. EIEIO.   |    | there.          moo-moo.      |
| EIEIO.          With a moo-   |    | Here a moo,                   |
| and on that     moo here, and |    | there a moo,                  |
|                               |    |                               |
| [c] - page 1 of 2             |    | [c] - page 2 of 2             |
+-------------------------------+    +-------------------------------+

Khái niệm nâng cao

Giữ văn bản và bảng cùng nhau

Bạn có thể ngăn chặn một khối văn bản được chia trên các khung riêng biệt thông qua việc sử dụng thuộc tính


  
This is a footer
9 dành riêng cho nhà cung cấp.

Ở đây, một ví dụ trong đó các đoạn và bảng được giữ lại với nhau cho đến khi một đoạn phân tách xuất hiện trong luồng nội dung HTML.


  
This is a footer
0

Được đặt tên trang trang

Các mẫu trang có thể được đặt tên bằng cách cung cấp tên sau từ khóa @page


  
This is a footer
1

Chuyển đổi giữa nhiều mẫu trang

Tài liệu PDF đôi khi yêu cầu bố cục trang khác nhau trên các phần khác nhau của tài liệu. XHTML2PDF cho phép bạn xác định nhiều mẫu @page và cách chuyển đổi giữa chúng bằng thẻ cụ thể của nhà cung cấp


    @page {
        size: letter landscape;
        margin: 2cm;
    }

0.

Như một minh họa, hãy xem xét ví dụ sau đây cho một trang tiêu đề với tỷ suất lợi nhuận 5cm lớn và các trang thông thường với tỷ suất lợi nhuận 2cm thông thường.


  
This is a footer
2

Bài Viết Liên Quan

Chủ Đề