• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
14 extern "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 //
27 DLLEXPORT 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 //
37 DLLEXPORT 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 //
47 DLLEXPORT 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 //
63 DLLEXPORT 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 //
77 DLLEXPORT 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 //
95 DLLEXPORT 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 //
106 DLLEXPORT 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 //
120 DLLEXPORT 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 //
131 DLLEXPORT 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 //
140 DLLEXPORT 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 //
152 DLLEXPORT 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 //
162 DLLEXPORT 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 //
171 DLLEXPORT 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_
176 typedef 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 //
198 DLLEXPORT 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 //
222 DLLEXPORT 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