1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef PUBLIC_FPDF_DOC_H_ 8 #define PUBLIC_FPDF_DOC_H_ 9 10 #include "fpdfview.h" 11 12 // Exported Functions 13 #ifdef __cplusplus 14 extern "C" { 15 #endif 16 17 // Function: FPDFBookmark_GetFirstChild 18 // Get the first child of a bookmark item, or the first top level bookmark item. 19 // Parameters: 20 // document - Handle to the document. Returned by FPDF_LoadDocument or FPDF_LoadMemDocument. 21 // bookmark - Handle to the current bookmark. Can be NULL if you want to get the first top level item. 22 // Return value: 23 // Handle to the first child or top level bookmark item. NULL if no child or top level bookmark found. 24 // 25 DLLEXPORT FPDF_BOOKMARK STDCALL FPDFBookmark_GetFirstChild(FPDF_DOCUMENT document, FPDF_BOOKMARK bookmark); 26 27 // Function: FPDFBookmark_GetNextSibling 28 // Get next bookmark item at the same level. 29 // Parameters: 30 // document - Handle to the document. Returned by FPDF_LoadDocument or FPDF_LoadMemDocument. 31 // bookmark - Handle to the current bookmark. Cannot be NULL. 32 // Return value: 33 // Handle to the next bookmark item at the same level. NULL if this is the last bookmark at this level. 34 // 35 DLLEXPORT FPDF_BOOKMARK STDCALL FPDFBookmark_GetNextSibling(FPDF_DOCUMENT document, FPDF_BOOKMARK bookmark); 36 37 // Function: FPDFBookmark_GetTitle 38 // Get title of a bookmark. 39 // Parameters: 40 // bookmark - Handle to the bookmark. 41 // buffer - Buffer for the title. Can be NULL. 42 // buflen - The length of the buffer in bytes. Can be 0. 43 // Return value: 44 // Number of bytes the title consumes, including trailing zeros. 45 // Comments: 46 // Regardless of the platform, the title is always in UTF-16LE encoding. That means the buffer 47 // can be treated as an array of WORD (on Intel and compatible CPUs), each WORD representing the Unicode of 48 // a character(some special Unicode may take 2 WORDs).The string is followed by two bytes of zero 49 // indicating the end of the string. 50 // 51 // The return value always indicates the number of bytes required for the buffer, even if no buffer is specified 52 // or the buffer size is less then required. In these cases, the buffer will not be modified. 53 // 54 DLLEXPORT unsigned long STDCALL FPDFBookmark_GetTitle(FPDF_BOOKMARK bookmark, void* buffer, unsigned long buflen); 55 56 // Function: FPDFBookmark_Find 57 // Find a bookmark in the document, using the bookmark title. 58 // Parameters: 59 // document - Handle to the document. Returned by FPDF_LoadDocument or FPDF_LoadMemDocument. 60 // title - The UTF-16LE encoded Unicode string for the bookmark title to be searched. Can't be NULL. 61 // Return value: 62 // Handle to the found bookmark item. NULL if the title can't be found. 63 // Comments: 64 // It always returns the first found bookmark if more than one bookmarks have the same title. 65 // 66 DLLEXPORT FPDF_BOOKMARK STDCALL FPDFBookmark_Find(FPDF_DOCUMENT document, FPDF_WIDESTRING title); 67 68 // Function: FPDFBookmark_GetDest 69 // Get the destination associated with a bookmark item. 70 // Parameters: 71 // document - Handle to the document. 72 // bookmark - Handle to the bookmark. 73 // Return value: 74 // Handle to the destination data. NULL if no destination is associated with this bookmark. 75 // 76 DLLEXPORT FPDF_DEST STDCALL FPDFBookmark_GetDest(FPDF_DOCUMENT document, FPDF_BOOKMARK bookmark); 77 78 // Function: FPDFBookmark_GetAction 79 // Get the action associated with a bookmark item. 80 // Parameters: 81 // bookmark - Handle to the bookmark. 82 // Return value: 83 // Handle to the action data. NULL if no action is associated with this bookmark. In this case, the 84 // application should try FPDFBookmark_GetDest. 85 // 86 DLLEXPORT FPDF_ACTION STDCALL FPDFBookmark_GetAction(FPDF_BOOKMARK bookmark); 87 88 #define PDFACTION_UNSUPPORTED 0 // Unsupported action type. 89 #define PDFACTION_GOTO 1 // Go to a destination within current document. 90 #define PDFACTION_REMOTEGOTO 2 // Go to a destination within another document. 91 #define PDFACTION_URI 3 // Universal Resource Identifier, including web pages and 92 // other Internet based resources. 93 #define PDFACTION_LAUNCH 4 // Launch an application or open a file. 94 95 // Function: FPDFAction_GetType 96 // Get type of an action. 97 // Parameters: 98 // action - Handle to the action. 99 // Return value: 100 // A type number as defined above. 101 // 102 DLLEXPORT unsigned long STDCALL FPDFAction_GetType(FPDF_ACTION action); 103 104 // Function: FPDFAction_GetDest 105 // Get destination of an action. 106 // Parameters: 107 // document - Handle to the document. 108 // action - Handle to the action. It must be a GOTO or REMOTEGOTO action. 109 // Return value: 110 // Handle to the destination data. 111 // Comments: 112 // In case of remote goto action, the application should first use FPDFAction_GetFilePath to 113 // get file path, then load that particular document, and use its document handle to call this 114 // function. 115 // 116 DLLEXPORT FPDF_DEST STDCALL FPDFAction_GetDest(FPDF_DOCUMENT document, FPDF_ACTION action); 117 118 // Function: FPDFAction_GetURIPath 119 // Get URI path of a URI action. 120 // Parameters: 121 // document - Handle to the document. 122 // action - Handle to the action. Must be a URI action. 123 // buffer - A buffer for output the path string. Can be NULL. 124 // buflen - The length of the buffer, number of bytes. Can be 0. 125 // Return value: 126 // Number of bytes the URI path consumes, including trailing zeros. 127 // Comments: 128 // The URI path is always encoded in 7-bit ASCII. 129 // 130 // The return value always indicated number of bytes required for the buffer, even when there is 131 // no buffer specified, or the buffer size is less then required. In this case, the buffer will not 132 // be modified. 133 // 134 DLLEXPORT unsigned long STDCALL FPDFAction_GetURIPath(FPDF_DOCUMENT document, FPDF_ACTION action, 135 void* buffer, unsigned long buflen); 136 137 // Function: FPDFDest_GetPageIndex 138 // Get page index of a destination. 139 // Parameters: 140 // document - Handle to the document. 141 // dest - Handle to the destination. 142 // Return value: 143 // The page index. Starting from 0 for the first page. 144 // 145 DLLEXPORT unsigned long STDCALL FPDFDest_GetPageIndex(FPDF_DOCUMENT document, FPDF_DEST dest); 146 147 // Function: FPDFLink_GetLinkAtPoint 148 // Find a link at specified point on a document page. 149 // Parameters: 150 // page - Handle to the document page. 151 // x - The x coordinate of the point, specified in page coordinate system. 152 // y - The y coordinate of the point, specified in page coordinate system. 153 // Return value: 154 // Handle to the link. NULL if no link found at that point. 155 // Comments: 156 // The point coordinates are specified in page coordinate system. You can convert coordinates 157 // from screen system to page system using FPDF_DeviceToPage functions. 158 // 159 DLLEXPORT FPDF_LINK STDCALL FPDFLink_GetLinkAtPoint(FPDF_PAGE page, double x, double y); 160 161 // Function: FPDFLink_GetDest 162 // Get destination info of a link. 163 // Parameters: 164 // document - Handle to the document. 165 // link - Handle to the link. Returned by FPDFLink_GetLinkAtPoint. 166 // Return value: 167 // Handle to the destination. NULL if there is no destination associated with the link, in this case 168 // the application should try FPDFLink_GetAction. 169 // 170 DLLEXPORT FPDF_DEST STDCALL FPDFLink_GetDest(FPDF_DOCUMENT document, FPDF_LINK link); 171 172 // Function: FPDFLink_GetAction 173 // Get action info of a link. 174 // Parameters: 175 // link - Handle to the link. 176 // Return value: 177 // Handle to the action. NULL if there is no action associated with the link. 178 // 179 DLLEXPORT FPDF_ACTION STDCALL FPDFLink_GetAction(FPDF_LINK link); 180 181 // Function: FPDFLink_Enumerate 182 // This function would enumerate all the link annotations in a single PDF page. 183 // Parameters: 184 // page[in] - Handle to the page. 185 // startPos[in,out] - The start position to enumerate the link annotations, which should be specified to start from 186 // - 0 for the first call, and would receive the next position for enumerating to start from. 187 // linkAnnot[out] - Receive the link handle. 188 // Return value: 189 // TRUE if succceed, else False; 190 // 191 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_Enumerate(FPDF_PAGE page, int* startPos, FPDF_LINK* linkAnnot); 192 193 // Function: FPDFLink_GetAnnotRect 194 // Get the annotation rectangle. (Specified by the ��Rect�� entry of annotation dictionary). 195 // Parameters: 196 // linkAnnot[in] - Handle to the link annotation. 197 // rect[out] - The annotation rect. 198 // Return value: 199 // TRUE if succceed, else False; 200 // 201 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetAnnotRect(FPDF_LINK linkAnnot, FS_RECTF* rect); 202 203 // Function: FPDFLink_CountQuadPoints 204 // Get the count of quadrilateral points to the link annotation. 205 // Parameters: 206 // linkAnnot[in] - Handle to the link annotation. 207 // Return value: 208 // The count of quadrilateral points. 209 // 210 DLLEXPORT int STDCALL FPDFLink_CountQuadPoints(FPDF_LINK linkAnnot); 211 212 /* _FS_DEF_STRUCTURE_QUADPOINTSF_ */ 213 #ifndef _FS_DEF_STRUCTURE_QUADPOINTSF_ 214 #define _FS_DEF_STRUCTURE_QUADPOINTSF_ 215 typedef struct _FS_QUADPOINTSF 216 { 217 FS_FLOAT x1; 218 FS_FLOAT y1; 219 FS_FLOAT x2; 220 FS_FLOAT y2; 221 FS_FLOAT x3; 222 FS_FLOAT y3; 223 FS_FLOAT x4; 224 FS_FLOAT y4; 225 } FS_QUADPOINTSF; 226 #endif /* _FS_DEF_STRUCTURE_QUADPOINTSF_ */ 227 228 // Function: FPDFLink_GetQuadPoints 229 // Get the quadrilateral points for the specified index in the link annotation. 230 // Parameters: 231 // linkAnnot[in] - Handle to the link annotation. 232 // quadIndex[in] - The specified quad points index. 233 // quadPoints[out] - Receive the quadrilateral points. 234 // Return value: 235 // True if succeed, else False. 236 // 237 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetQuadPoints(FPDF_LINK linkAnnot, int quadIndex, FS_QUADPOINTSF* quadPoints); 238 239 // Function: FPDF_GetMetaText 240 // Get a text from meta data of the document. Result is encoded in UTF-16LE. 241 // Parameters: 242 // doc - Handle to a document 243 // tag - The tag for the meta data. Currently, It can be "Title", "Author", 244 // "Subject", "Keywords", "Creator", "Producer", "CreationDate", or "ModDate". 245 // For detailed explanation of these tags and their respective values, 246 // please refer to PDF Reference 1.6, section 10.2.1, "Document Information Dictionary". 247 // buffer - A buffer for output the title. Can be NULL. 248 // buflen - The length of the buffer, number of bytes. Can be 0. 249 // Return value: 250 // Number of bytes the title consumes, including trailing zeros. 251 // Comments: 252 // No matter on what platform, the title is always output in UTF-16LE encoding, which means the buffer 253 // can be regarded as an array of WORD (on Intel and compatible CPUs), each WORD represent the Unicode of 254 // a character (some special Unicode may take 2 WORDs). The string is followed by two bytes of zero 255 // indicating end of the string. 256 // 257 // The return value always indicated number of bytes required for the buffer, even when there is 258 // no buffer specified, or the buffer size is less then required. In this case, the buffer will not 259 // be modified. 260 // 261 DLLEXPORT unsigned long STDCALL FPDF_GetMetaText(FPDF_DOCUMENT doc, FPDF_BYTESTRING tag, 262 void* buffer, unsigned long buflen); 263 264 265 #ifdef __cplusplus 266 } 267 #endif 268 269 #endif // PUBLIC_FPDF_DOC_H_ 270