more
This commit is contained in:
parent
bb5fae55d2
commit
ef0d423cf3
|
@ -2973,13 +2973,13 @@ let typeset_table_of_contents ~font pdf =
|
|||
in
|
||||
Pdfpaper.make Pdfunits.PdfPoint width height
|
||||
in
|
||||
let labels = Pdfpagelabels.read pdf in
|
||||
let lines =
|
||||
let refnums = Pdf.page_reference_numbers pdf in
|
||||
let fastrefnums = hashtable_of_dictionary (combine refnums (indx refnums)) in
|
||||
map
|
||||
(fun mark ->
|
||||
let label =
|
||||
let labels = Pdfpagelabels.read pdf in
|
||||
let pnum = Pdfpage.pagenumber_of_target ~fastrefnums pdf mark.Pdfmarks.target in
|
||||
try Pdfpagelabels.pagelabeltext_of_pagenumber pnum labels with Not_found -> string_of_int pnum
|
||||
in
|
||||
|
@ -3001,11 +3001,18 @@ let typeset_table_of_contents ~font pdf =
|
|||
Cpdftype.Font f] @ flatten lines)
|
||||
in
|
||||
let original_pages = Pdfpage.pages_of_pagetree pdf in
|
||||
let changes =
|
||||
let toc_pages_len = length toc_pages in
|
||||
map (fun n -> (n, n + toc_pages_len)) (indx original_pages)
|
||||
let changes = map (fun n -> (n, n + toc_pages_len)) (indx original_pages) in
|
||||
let pdf = Pdfpage.change_pages ~changes true pdf (toc_pages @ original_pages) in
|
||||
let label =
|
||||
{Pdfpagelabels.labelstyle = NoLabelPrefixOnly;
|
||||
Pdfpagelabels.labelprefix = None;
|
||||
Pdfpagelabels.startpage = 1;
|
||||
Pdfpagelabels.startvalue = 1}
|
||||
in
|
||||
Pdfpage.change_pages ~changes true pdf (toc_pages @ original_pages)
|
||||
let labels' = label::map (fun l -> {l with Pdfpagelabels.startpage = l.Pdfpagelabels.startpage + toc_pages_len}) labels in
|
||||
Pdfpagelabels.write pdf labels';
|
||||
pdf
|
||||
|
||||
(* Main function *)
|
||||
let go () =
|
||||
|
|
Loading…
Reference in New Issue