// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef PUBLIC_FPDF_DOC_H_ #define PUBLIC_FPDF_DOC_H_ #include "fpdfview.h" // Exported Functions #ifdef __cplusplus extern "C" { #endif // Function: FPDFBookmark_GetFirstChild // Get the first child of a bookmark item, or the first top level // bookmark item. // Parameters: // document - Handle to the document. Returned by // FPDF_LoadDocument or FPDF_LoadMemDocument. // bookmark - Handle to the current bookmark. Can be NULL if you // want to get the first top level item. // Return value: // Handle to the first child or top level bookmark item. NULL if no // child or top level bookmark found. // DLLEXPORT FPDF_BOOKMARK STDCALL FPDFBookmark_GetFirstChild(FPDF_DOCUMENT document, FPDF_BOOKMARK bookmark); // Function: FPDFBookmark_GetNextSibling // Get next bookmark item at the same level. // Parameters: // document - Handle to the document. Returned by // FPDF_LoadDocument or FPDF_LoadMemDocument. // bookmark - Handle to the current bookmark. Cannot be NULL. // Return value: // Handle to the next bookmark item at the same level. NULL if this is // the last bookmark at this level. // DLLEXPORT FPDF_BOOKMARK STDCALL FPDFBookmark_GetNextSibling(FPDF_DOCUMENT document, FPDF_BOOKMARK bookmark); // Function: FPDFBookmark_GetTitle // Get title of a bookmark. // Parameters: // bookmark - Handle to the bookmark. // buffer - Buffer for the title. Can be NULL. // buflen - The length of the buffer in bytes. Can be 0. // Return value: // Number of bytes the title consumes, including trailing zeros. // Comments: // Regardless of the platform, the title is always in UTF-16LE // encoding. That means the buffer // can be treated as an array of WORD (on Intel and compatible CPUs), // each WORD representing the Unicode of // a character(some special Unicode may take 2 WORDs).The string is // followed by two bytes of zero // indicating the end of the string. // // The return value always indicates the number of bytes required for // the buffer, even if no buffer is specified // or the buffer size is less then required. In these cases, the buffer // will not be modified. // DLLEXPORT unsigned long STDCALL FPDFBookmark_GetTitle(FPDF_BOOKMARK bookmark, void* buffer, unsigned long buflen); // Function: FPDFBookmark_Find // Find a bookmark in the document, using the bookmark title. // Parameters: // document - Handle to the document. Returned by // FPDF_LoadDocument or FPDF_LoadMemDocument. // title - The UTF-16LE encoded Unicode string for the bookmark // title to be searched. Can't be NULL. // Return value: // Handle to the found bookmark item. NULL if the title can't be found. // Comments: // It always returns the first found bookmark if more than one // bookmarks have the same title. // DLLEXPORT FPDF_BOOKMARK STDCALL FPDFBookmark_Find(FPDF_DOCUMENT document, FPDF_WIDESTRING title); // Function: FPDFBookmark_GetDest // Get the destination associated with a bookmark item. // Parameters: // document - Handle to the document. // bookmark - Handle to the bookmark. // Return value: // Handle to the destination data. NULL if no destination is associated // with this bookmark. // DLLEXPORT FPDF_DEST STDCALL FPDFBookmark_GetDest(FPDF_DOCUMENT document, FPDF_BOOKMARK bookmark); // Function: FPDFBookmark_GetAction // Get the action associated with a bookmark item. // Parameters: // bookmark - Handle to the bookmark. // Return value: // Handle to the action data. NULL if no action is associated with this // bookmark. In this case, the // application should try FPDFBookmark_GetDest. // DLLEXPORT FPDF_ACTION STDCALL FPDFBookmark_GetAction(FPDF_BOOKMARK bookmark); #define PDFACTION_UNSUPPORTED 0 // Unsupported action type. #define PDFACTION_GOTO 1 // Go to a destination within current document. #define PDFACTION_REMOTEGOTO 2 // Go to a destination within another document. #define PDFACTION_URI 3 // Universal Resource Identifier, including web // pages and other Internet based resources. #define PDFACTION_LAUNCH 4 // Launch an application or open a file. // Function: FPDFAction_GetType // Get type of an action. // Parameters: // action - Handle to the action. // Return value: // A type number as defined above. // DLLEXPORT unsigned long STDCALL FPDFAction_GetType(FPDF_ACTION action); // Function: FPDFAction_GetDest // Get destination of an action. // Parameters: // document - Handle to the document. // action - Handle to the action. It must be a GOTO or // REMOTEGOTO action. // Return value: // Handle to the destination data. // Comments: // In case of remote goto action, the application should first use // FPDFAction_GetFilePath to // get file path, then load that particular document, and use its // document handle to call this // function. // DLLEXPORT FPDF_DEST STDCALL FPDFAction_GetDest(FPDF_DOCUMENT document, FPDF_ACTION action); // Function: FPDFAction_GetFilePath // Get file path of a remote goto action. // Parameters: // action - Handle to the action. Must be a REMOTEGOTO or // LAUNCH action. // buffer - A buffer for output the path string. Can be NULL. // buflen - The length of the buffer, number of bytes. Can be 0. // Return value: // Number of bytes the file path consumes, including trailing zero. // // Comments: // The file path is UTF-8 encoded. The return value is the number of // bytes required for the buffer, even when there is no buffer // specified, or the buffer size is less then required. In this case, // the buffer will not be modified. // DLLEXPORT unsigned long STDCALL FPDFAction_GetFilePath(FPDF_ACTION action, void* buffer, unsigned long buflen); // Function: FPDFAction_GetURIPath // Get URI path of a URI action. // Parameters: // document - Handle to the document. // action - Handle to the action. Must be a URI action. // buffer - A buffer for output the path string. Can be NULL. // buflen - The length of the buffer, number of bytes. Can be 0. // Return value: // Number of bytes the URI path consumes, including trailing zeros. // Comments: // The URI path is always encoded in 7-bit ASCII. // // The return value is the number of bytes required for the buffer, // even when there is no buffer specified, or the buffer size is less // then required. In this case, the buffer will not be modified. // DLLEXPORT unsigned long STDCALL FPDFAction_GetURIPath(FPDF_DOCUMENT document, FPDF_ACTION action, void* buffer, unsigned long buflen); // Function: FPDFDest_GetPageIndex // Get page index of a destination. // Parameters: // document - Handle to the document. // dest - Handle to the destination. // Return value: // The page index. Starting from 0 for the first page. // DLLEXPORT unsigned long STDCALL FPDFDest_GetPageIndex(FPDF_DOCUMENT document, FPDF_DEST dest); // Function: FPDFLink_GetLinkAtPoint // Find a link at specified point on a document page. // Parameters: // page - Handle to the document page. // x - The x coordinate of the point, specified in page // coordinate system. // y - The y coordinate of the point, specified in page // coordinate system. // Return value: // Handle to the link. NULL if no link found at that point. // Comments: // The point coordinates are specified in page coordinate system. You can // convert coordinates from screen system to page system using // FPDF_DeviceToPage(). // DLLEXPORT FPDF_LINK STDCALL FPDFLink_GetLinkAtPoint(FPDF_PAGE page, double x, double y); // Function: FPDFLink_GetLinkZOrderAtPoint // Find the z-order of a link at specified point on a document page. // Parameters: // page - Handle to the document page. // x - The x coordinate of the point, specified in page // coordinate system. // y - The y coordinate of the point, specified in page // coordinate system. // Return value: // Z-order of the link, or -1 if no link found at that point. // Higher numbers are closer to the front. // Comments: // The point coordinates are specified in page coordinate system. You can // convert coordinates from screen system to page system using // FPDF_DeviceToPage(). // DLLEXPORT int STDCALL FPDFLink_GetLinkZOrderAtPoint(FPDF_PAGE page, double x, double y); // Function: FPDFLink_GetDest // Get destination info of a link. // Parameters: // document - Handle to the document. // link - Handle to the link. Returned by // FPDFLink_GetLinkAtPoint. // Return value: // Handle to the destination. NULL if there is no destination // associated with the link, in this case // the application should try FPDFLink_GetAction. // DLLEXPORT FPDF_DEST STDCALL FPDFLink_GetDest(FPDF_DOCUMENT document, FPDF_LINK link); // Function: FPDFLink_GetAction // Get action info of a link. // Parameters: // link - Handle to the link. // Return value: // Handle to the action. NULL if there is no action associated with the // link. // DLLEXPORT FPDF_ACTION STDCALL FPDFLink_GetAction(FPDF_LINK link); // Function: FPDFLink_Enumerate // This function would enumerate all the link annotations in a single // PDF page. // Parameters: // page[in] - Handle to the page. // startPos[in,out] - The start position to enumerate the link // annotations, which should be specified to start from // - 0 for the first call, and would receive the // next position for enumerating to start from. // linkAnnot[out] - Receive the link handle. // Return value: // TRUE if succceed, else False; // DLLEXPORT FPDF_BOOL STDCALL FPDFLink_Enumerate(FPDF_PAGE page, int* startPos, FPDF_LINK* linkAnnot); // Function: FPDFLink_GetAnnotRect // Get the annotation rectangle. (Specified by the ˇ°Rectˇ± entry of // annotation dictionary). // Parameters: // linkAnnot[in] - Handle to the link annotation. // rect[out] - The annotation rect. // Return value: // TRUE if succceed, else False; // DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetAnnotRect(FPDF_LINK linkAnnot, FS_RECTF* rect); // Function: FPDFLink_CountQuadPoints // Get the count of quadrilateral points to the link annotation. // Parameters: // linkAnnot[in] - Handle to the link annotation. // Return value: // The count of quadrilateral points. // DLLEXPORT int STDCALL FPDFLink_CountQuadPoints(FPDF_LINK linkAnnot); /* _FS_DEF_STRUCTURE_QUADPOINTSF_ */ #ifndef _FS_DEF_STRUCTURE_QUADPOINTSF_ #define _FS_DEF_STRUCTURE_QUADPOINTSF_ typedef struct _FS_QUADPOINTSF { FS_FLOAT x1; FS_FLOAT y1; FS_FLOAT x2; FS_FLOAT y2; FS_FLOAT x3; FS_FLOAT y3; FS_FLOAT x4; FS_FLOAT y4; } FS_QUADPOINTSF; #endif /* _FS_DEF_STRUCTURE_QUADPOINTSF_ */ // Function: FPDFLink_GetQuadPoints // Get the quadrilateral points for the specified index in the link // annotation. // Parameters: // linkAnnot[in] - Handle to the link annotation. // quadIndex[in] - The specified quad points index. // quadPoints[out] - Receive the quadrilateral points. // Return value: // True if succeed, else False. // DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetQuadPoints(FPDF_LINK linkAnnot, int quadIndex, FS_QUADPOINTSF* quadPoints); // Function: FPDF_GetMetaText // Get a text from meta data of the document. Result is encoded in // UTF-16LE. // Parameters: // doc - Handle to a document // tag - The tag for the meta data. Currently, It can be // "Title", "Author", // "Subject", "Keywords", "Creator", "Producer", // "CreationDate", or "ModDate". // For detailed explanation of these tags and their // respective values, // please refer to PDF Reference 1.6, section 10.2.1, // "Document Information Dictionary". // buffer - A buffer for output the title. Can be NULL. // buflen - The length of the buffer, number of bytes. Can be 0. // Return value: // Number of bytes the title consumes, including trailing zeros. // Comments: // No matter on what platform, the title is always output in UTF-16LE // encoding, which means the buffer // can be regarded as an array of WORD (on Intel and compatible CPUs), // each WORD represent the Unicode of // a character (some special Unicode may take 2 WORDs). The string is // followed by two bytes of zero // indicating end of the string. // // The return value always indicated number of bytes required for the // buffer, even when there is // no buffer specified, or the buffer size is less then required. In // this case, the buffer will not // be modified. // DLLEXPORT unsigned long STDCALL FPDF_GetMetaText(FPDF_DOCUMENT doc, FPDF_BYTESTRING tag, void* buffer, unsigned long buflen); #ifdef __cplusplus } #endif #endif // PUBLIC_FPDF_DOC_H_