From 12ecdd71592eccf7bdb6214edbc7318246469c1c Mon Sep 17 00:00:00 2001 From: yzrh Date: Fri, 14 Aug 2020 22:04:26 +0000 Subject: Initial commit. --- src/cnki.h | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/cnki.h (limited to 'src/cnki.h') diff --git a/src/cnki.h b/src/cnki.h new file mode 100644 index 0000000..6e3565f --- /dev/null +++ b/src/cnki.h @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2020, yzrh + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +#define ADDRESS_HEAD 0x0000 + +#define ADDRESS_CAJ_PAGE 0x0010 +#define ADDRESS_CAJ_OUTLINE 0x0110 +#define ADDRESS_CAJ_BODY 0x0014 + +#define ADDRESS_HN_PAGE 0x0090 +#define ADDRESS_HN_OUTLINE 0x0158 + +#define ADDRESS_KDH_BODY 0x00fe + +#define KEY_KDH "FZHMEI" +#define KEY_KDH_LENGTH 6 + +typedef struct _file_stat_t { + char type[4]; + int32_t page; + int32_t outline; +} file_stat_t; + +typedef struct _object_outline_t { + char title[256]; /* Starting at file_stat_t->outline + 4 */ + char hierarchy[24]; + char page[12]; + char text[12]; + int32_t depth; + struct _object_outline_t *next; +} object_outline_t; + +typedef struct _object_outline_tree_t { + int id; + struct _object_outline_t *item; + struct _object_outline_tree_t *up; + struct _object_outline_tree_t *left; + struct _object_outline_tree_t *right; +} object_outline_tree_t; + +typedef enum _nh_code { + CCITTFAX, + DCT_0, + DCT_1, + JBIG2, + JPX +} nh_code; + +typedef struct _object_nh_t { + int32_t address; /* Starting at end of object_outline_t */ + int32_t size; + int16_t page[2]; + int32_t zero[2]; + char *text; + int32_t image_format; /* nh_code */ + int32_t image_address; + int32_t image_size; + char *image; + struct _object_nh_t *next; +} object_nh_t; + +typedef struct _cnki_t { + int stat; + int size_buf; + FILE *fp_i; + FILE *fp_o; + file_stat_t *file_stat; + object_outline_t *object_outline; + object_nh_t *object_nh; +} cnki_t; + +/* cnki_pdf.c */ +int cnki_pdf(cnki_t **param); + +/* cnki_outline_tree.c */ +int cnki_outline_tree(object_outline_tree_t **outline_tree, + object_outline_t **outline, int *ids); + +/* cnki_xml.c */ +int cnki_xml(char **xml, FILE **fp); -- cgit v1.2.3