文件判别:

  • pdf(%PDF-,%FDF-)
  • xps-doc (压缩文件)
  • svg (<svg 开头)
  • cbz (压缩文件)
  • img (图形文件)
  • html (<!doctype html 或者 <html)
  • office (压缩文件)
  • epub (压缩文件)
  • gz

流程

  • 识别文件类型

  • 使用特定文件的open函数

    • 读取版本信息
    • 读取xref信息(文档尾部xref,位置由startxref指定)
    • 是否加密
    • 。。。
  • 获取页数

    • 获取章节,pdf只有一个章节
    • 获取章节页数
  • drawrange

    • fz_parse_page_range 获取页数范围
    • drawpage - fz_load_page - fz_load_chapter_page - load_page
  • pdf_load_page_tree_internal 加载页对象

    • pdf_load_page_tree_imp
  • fz_run_page

    • fz_run_page_contents -
    • fz_run_page_annots
    • fz_run_page_widgets

结构fz_stream

  • fz_file_stream state
    流的文件信息,包括文件句柄(file),文件名(filename),缓存(buffer 长度4096)
  • unsigned char *rp;
    读指针
  • unsigned char *wp;
    写执政
  • int64_t pos;
    文件句柄当前位置

结构 fz_document

定义文档的各种处理函数(比如密码处理,页数统计等)

  • fz_page *open; 当前已打开页列表

接口 pdf_document

  • file_size 文件大小

    fz_stream *fz_open_file_ptr()

    基于文件句柄生成fz_stream格式,绑定文件信息和读取函数(next_file)、

pdf_process_stream 处理流

int next_file()

从文件句柄中度文件到buffer中,
返回读到的一个直接,同时读指针加一

文档更新时间: 2025-08-07 13:54   作者:方杰