sig
  val pdf_of_input :
    ?revision:int -> string option -> string option -> Pdfio.input -> Pdf.t
  val pdf_of_input_lazy :
    ?revision:int -> string option -> string option -> Pdfio.input -> Pdf.t
  val pdf_of_channel :
    ?revision:int ->
    ?source:string ->
    string option -> string option -> Stdlib.in_channel -> Pdf.t
  val pdf_of_channel_lazy :
    ?revision:int ->
    ?source:string ->
    string option -> string option -> Stdlib.in_channel -> Pdf.t
  val pdf_of_file :
    ?revision:int -> string option -> string option -> string -> Pdf.t
  val read_debug : bool Stdlib.ref
  val error_on_malformed : bool Stdlib.ref
  val debug_always_treat_malformed : bool Stdlib.ref
  val revisions : Pdfio.input -> int
  val what_encryption : Pdf.t -> Pdfwrite.encryption_method option
  val permissions : Pdf.t -> Pdfcrypt.permission list
  val is_linearized : Pdfio.input -> bool
  val read_header : Pdfio.input -> int * int
  val getuntil_white_or_delimiter : Pdfio.input -> char list
  val getuntil_white_or_delimiter_string : Pdfio.input -> string
  val getuntil : bool -> (char -> bool) -> Pdfio.input -> char list
  val ignoreuntil : bool -> (char -> bool) -> Pdfio.input -> unit
  val dropwhite : Pdfio.input -> unit
  val lex_name : Pdfio.input -> Pdfgenlex.t
  val lex_number : Pdfio.input -> Pdfgenlex.t
  val lex_string : Pdfio.input -> Pdfgenlex.t
  val lex_hexstring : Pdfio.input -> Pdfgenlex.t
  val lex_comment : Pdfio.input -> Pdfgenlex.t
  val lex_dictionary : bool -> Pdfio.input -> Pdfgenlex.t list
  val lex_stream_data : Pdfio.input -> int -> bool -> Pdfgenlex.t
  val parse : ?failure_is_ok:bool -> Pdfgenlex.t list -> int * Pdf.pdfobject
  val parse_single_object : string -> Pdf.pdfobject
  val string_of_lexeme : Pdfgenlex.t -> string
  val print_lexeme : Pdfgenlex.t -> unit
  val endpage : (Pdf.t -> int) Stdlib.ref
end