2010-10-11 27 views
5

Tôi chuyển đổi tệp HTML sang định dạng PDF bằng cách sử dụng The Flying Saucer Project. Đây là các tài liệu chứa thông tin lặp đi lặp lại - cơ sở và địa chỉ của chúng, hãy gọi chúng là các phần tử. Ở cuối tài liệu tôi cần tạo chỉ mục. Mỗi mục nhập chỉ mục phải có số trang đề cập đến trang nơi phần tử được thêm vào. Số lượng yếu tố có thể vừa trên một trang sẽ thay đổi.Làm thế nào để tạo TOC hoặc chỉ mục bằng cách sử dụng dự án Flying Saucer?

Làm cách nào để tạo chỉ mục tài liệu? Hoặc làm thế nào tôi có thể nhận được thông báo trong khi thư viện thêm một số loại phần tử HTML vào tài liệu PDF?

Trả lời

1

Tôi đã tìm thấy câu trả lời có thể có. Bạn phải bắt đầu chơi với lớp học org.xhtmlrenderer.render.BlockBox. Phương thức public void layout(LayoutContext c, int contentStart) được sử dụng để đặt đúng bất kỳ phần tử HTML nào trong tài liệu PDF. Phương pháp này lặp đi lặp lại thông qua một phần tử một vài lần. Sau lần lặp cuối cùng, một số trang hợp lệ được thiết lập.

Nếu bạn đánh dấu một yếu tố bạn muốn đánh chỉ mục, bằng cách ví dụ sử dụng một thuộc tính lớp, sau đó bạn có thể nhận được một số trang sử dụng mã sau đây:

String cssClass = getElement().getAttribute("class"); 
if(!cssClass.equals("index")) { 
    int pageNumber = c.getRootLayer().getPages().size(); 
    /* ... */ 
} 
4

Hãy thử điều này:

Trong CSS

ol.toc a::after { content: leader('.') target-counter(attr(href), page);} 

Trong HTML

<h1>Table of Contents</h1> 
<ol class='toc'> 
<li><a href=\"#chapter1\">Loomings</a></li> 
<li><a href=\"#chapter2\">The Carpet-Bag</a></li> 
<li><a href=\"#chapter3\">The Spouter-Inn</a></li> 
</ol> 

<div id="chapter1">Loomings</div> 
Các vấn đề liên quan