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 14extern "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// 27DLLEXPORT 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// 37DLLEXPORT 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// 47DLLEXPORT 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// 63DLLEXPORT 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// 77DLLEXPORT 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// 95DLLEXPORT 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// 106DLLEXPORT 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// 120DLLEXPORT 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// 131DLLEXPORT 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// 140DLLEXPORT 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// 152DLLEXPORT 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// 162DLLEXPORT 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// 171DLLEXPORT 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_ 176typedef 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// 198DLLEXPORT 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// 222DLLEXPORT 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