mirror of
				https://github.com/michaelrsweet/pdfio.git
				synced 2025-10-30 10:03:08 +01:00 
			
		
		
		
	Added two new fuctions to dict API
This commit is contained in:
		
							
								
								
									
										30
									
								
								pdfio-dict.c
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								pdfio-dict.c
									
									
									
									
									
								
							| @@ -524,6 +524,36 @@ pdfioDictIterateKeys( | ||||
|   } | ||||
| } | ||||
|  | ||||
| // | ||||
| // 'pdfioDictGetNumKeys()' - Get the number of keys on the selected dictionary | ||||
| // | ||||
|  | ||||
| size_t									// O - Number of keys | ||||
| pdfioDictGetNumKeys(pdfio_dict_t  *dict) // I - Dictionary | ||||
| { | ||||
| 	return (dict->num_pairs); | ||||
| } | ||||
|  | ||||
| // | ||||
| // 'pdfioDictGetKeyByIndex()' - Get name and type of a key by index from a dictionary | ||||
| // | ||||
| // Alternative form to enumerate the keys of a dictionary | ||||
|  | ||||
| bool								// O - Value | ||||
| pdfioDictGetKeyByIndex(pdfio_dict_t  *dict, // I - Dictionary | ||||
| 						size_t index,		// I - Index | ||||
| 						pdfio_dictKey_t *key) // I - struct pointer | ||||
| { | ||||
| if (index < dict->num_pairs) | ||||
|  { | ||||
|  	if (key){ | ||||
|  		key->key = dict->pairs[index].key; | ||||
|  		key->type = (pdfio_valtype_t **)(dict->pairs[index].value.type); | ||||
|  		return (true); | ||||
|  	} | ||||
|  } | ||||
|  return (false); | ||||
| } | ||||
|  | ||||
| // | ||||
| // '_pdfioDictRead()' - Read a dictionary from a PDF file. | ||||
|   | ||||
							
								
								
									
										8
									
								
								pdfio.h
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								pdfio.h
									
									
									
									
									
								
							| @@ -123,6 +123,12 @@ typedef enum pdfio_valtype_e		// PDF value types | ||||
|   PDFIO_VALTYPE_NUMBER,			// Number (integer or real) | ||||
|   PDFIO_VALTYPE_STRING			// String | ||||
| } pdfio_valtype_t; | ||||
| 				// Alternative PDF dict key enumeration | ||||
| typedef struct pdfio_dictKey_s | ||||
| { | ||||
|   const char *key; | ||||
|   pdfio_valtype_t **type; | ||||
| } pdfio_dictKey_t; | ||||
|  | ||||
|  | ||||
| // | ||||
| @@ -165,6 +171,8 @@ extern pdfio_obj_t	*pdfioDictGetObj(pdfio_dict_t *dict, const char *key) _PDFIO_ | ||||
| extern pdfio_rect_t	*pdfioDictGetRect(pdfio_dict_t *dict, const char *key, pdfio_rect_t *rect) _PDFIO_PUBLIC; | ||||
| extern const char	*pdfioDictGetString(pdfio_dict_t *dict, const char *key) _PDFIO_PUBLIC; | ||||
| extern pdfio_valtype_t	pdfioDictGetType(pdfio_dict_t *dict, const char *key) _PDFIO_PUBLIC; | ||||
| extern size_t pdfioDictGetNumKeys(pdfio_dict_t *dict) _PDFIO_PUBLIC; | ||||
| extern bool pdfioDictGetKeyByIndex(pdfio_dict_t *dict, size_t index, pdfio_dictKey_t *keyData) _PDFIO_PUBLIC; | ||||
| extern void		pdfioDictIterateKeys(pdfio_dict_t *dict, pdfio_dict_cb_t cb, void *cb_data) _PDFIO_PUBLIC; | ||||
| extern bool		pdfioDictSetArray(pdfio_dict_t *dict, const char *key, pdfio_array_t *value) _PDFIO_PUBLIC; | ||||
| extern bool		pdfioDictSetBinary(pdfio_dict_t *dict, const char *key, const unsigned char *value, size_t valuelen) _PDFIO_PUBLIC; | ||||
|   | ||||
							
								
								
									
										33
									
								
								test_mod.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								test_mod.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include "pdfio.h" | ||||
|  | ||||
| /* | ||||
| *	Usage: ./test_mod [file.pdf] | ||||
| * | ||||
| * Compiled as: | ||||
| * gcc test_mod.c -L. -lpdfio -lm -lz -o test_mod | ||||
| * | ||||
| */ | ||||
|  | ||||
|  | ||||
| int main (int argc, char **argv) | ||||
| { | ||||
| 	pdfio_file_t *pdf = pdfioFileOpen(argv[1], NULL, NULL, NULL, NULL); | ||||
| 	pdfio_obj_t *obj_page = pdfioFileGetPage(pdf, 0); | ||||
| 	pdfio_dict_t *dict_page = pdfioObjGetDict(obj_page); | ||||
|  | ||||
| 	size_t num_keys = pdfioDictGetNumKeys(dict_page); | ||||
| 	printf("Number of keys in this page: %d\n", num_keys); | ||||
|  | ||||
| 	for (unsigned int i = 0; i < num_keys; ++i) | ||||
| 	{ | ||||
| 		pdfio_dictKey_t dict_key; | ||||
| 		pdfioDictGetKeyByIndex(dict_page, i, &dict_key); | ||||
| 		printf("\t%s (%d)\n", dict_key.key, dict_key.type); | ||||
| 	} | ||||
|  | ||||
| 	pdfioFileClose(pdf); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user