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