Home | History | Annotate | Download | only in public
      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
     19 //          bookmark item.
     20 // Parameters:
     21 //          document    -   Handle to the document. Returned by
     22 //          FPDF_LoadDocument or FPDF_LoadMemDocument.
     23 //          bookmark    -   Handle to the current bookmark. Can be NULL if you
     24 //          want to get the first top level item.
     25 // Return value:
     26 //          Handle to the first child or top level bookmark item. NULL if no
     27 //          child or top level bookmark found.
     28 //
     29 DLLEXPORT FPDF_BOOKMARK STDCALL
     30 FPDFBookmark_GetFirstChild(FPDF_DOCUMENT document, FPDF_BOOKMARK bookmark);
     31 
     32 // Function: FPDFBookmark_GetNextSibling
     33 //          Get next bookmark item at the same level.
     34 // Parameters:
     35 //          document    -   Handle to the document. Returned by
     36 //          FPDF_LoadDocument or FPDF_LoadMemDocument.
     37 //          bookmark    -   Handle to the current bookmark. Cannot be NULL.
     38 // Return value:
     39 //          Handle to the next bookmark item at the same level. NULL if this is
     40 //          the last bookmark at this level.
     41 //
     42 DLLEXPORT FPDF_BOOKMARK STDCALL
     43 FPDFBookmark_GetNextSibling(FPDF_DOCUMENT document, FPDF_BOOKMARK bookmark);
     44 
     45 // Function: FPDFBookmark_GetTitle
     46 //          Get title of a bookmark.
     47 // Parameters:
     48 //          bookmark    -   Handle to the bookmark.
     49 //          buffer      -   Buffer for the title. Can be NULL.
     50 //          buflen      -   The length of the buffer in bytes. Can be 0.
     51 // Return value:
     52 //          Number of bytes the title consumes, including trailing zeros.
     53 // Comments:
     54 //          Regardless of the platform, the title is always in UTF-16LE
     55 //          encoding. That means the buffer
     56 //          can be treated as an array of WORD (on Intel and compatible CPUs),
     57 //          each WORD representing the Unicode of
     58 //          a character(some special Unicode may take 2 WORDs).The string is
     59 //          followed by two bytes of zero
     60 //          indicating the end of the string.
     61 //
     62 //          The return value always indicates the number of bytes required for
     63 //          the buffer, even if no buffer is specified
     64 //          or the buffer size is less then required. In these cases, the buffer
     65 //          will not be modified.
     66 //
     67 DLLEXPORT unsigned long STDCALL FPDFBookmark_GetTitle(FPDF_BOOKMARK bookmark,
     68                                                       void* buffer,
     69                                                       unsigned long buflen);
     70 
     71 // Function: FPDFBookmark_Find
     72 //          Find a bookmark in the document, using the bookmark title.
     73 // Parameters:
     74 //          document    -   Handle to the document. Returned by
     75 //          FPDF_LoadDocument or FPDF_LoadMemDocument.
     76 //          title       -   The UTF-16LE encoded Unicode string for the bookmark
     77 //          title to be searched. Can't be NULL.
     78 // Return value:
     79 //          Handle to the found bookmark item. NULL if the title can't be found.
     80 // Comments:
     81 //          It always returns the first found bookmark if more than one
     82 //          bookmarks have the same title.
     83 //
     84 DLLEXPORT FPDF_BOOKMARK STDCALL FPDFBookmark_Find(FPDF_DOCUMENT document,
     85                                                   FPDF_WIDESTRING title);
     86 
     87 // Function: FPDFBookmark_GetDest
     88 //          Get the destination associated with a bookmark item.
     89 // Parameters:
     90 //          document    -   Handle to the document.
     91 //          bookmark    -   Handle to the bookmark.
     92 // Return value:
     93 //          Handle to the destination data. NULL if no destination is associated
     94 //          with this bookmark.
     95 //
     96 DLLEXPORT FPDF_DEST STDCALL FPDFBookmark_GetDest(FPDF_DOCUMENT document,
     97                                                  FPDF_BOOKMARK bookmark);
     98 
     99 // Function: FPDFBookmark_GetAction
    100 //          Get the action associated with a bookmark item.
    101 // Parameters:
    102 //          bookmark    -   Handle to the bookmark.
    103 // Return value:
    104 //          Handle to the action data. NULL if no action is associated with this
    105 //          bookmark. In this case, the
    106 //          application should try FPDFBookmark_GetDest.
    107 //
    108 DLLEXPORT FPDF_ACTION STDCALL FPDFBookmark_GetAction(FPDF_BOOKMARK bookmark);
    109 
    110 #define PDFACTION_UNSUPPORTED 0  // Unsupported action type.
    111 #define PDFACTION_GOTO 1         // Go to a destination within current document.
    112 #define PDFACTION_REMOTEGOTO 2   // Go to a destination within another document.
    113 #define PDFACTION_URI 3          // Universal Resource Identifier, including web
    114                                  // pages and other Internet based resources.
    115 #define PDFACTION_LAUNCH 4       // Launch an application or open a file.
    116 
    117 // Function: FPDFAction_GetType
    118 //          Get type of an action.
    119 // Parameters:
    120 //          action      -   Handle to the action.
    121 // Return value:
    122 //          A type number as defined above.
    123 //
    124 DLLEXPORT unsigned long STDCALL FPDFAction_GetType(FPDF_ACTION action);
    125 
    126 // Function: FPDFAction_GetDest
    127 //          Get destination of an action.
    128 // Parameters:
    129 //          document    -   Handle to the document.
    130 //          action      -   Handle to the action. It must be a GOTO or
    131 //          REMOTEGOTO action.
    132 // Return value:
    133 //          Handle to the destination data.
    134 // Comments:
    135 //          In case of remote goto action, the application should first use
    136 //          FPDFAction_GetFilePath to
    137 //          get file path, then load that particular document, and use its
    138 //          document handle to call this
    139 //          function.
    140 //
    141 DLLEXPORT FPDF_DEST STDCALL FPDFAction_GetDest(FPDF_DOCUMENT document,
    142                                                FPDF_ACTION action);
    143 
    144 // Function: FPDFAction_GetFilePath
    145 //          Get file path of a remote goto action.
    146 // Parameters:
    147 //          action    -   Handle to the action. Must be a REMOTEGOTO or
    148 //                        LAUNCH action.
    149 //          buffer    -   A buffer for output the path string. Can be NULL.
    150 //          buflen    -   The length of the buffer, number of bytes. Can be 0.
    151 // Return value:
    152 //          Number of bytes the file path consumes, including trailing zero.
    153 //
    154 // Comments:
    155 //          The file path is UTF-8 encoded. The return value is the number of
    156 //          bytes required for the buffer, even when there is no buffer
    157 //          specified, or the buffer size is less then required. In this case,
    158 //          the buffer will not be modified.
    159 //
    160 DLLEXPORT unsigned long STDCALL
    161 FPDFAction_GetFilePath(FPDF_ACTION action, void* buffer, unsigned long buflen);
    162 
    163 // Function: FPDFAction_GetURIPath
    164 //          Get URI path of a URI action.
    165 // Parameters:
    166 //          document    -   Handle to the document.
    167 //          action      -   Handle to the action. Must be a URI action.
    168 //          buffer      -   A buffer for output the path string. Can be NULL.
    169 //          buflen      -   The length of the buffer, number of bytes. Can be 0.
    170 // Return value:
    171 //          Number of bytes the URI path consumes, including trailing zeros.
    172 // Comments:
    173 //          The URI path is always encoded in 7-bit ASCII.
    174 //
    175 //          The return value is the number of bytes required for the buffer,
    176 //          even when there is no buffer specified, or the buffer size is less
    177 //          then required. In this case, the buffer will not be modified.
    178 //
    179 DLLEXPORT unsigned long STDCALL FPDFAction_GetURIPath(FPDF_DOCUMENT document,
    180                                                       FPDF_ACTION action,
    181                                                       void* buffer,
    182                                                       unsigned long buflen);
    183 
    184 // Function: FPDFDest_GetPageIndex
    185 //          Get page index of a destination.
    186 // Parameters:
    187 //          document    -   Handle to the document.
    188 //          dest        -   Handle to the destination.
    189 // Return value:
    190 //          The page index. Starting from 0 for the first page.
    191 //
    192 DLLEXPORT unsigned long STDCALL FPDFDest_GetPageIndex(FPDF_DOCUMENT document,
    193                                                       FPDF_DEST dest);
    194 
    195 // Function: FPDFLink_GetLinkAtPoint
    196 //     Find a link at specified point on a document page.
    197 // Parameters:
    198 //     page        -   Handle to the document page.
    199 //     x           -   The x coordinate of the point, specified in page
    200 //                     coordinate system.
    201 //     y           -   The y coordinate of the point, specified in page
    202 //                     coordinate system.
    203 // Return value:
    204 //     Handle to the link. NULL if no link found at that point.
    205 // Comments:
    206 //     The point coordinates are specified in page coordinate system. You can
    207 //     convert coordinates from screen system to page system using
    208 //     FPDF_DeviceToPage().
    209 //
    210 DLLEXPORT FPDF_LINK STDCALL FPDFLink_GetLinkAtPoint(FPDF_PAGE page,
    211                                                     double x,
    212                                                     double y);
    213 
    214 // Function: FPDFLink_GetLinkZOrderAtPoint
    215 //     Find the z-order of a link at specified point on a document page.
    216 // Parameters:
    217 //     page        -   Handle to the document page.
    218 //     x           -   The x coordinate of the point, specified in page
    219 //                     coordinate system.
    220 //     y           -   The y coordinate of the point, specified in page
    221 //                     coordinate system.
    222 // Return value:
    223 //     Z-order of the link, or -1 if no link found at that point.
    224 //     Higher numbers are closer to the front.
    225 // Comments:
    226 //     The point coordinates are specified in page coordinate system. You can
    227 //     convert coordinates from screen system to page system using
    228 //     FPDF_DeviceToPage().
    229 //
    230 DLLEXPORT int STDCALL
    231 FPDFLink_GetLinkZOrderAtPoint(FPDF_PAGE page, double x, double y);
    232 
    233 // Function: FPDFLink_GetDest
    234 //          Get destination info of a link.
    235 // Parameters:
    236 //          document    -   Handle to the document.
    237 //          link        -   Handle to the link. Returned by
    238 //          FPDFLink_GetLinkAtPoint.
    239 // Return value:
    240 //          Handle to the destination. NULL if there is no destination
    241 //          associated with the link, in this case
    242 //          the application should try FPDFLink_GetAction.
    243 //
    244 DLLEXPORT FPDF_DEST STDCALL FPDFLink_GetDest(FPDF_DOCUMENT document,
    245                                              FPDF_LINK link);
    246 
    247 // Function: FPDFLink_GetAction
    248 //          Get action info of a link.
    249 // Parameters:
    250 //          link        -   Handle to the link.
    251 // Return value:
    252 //          Handle to the action. NULL if there is no action associated with the
    253 //          link.
    254 //
    255 DLLEXPORT FPDF_ACTION STDCALL FPDFLink_GetAction(FPDF_LINK link);
    256 
    257 // Function: FPDFLink_Enumerate
    258 //          This function would enumerate all the link annotations in a single
    259 //          PDF page.
    260 // Parameters:
    261 //          page[in]            -   Handle to the page.
    262 //          startPos[in,out]    -   The start position to enumerate the link
    263 //          annotations, which should be specified to start from
    264 //                              -   0 for the first call, and would receive the
    265 //                              next position for enumerating to start from.
    266 //          linkAnnot[out]      -   Receive the link handle.
    267 // Return value:
    268 //          TRUE if succceed, else False;
    269 //
    270 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_Enumerate(FPDF_PAGE page,
    271                                                int* startPos,
    272                                                FPDF_LINK* linkAnnot);
    273 
    274 // Function: FPDFLink_GetAnnotRect
    275 //          Get the annotation rectangle. (Specified by the Rect entry of
    276 //          annotation dictionary).
    277 // Parameters:
    278 //          linkAnnot[in]       -   Handle to the link annotation.
    279 //          rect[out]           -   The annotation rect.
    280 // Return value:
    281 //          TRUE if succceed, else False;
    282 //
    283 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetAnnotRect(FPDF_LINK linkAnnot,
    284                                                   FS_RECTF* rect);
    285 
    286 // Function: FPDFLink_CountQuadPoints
    287 //          Get the count of quadrilateral points to the link annotation.
    288 // Parameters:
    289 //          linkAnnot[in]       -   Handle to the link annotation.
    290 // Return value:
    291 //          The count of quadrilateral points.
    292 //
    293 DLLEXPORT int STDCALL FPDFLink_CountQuadPoints(FPDF_LINK linkAnnot);
    294 
    295 /* _FS_DEF_STRUCTURE_QUADPOINTSF_ */
    296 #ifndef _FS_DEF_STRUCTURE_QUADPOINTSF_
    297 #define _FS_DEF_STRUCTURE_QUADPOINTSF_
    298 typedef struct _FS_QUADPOINTSF {
    299   FS_FLOAT x1;
    300   FS_FLOAT y1;
    301   FS_FLOAT x2;
    302   FS_FLOAT y2;
    303   FS_FLOAT x3;
    304   FS_FLOAT y3;
    305   FS_FLOAT x4;
    306   FS_FLOAT y4;
    307 } FS_QUADPOINTSF;
    308 #endif /* _FS_DEF_STRUCTURE_QUADPOINTSF_ */
    309 
    310 // Function: FPDFLink_GetQuadPoints
    311 //          Get the quadrilateral points for the specified index in the link
    312 //          annotation.
    313 // Parameters:
    314 //          linkAnnot[in]       -   Handle to the link annotation.
    315 //          quadIndex[in]       -   The specified quad points index.
    316 //          quadPoints[out]     -   Receive the quadrilateral points.
    317 // Return value:
    318 //          True if succeed, else False.
    319 //
    320 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetQuadPoints(FPDF_LINK linkAnnot,
    321                                                    int quadIndex,
    322                                                    FS_QUADPOINTSF* quadPoints);
    323 
    324 // Function: FPDF_GetMetaText
    325 //          Get a text from meta data of the document. Result is encoded in
    326 //          UTF-16LE.
    327 // Parameters:
    328 //          doc         -   Handle to a document
    329 //          tag         -   The tag for the meta data. Currently, It can be
    330 //          "Title", "Author",
    331 //                          "Subject", "Keywords", "Creator", "Producer",
    332 //                          "CreationDate", or "ModDate".
    333 //                          For detailed explanation of these tags and their
    334 //                          respective values,
    335 //                          please refer to PDF Reference 1.6, section 10.2.1,
    336 //                          "Document Information Dictionary".
    337 //          buffer      -   A buffer for output the title. Can be NULL.
    338 //          buflen      -   The length of the buffer, number of bytes. Can be 0.
    339 // Return value:
    340 //          Number of bytes the title consumes, including trailing zeros.
    341 // Comments:
    342 //          No matter on what platform, the title is always output in UTF-16LE
    343 //          encoding, which means the buffer
    344 //          can be regarded as an array of WORD (on Intel and compatible CPUs),
    345 //          each WORD represent the Unicode of
    346 //          a character (some special Unicode may take 2 WORDs). The string is
    347 //          followed by two bytes of zero
    348 //          indicating end of the string.
    349 //
    350 //          The return value always indicated number of bytes required for the
    351 //          buffer, even when there is
    352 //          no buffer specified, or the buffer size is less then required. In
    353 //          this case, the buffer will not
    354 //          be modified.
    355 //
    356 DLLEXPORT unsigned long STDCALL FPDF_GetMetaText(FPDF_DOCUMENT doc,
    357                                                  FPDF_BYTESTRING tag,
    358                                                  void* buffer,
    359                                                  unsigned long buflen);
    360 
    361 #ifdef __cplusplus
    362 }
    363 #endif
    364 
    365 #endif  // PUBLIC_FPDF_DOC_H_
    366