You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
364 lines
14 KiB
364 lines
14 KiB
// 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_
|
|
|
|
// NOLINTNEXTLINE(build/include)
|
|
#include "fpdfview.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif // __cplusplus
|
|
|
|
// Unsupported action type.
|
|
#define PDFACTION_UNSUPPORTED 0
|
|
// Go to a destination within current document.
|
|
#define PDFACTION_GOTO 1
|
|
// Go to a destination within another document.
|
|
#define PDFACTION_REMOTEGOTO 2
|
|
// URI, including web pages and other Internet resources.
|
|
#define PDFACTION_URI 3
|
|
// Launch an application or open a file.
|
|
#define PDFACTION_LAUNCH 4
|
|
|
|
// View destination fit types. See pdfmark reference v9, page 48.
|
|
#define PDFDEST_VIEW_UNKNOWN_MODE 0
|
|
#define PDFDEST_VIEW_XYZ 1
|
|
#define PDFDEST_VIEW_FIT 2
|
|
#define PDFDEST_VIEW_FITH 3
|
|
#define PDFDEST_VIEW_FITV 4
|
|
#define PDFDEST_VIEW_FITR 5
|
|
#define PDFDEST_VIEW_FITB 6
|
|
#define PDFDEST_VIEW_FITBH 7
|
|
#define PDFDEST_VIEW_FITBV 8
|
|
|
|
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;
|
|
|
|
// Get the first child of |bookmark|, or the first top-level bookmark item.
|
|
//
|
|
// document - handle to the document.
|
|
// bookmark - handle to the current bookmark. Pass NULL for the first top
|
|
// level item.
|
|
//
|
|
// Returns a handle to the first child of |bookmark| or the first top-level
|
|
// bookmark item. NULL if no child or top-level bookmark found.
|
|
FPDF_EXPORT FPDF_BOOKMARK FPDF_CALLCONV
|
|
FPDFBookmark_GetFirstChild(FPDF_DOCUMENT document, FPDF_BOOKMARK bookmark);
|
|
|
|
// Get the next sibling of |bookmark|.
|
|
//
|
|
// document - handle to the document.
|
|
// bookmark - handle to the current bookmark.
|
|
//
|
|
// Returns a handle to the next sibling of |bookmark|, or NULL if this is the
|
|
// last bookmark at this level.
|
|
FPDF_EXPORT FPDF_BOOKMARK FPDF_CALLCONV
|
|
FPDFBookmark_GetNextSibling(FPDF_DOCUMENT document, FPDF_BOOKMARK bookmark);
|
|
|
|
// Get the title of |bookmark|.
|
|
//
|
|
// bookmark - handle to the bookmark.
|
|
// buffer - buffer for the title. May be NULL.
|
|
// buflen - the length of the buffer in bytes. May be 0.
|
|
//
|
|
// Returns the number of bytes in the title, including the terminating NUL
|
|
// character. The number of bytes is returned regardless of the |buffer| and
|
|
// |buflen| parameters.
|
|
//
|
|
// Regardless of the platform, the |buffer| is always in UTF-16LE encoding. The
|
|
// string is terminated by a UTF16 NUL character. If |buflen| is less than the
|
|
// required length, or |buffer| is NULL, |buffer| will not be modified.
|
|
FPDF_EXPORT unsigned long FPDF_CALLCONV
|
|
FPDFBookmark_GetTitle(FPDF_BOOKMARK bookmark,
|
|
void* buffer,
|
|
unsigned long buflen);
|
|
|
|
// Find the bookmark with |title| in |document|.
|
|
//
|
|
// document - handle to the document.
|
|
// title - the UTF-16LE encoded Unicode title for which to search.
|
|
//
|
|
// Returns the handle to the bookmark, or NULL if |title| can't be found.
|
|
//
|
|
// FPDFBookmark_Find() will always return the first bookmark found even if
|
|
// multiple bookmarks have the same |title|.
|
|
FPDF_EXPORT FPDF_BOOKMARK FPDF_CALLCONV
|
|
FPDFBookmark_Find(FPDF_DOCUMENT document, FPDF_WIDESTRING title);
|
|
|
|
// Get the destination associated with |bookmark|.
|
|
//
|
|
// document - handle to the document.
|
|
// bookmark - handle to the bookmark.
|
|
//
|
|
// Returns the handle to the destination data, NULL if no destination is
|
|
// associated with |bookmark|.
|
|
FPDF_EXPORT FPDF_DEST FPDF_CALLCONV
|
|
FPDFBookmark_GetDest(FPDF_DOCUMENT document, FPDF_BOOKMARK bookmark);
|
|
|
|
// Get the action associated with |bookmark|.
|
|
//
|
|
// bookmark - handle to the bookmark.
|
|
//
|
|
// Returns the handle to the action data, or NULL if no action is associated
|
|
// with |bookmark|. When NULL is returned, FPDFBookmark_GetDest() should be
|
|
// called to get the |bookmark| destination data.
|
|
FPDF_EXPORT FPDF_ACTION FPDF_CALLCONV
|
|
FPDFBookmark_GetAction(FPDF_BOOKMARK bookmark);
|
|
|
|
// Get the type of |action|.
|
|
//
|
|
// action - handle to the action.
|
|
//
|
|
// Returns one of:
|
|
// PDFACTION_UNSUPPORTED
|
|
// PDFACTION_GOTO
|
|
// PDFACTION_REMOTEGOTO
|
|
// PDFACTION_URI
|
|
// PDFACTION_LAUNCH
|
|
FPDF_EXPORT unsigned long FPDF_CALLCONV FPDFAction_GetType(FPDF_ACTION action);
|
|
|
|
// Get the destination of |action|.
|
|
//
|
|
// document - handle to the document.
|
|
// action - handle to the action. |action| must be a |PDFACTION_GOTO| or
|
|
// |PDFACTION_REMOTEGOTO|.
|
|
//
|
|
// Returns a handle to the destination data, or NULL on error, typically
|
|
// because the arguments were bad or the action was of the wrong type.
|
|
//
|
|
// In the case of |PDFACTION_REMOTEGOTO|, you must first call
|
|
// FPDFAction_GetFilePath(), then load the document at that path, then pass
|
|
// the document handle from that document as |document| to FPDFAction_GetDest().
|
|
FPDF_EXPORT FPDF_DEST FPDF_CALLCONV FPDFAction_GetDest(FPDF_DOCUMENT document,
|
|
FPDF_ACTION action);
|
|
|
|
// Get the file path of |action|.
|
|
//
|
|
// action - handle to the action. |action| must be a |PDFACTION_LAUNCH| or
|
|
// |PDFACTION_REMOTEGOTO|.
|
|
// buffer - a buffer for output the path string. May be NULL.
|
|
// buflen - the length of the buffer, in bytes. May be 0.
|
|
//
|
|
// Returns the number of bytes in the file path, including the trailing NUL
|
|
// character, or 0 on error, typically because the arguments were bad or the
|
|
// action was of the wrong type.
|
|
//
|
|
// Regardless of the platform, the |buffer| is always in UTF-8 encoding.
|
|
// If |buflen| is less than the returned length, or |buffer| is NULL, |buffer|
|
|
// will not be modified.
|
|
FPDF_EXPORT unsigned long FPDF_CALLCONV
|
|
FPDFAction_GetFilePath(FPDF_ACTION action, void* buffer, unsigned long buflen);
|
|
|
|
// Get the URI path of |action|.
|
|
//
|
|
// document - handle to the document.
|
|
// action - handle to the action. Must be a |PDFACTION_URI|.
|
|
// buffer - a buffer for the path string. May be NULL.
|
|
// buflen - the length of the buffer, in bytes. May be 0.
|
|
//
|
|
// Returns the number of bytes in the URI path, including the trailing NUL
|
|
// character, or 0 on error, typically because the arguments were bad or the
|
|
// action was of the wrong type.
|
|
//
|
|
// The |buffer| is always encoded in 7-bit ASCII. If |buflen| is less than the
|
|
// returned length, or |buffer| is NULL, |buffer| will not be modified.
|
|
FPDF_EXPORT unsigned long FPDF_CALLCONV
|
|
FPDFAction_GetURIPath(FPDF_DOCUMENT document,
|
|
FPDF_ACTION action,
|
|
void* buffer,
|
|
unsigned long buflen);
|
|
|
|
// Get the page index of |dest|.
|
|
//
|
|
// document - handle to the document.
|
|
// dest - handle to the destination.
|
|
//
|
|
// Returns the 0-based page index containing |dest|. Returns -1 on error.
|
|
FPDF_EXPORT int FPDF_CALLCONV FPDFDest_GetDestPageIndex(FPDF_DOCUMENT document,
|
|
FPDF_DEST dest);
|
|
|
|
// Get the view (fit type) specified by |dest|.
|
|
// Experimental API. Subject to change.
|
|
//
|
|
// dest - handle to the destination.
|
|
// pNumParams - receives the number of view parameters, which is at most 4.
|
|
// pParams - buffer to write the view parameters. Must be at least 4
|
|
// FS_FLOATs long.
|
|
// Returns one of the PDFDEST_VIEW_* constants, PDFDEST_VIEW_UNKNOWN_MODE if
|
|
// |dest| does not specify a view.
|
|
FPDF_EXPORT unsigned long FPDF_CALLCONV
|
|
FPDFDest_GetView(FPDF_DEST dest, unsigned long* pNumParams, FS_FLOAT* pParams);
|
|
|
|
// Get the (x, y, zoom) location of |dest| in the destination page, if the
|
|
// destination is in [page /XYZ x y zoom] syntax.
|
|
//
|
|
// dest - handle to the destination.
|
|
// hasXVal - out parameter; true if the x value is not null
|
|
// hasYVal - out parameter; true if the y value is not null
|
|
// hasZoomVal - out parameter; true if the zoom value is not null
|
|
// x - out parameter; the x coordinate, in page coordinates.
|
|
// y - out parameter; the y coordinate, in page coordinates.
|
|
// zoom - out parameter; the zoom value.
|
|
// Returns TRUE on successfully reading the /XYZ value.
|
|
//
|
|
// Note the [x, y, zoom] values are only set if the corresponding hasXVal,
|
|
// hasYVal or hasZoomVal flags are true.
|
|
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
|
|
FPDFDest_GetLocationInPage(FPDF_DEST dest,
|
|
FPDF_BOOL* hasXVal,
|
|
FPDF_BOOL* hasYVal,
|
|
FPDF_BOOL* hasZoomVal,
|
|
FS_FLOAT* x,
|
|
FS_FLOAT* y,
|
|
FS_FLOAT* zoom);
|
|
|
|
// Find a link at point (|x|,|y|) on |page|.
|
|
//
|
|
// page - handle to the document page.
|
|
// x - the x coordinate, in the page coordinate system.
|
|
// y - the y coordinate, in the page coordinate system.
|
|
//
|
|
// Returns a handle to the link, or NULL if no link found at the given point.
|
|
//
|
|
// You can convert coordinates from screen coordinates to page coordinates using
|
|
// FPDF_DeviceToPage().
|
|
FPDF_EXPORT FPDF_LINK FPDF_CALLCONV FPDFLink_GetLinkAtPoint(FPDF_PAGE page,
|
|
double x,
|
|
double y);
|
|
|
|
// Find the Z-order of link at point (|x|,|y|) on |page|.
|
|
//
|
|
// page - handle to the document page.
|
|
// x - the x coordinate, in the page coordinate system.
|
|
// y - the y coordinate, in the page coordinate system.
|
|
//
|
|
// Returns the Z-order of the link, or -1 if no link found at the given point.
|
|
// Larger Z-order numbers are closer to the front.
|
|
//
|
|
// You can convert coordinates from screen coordinates to page coordinates using
|
|
// FPDF_DeviceToPage().
|
|
FPDF_EXPORT int FPDF_CALLCONV FPDFLink_GetLinkZOrderAtPoint(FPDF_PAGE page,
|
|
double x,
|
|
double y);
|
|
|
|
// Get destination info for |link|.
|
|
//
|
|
// document - handle to the document.
|
|
// link - handle to the link.
|
|
//
|
|
// Returns a handle to the destination, or NULL if there is no destination
|
|
// associated with the link. In this case, you should call FPDFLink_GetAction()
|
|
// to retrieve the action associated with |link|.
|
|
FPDF_EXPORT FPDF_DEST FPDF_CALLCONV FPDFLink_GetDest(FPDF_DOCUMENT document,
|
|
FPDF_LINK link);
|
|
|
|
// Get action info for |link|.
|
|
//
|
|
// link - handle to the link.
|
|
//
|
|
// Returns a handle to the action associated to |link|, or NULL if no action.
|
|
FPDF_EXPORT FPDF_ACTION FPDF_CALLCONV FPDFLink_GetAction(FPDF_LINK link);
|
|
|
|
// Enumerates all the link annotations in |page|.
|
|
//
|
|
// page - handle to the page.
|
|
// start_pos - the start position, should initially be 0 and is updated with
|
|
// the next start position on return.
|
|
// link_annot - the link handle for |startPos|.
|
|
//
|
|
// Returns TRUE on success.
|
|
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFLink_Enumerate(FPDF_PAGE page,
|
|
int* start_pos,
|
|
FPDF_LINK* link_annot);
|
|
|
|
// Get the rectangle for |link_annot|.
|
|
//
|
|
// link_annot - handle to the link annotation.
|
|
// rect - the annotation rectangle.
|
|
//
|
|
// Returns true on success.
|
|
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFLink_GetAnnotRect(FPDF_LINK link_annot,
|
|
FS_RECTF* rect);
|
|
|
|
// Get the count of quadrilateral points to the |link_annot|.
|
|
//
|
|
// link_annot - handle to the link annotation.
|
|
//
|
|
// Returns the count of quadrilateral points.
|
|
FPDF_EXPORT int FPDF_CALLCONV FPDFLink_CountQuadPoints(FPDF_LINK link_annot);
|
|
|
|
// Get the quadrilateral points for the specified |quad_index| in |link_annot|.
|
|
//
|
|
// link_annot - handle to the link annotation.
|
|
// quad_index - the specified quad point index.
|
|
// quad_points - receives the quadrilateral points.
|
|
//
|
|
// Returns true on success.
|
|
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
|
|
FPDFLink_GetQuadPoints(FPDF_LINK link_annot,
|
|
int quad_index,
|
|
FS_QUADPOINTSF* quad_points);
|
|
|
|
// Get meta-data |tag| content from |document|.
|
|
//
|
|
// document - handle to the document.
|
|
// tag - the tag to retrieve. The tag can be one of:
|
|
// Title, Author, Subject, Keywords, Creator, Producer,
|
|
// CreationDate, or ModDate.
|
|
// For detailed explanations 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 the tag. May be NULL.
|
|
// buflen - the length of the buffer, in bytes. May be 0.
|
|
//
|
|
// Returns the number of bytes in the tag, including trailing zeros.
|
|
//
|
|
// The |buffer| is always encoded in UTF-16LE. The |buffer| is followed by two
|
|
// bytes of zeros indicating the end of the string. If |buflen| is less than
|
|
// the returned length, or |buffer| is NULL, |buffer| will not be modified.
|
|
//
|
|
// For linearized files, FPDFAvail_IsFormAvail must be called before this, and
|
|
// it must have returned PDF_FORM_AVAIL or PDF_FORM_NOTEXIST. Before that, there
|
|
// is no guarantee the metadata has been loaded.
|
|
FPDF_EXPORT unsigned long FPDF_CALLCONV FPDF_GetMetaText(FPDF_DOCUMENT document,
|
|
FPDF_BYTESTRING tag,
|
|
void* buffer,
|
|
unsigned long buflen);
|
|
|
|
// Get the page label for |page_index| from |document|.
|
|
//
|
|
// document - handle to the document.
|
|
// page_index - the 0-based index of the page.
|
|
// buffer - a buffer for the page label. May be NULL.
|
|
// buflen - the length of the buffer, in bytes. May be 0.
|
|
//
|
|
// Returns the number of bytes in the page label, including trailing zeros.
|
|
//
|
|
// The |buffer| is always encoded in UTF-16LE. The |buffer| is followed by two
|
|
// bytes of zeros indicating the end of the string. If |buflen| is less than
|
|
// the returned length, or |buffer| is NULL, |buffer| will not be modified.
|
|
FPDF_EXPORT unsigned long FPDF_CALLCONV
|
|
FPDF_GetPageLabel(FPDF_DOCUMENT document,
|
|
int page_index,
|
|
void* buffer,
|
|
unsigned long buflen);
|
|
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
#endif // __cplusplus
|
|
|
|
#endif // PUBLIC_FPDF_DOC_H_
|