From 844b58f78bb99505291276784e4a388bfcc0ad6b Mon Sep 17 00:00:00 2001 From: John Whitington Date: Sun, 16 Jan 2022 16:30:36 +0000 Subject: [PATCH] Add JSON annotations function for cpdflib --- cpdfannot.ml | 7 +++++++ cpdfannot.mli | 3 +++ 2 files changed, 10 insertions(+) diff --git a/cpdfannot.ml b/cpdfannot.ml index e82de61..85363fc 100644 --- a/cpdfannot.ml +++ b/cpdfannot.ml @@ -94,6 +94,13 @@ let get_annotations encoding pdf = pages (ilist 1 (length pages))) +let get_annotations_json pdf = + let module J = Cpdfyojson.Safe in + let pages = Pdfpage.pages_of_pagetree pdf in + let pagenums = indx pages in + let json = `List (flatten (map2 (annotations_json_page pdf) pages pagenums)) in + Pdfio.bytes_of_string (J.to_string json) + (* Equalise the page lengths of two PDFs by chopping or extending the first one. *) let equalise_lengths a b = diff --git a/cpdfannot.mli b/cpdfannot.mli index cc76d26..7a13cd3 100644 --- a/cpdfannot.mli +++ b/cpdfannot.mli @@ -6,6 +6,9 @@ val list_annotations : json:bool -> Cpdfmetadata.encoding -> Pdf.t -> unit (** Return the annotations as a (pagenumber, content) list *) val get_annotations : Cpdfmetadata.encoding -> Pdf.t -> (int * string) list +(** Get annotations as JSON *) +val get_annotations_json : Pdf.t -> Pdfio.bytes + (** Copy the annotations on a given set of pages from a to b. b is returned. *) val copy_annotations : int list -> Pdf.t -> Pdf.t -> Pdf.t