sig
  type rotation = Rotate0 | Rotate90 | Rotate180 | Rotate270
  val int_of_rotation : Pdfpage.rotation -> int
  val rotation_of_int : int -> Pdfpage.rotation
  type t = {
    content : Pdf.pdfobject list;
    mediabox : Pdf.pdfobject;
    resources : Pdf.pdfobject;
    rotate : Pdfpage.rotation;
    rest : Pdf.pdfobject;
  }
  val blankpage : Pdfpaper.t -> Pdfpage.t
  val custompage : Pdf.pdfobject -> Pdfpage.t
  val pages_of_pagetree : Pdf.t -> Pdfpage.t list
  val add_pagetree : Pdfpage.t list -> Pdf.t -> Pdf.t * int
  val add_root : int -> (string * Pdf.pdfobject) list -> Pdf.t -> Pdf.t
  val endpage : Pdf.t -> int
  val endpage_fast : Pdf.t -> int
  val page_object_number : Pdf.t -> int -> int option
  val renumber_pages : Pdf.t -> Pdfpage.t list -> Pdfpage.t list
  val change_pages :
    ?matrices:(int * Pdftransform.transform_matrix) list ->
    ?changes:(int * int) list -> bool -> Pdf.t -> Pdfpage.t list -> Pdf.t
  val pdf_of_pages :
    ?retain_numbering:bool ->
    ?process_struct_tree:bool -> Pdf.t -> int list -> Pdf.t
  val rectangle_of_paper : Pdfpaper.t -> Pdf.pdfobject
  val shortest_unused_prefix : Pdf.t -> string
  val add_prefix : Pdf.t -> string -> unit
  val protect : Pdfops.t list -> Pdfops.t list
  val prepend_operators :
    Pdf.t -> Pdfops.t list -> ?fast:bool -> Pdfpage.t -> Pdfpage.t
  val postpend_operators :
    Pdf.t -> Pdfops.t list -> ?fast:bool -> Pdfpage.t -> Pdfpage.t
  val pagenumber_of_target :
    ?fastrefnums:(int, int) Stdlib.Hashtbl.t -> Pdf.t -> Pdfdest.t -> int
  val target_of_pagenumber : Pdf.t -> int -> Pdfdest.t
  val minimum_valid_pdf : unit -> Pdf.t
  val process_xobjects :
    Pdf.t ->
    Pdfpage.t ->
    (Pdf.t -> Pdf.pdfobject -> Pdf.pdfobject list -> Pdf.pdfobject list) ->
    unit
  val combine_pdf_resources :
    Pdf.t -> Pdf.pdfobject -> Pdf.pdfobject -> Pdf.pdfobject
  val ppstub :
    ('-> '-> 'c) -> '-> '-> 'c * 'a * Pdftransform.transform_matrix
end