365 lines
15 KiB
C
365 lines
15 KiB
C
// 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 <20><>Rect<63><74> 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_
|