blob: 4a76a7fcd05016e4be8e41d728e4b0a413b87c49 [file] [log] [blame]
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07001// 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.
Tom Sepez9857e202015-05-13 17:09:26 -07004
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07005// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
Tom Sepez9857e202015-05-13 17:09:26 -07007#ifndef PUBLIC_FPDF_TEXT_H_
8#define PUBLIC_FPDF_TEXT_H_
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07009
Dan Sinclair85c8e7f2016-11-21 13:50:32 -050010// NOLINTNEXTLINE(build/include)
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070011#include "fpdfview.h"
12
13// Exported Functions
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18// Function: FPDFText_LoadPage
Tom Sepez9857e202015-05-13 17:09:26 -070019// Prepare information about all characters in a page.
Tom Sepez526f6d52015-01-28 15:49:13 -080020// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -070021// page - Handle to the page. Returned by FPDF_LoadPage function
22// (in FPDFVIEW module).
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070023// Return value:
Tom Sepez9857e202015-05-13 17:09:26 -070024// A handle to the text page information structure.
25// NULL if something goes wrong.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070026// Comments:
Nico Weber9d8ec5a2015-08-04 13:00:21 -070027// Application must call FPDFText_ClosePage to release the text page
28// information.
Tom Sepez526f6d52015-01-28 15:49:13 -080029//
Dan Sinclair00d2ad12017-08-10 14:13:02 -040030FPDF_EXPORT FPDF_TEXTPAGE FPDF_CALLCONV FPDFText_LoadPage(FPDF_PAGE page);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070031
32// Function: FPDFText_ClosePage
Nico Weber9d8ec5a2015-08-04 13:00:21 -070033// Release all resources allocated for a text page information
34// structure.
Tom Sepez526f6d52015-01-28 15:49:13 -080035// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -070036// text_page - Handle to a text page information structure.
37// Returned by FPDFText_LoadPage function.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070038// Return Value:
Tom Sepez9857e202015-05-13 17:09:26 -070039// None.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070040//
Dan Sinclair00d2ad12017-08-10 14:13:02 -040041FPDF_EXPORT void FPDF_CALLCONV FPDFText_ClosePage(FPDF_TEXTPAGE text_page);
Tom Sepez526f6d52015-01-28 15:49:13 -080042
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070043// Function: FPDFText_CountChars
Tom Sepez9857e202015-05-13 17:09:26 -070044// Get number of characters in a page.
Tom Sepez526f6d52015-01-28 15:49:13 -080045// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -070046// text_page - Handle to a text page information structure.
47// Returned by FPDFText_LoadPage function.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070048// Return value:
Tom Sepez9857e202015-05-13 17:09:26 -070049// Number of characters in the page. Return -1 for error.
Nico Weber9d8ec5a2015-08-04 13:00:21 -070050// Generated characters, like additional space characters, new line
51// characters, are also counted.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070052// Comments:
Nico Weber9d8ec5a2015-08-04 13:00:21 -070053// Characters in a page form a "stream", inside the stream, each
54// character has an index.
55// We will use the index parameters in many of FPDFTEXT functions. The
56// first character in the page
Tom Sepez9857e202015-05-13 17:09:26 -070057// has an index value of zero.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070058//
Dan Sinclair00d2ad12017-08-10 14:13:02 -040059FPDF_EXPORT int FPDF_CALLCONV FPDFText_CountChars(FPDF_TEXTPAGE text_page);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070060
61// Function: FPDFText_GetUnicode
Tom Sepez9857e202015-05-13 17:09:26 -070062// Get Unicode of a character in a page.
Tom Sepez526f6d52015-01-28 15:49:13 -080063// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -070064// text_page - Handle to a text page information structure.
65// Returned by FPDFText_LoadPage function.
Tom Sepez9857e202015-05-13 17:09:26 -070066// index - Zero-based index of the character.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070067// Return value:
Tom Sepez9857e202015-05-13 17:09:26 -070068// The Unicode of the particular character.
Nico Weber9d8ec5a2015-08-04 13:00:21 -070069// If a character is not encoded in Unicode and Foxit engine can't
70// convert to Unicode,
Tom Sepez9857e202015-05-13 17:09:26 -070071// the return value will be zero.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070072//
Dan Sinclair00d2ad12017-08-10 14:13:02 -040073FPDF_EXPORT unsigned int FPDF_CALLCONV
74FPDFText_GetUnicode(FPDF_TEXTPAGE text_page, int index);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070075
76// Function: FPDFText_GetFontSize
Tom Sepez9857e202015-05-13 17:09:26 -070077// Get the font size of a particular character.
Tom Sepez526f6d52015-01-28 15:49:13 -080078// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -070079// text_page - Handle to a text page information structure.
80// Returned by FPDFText_LoadPage function.
Tom Sepez9857e202015-05-13 17:09:26 -070081// index - Zero-based index of the character.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070082// Return value:
Nico Weber9d8ec5a2015-08-04 13:00:21 -070083// The font size of the particular character, measured in points (about
84// 1/72 inch).
Tom Sepez9857e202015-05-13 17:09:26 -070085// This is the typographic size of the font (so called "em size").
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070086//
Dan Sinclair00d2ad12017-08-10 14:13:02 -040087FPDF_EXPORT double FPDF_CALLCONV FPDFText_GetFontSize(FPDF_TEXTPAGE text_page,
88 int index);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070089
90// Function: FPDFText_GetCharBox
Tom Sepez9857e202015-05-13 17:09:26 -070091// Get bounding box of a particular character.
Tom Sepez526f6d52015-01-28 15:49:13 -080092// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -070093// text_page - Handle to a text page information structure.
94// Returned by FPDFText_LoadPage function.
Tom Sepez9857e202015-05-13 17:09:26 -070095// index - Zero-based index of the character.
Nico Weber9d8ec5a2015-08-04 13:00:21 -070096// left - Pointer to a double number receiving left position
97// of the character box.
98// right - Pointer to a double number receiving right position
99// of the character box.
100// bottom - Pointer to a double number receiving bottom position
101// of the character box.
102// top - Pointer to a double number receiving top position of
103// the character box.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700104// Return Value:
Tom Sepez9857e202015-05-13 17:09:26 -0700105// None.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700106// Comments:
Tom Sepez9857e202015-05-13 17:09:26 -0700107// All positions are measured in PDF "user space".
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700108//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400109FPDF_EXPORT void FPDF_CALLCONV FPDFText_GetCharBox(FPDF_TEXTPAGE text_page,
110 int index,
111 double* left,
112 double* right,
113 double* bottom,
114 double* top);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700115
Andrew Weintraubd3002342017-08-11 11:36:51 -0400116// Function: FPDFText_GetCharOrigin
117// Get origin of a particular character.
118// Parameters:
119// text_page - Handle to a text page information structure.
120// Returned by FPDFText_LoadPage function.
121// index - Zero-based index of the character.
122// x - Pointer to a double number receiving x coordinate of
123// the character origin.
124// y - Pointer to a double number receiving y coordinate of
125// the character origin.
126// Return Value:
127// Whether the call succeeded. If false, x and y are unchanged.
128// Comments:
129// All positions are measured in PDF "user space".
130//
131FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
132FPDFText_GetCharOrigin(FPDF_TEXTPAGE text_page,
133 int index,
134 double* x,
135 double* y);
136
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700137// Function: FPDFText_GetCharIndexAtPos
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700138// Get the index of a character at or nearby a certain position on the
139// page.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700140// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700141// text_page - Handle to a text page information structure.
142// Returned by FPDFText_LoadPage function.
Tom Sepez9857e202015-05-13 17:09:26 -0700143// x - X position in PDF "user space".
144// y - Y position in PDF "user space".
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700145// xTolerance - An x-axis tolerance value for character hit
146// detection, in point unit.
147// yTolerance - A y-axis tolerance value for character hit
148// detection, in point unit.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700149// Return Value:
Tom Sepez9857e202015-05-13 17:09:26 -0700150// The zero-based index of the character at, or nearby the point (x,y).
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700151// If there is no character at or nearby the point, return value will
152// be -1.
Tom Sepez9857e202015-05-13 17:09:26 -0700153// If an error occurs, -3 will be returned.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700154//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400155FPDF_EXPORT int FPDF_CALLCONV
156FPDFText_GetCharIndexAtPos(FPDF_TEXTPAGE text_page,
157 double x,
158 double y,
159 double xTolerance,
160 double yTolerance);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700161
162// Function: FPDFText_GetText
Tom Sepez9857e202015-05-13 17:09:26 -0700163// Extract unicode text string from the page.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700164// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700165// text_page - Handle to a text page information structure.
166// Returned by FPDFText_LoadPage function.
Tom Sepez9857e202015-05-13 17:09:26 -0700167// start_index - Index for the start characters.
168// count - Number of characters to be extracted.
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700169// result - A buffer (allocated by application) receiving the
170// extracted unicodes.
171// The size of the buffer must be able to hold the
172// number of characters plus a terminator.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700173// Return Value:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700174// Number of characters written into the result buffer, including the
175// trailing terminator.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700176// Comments:
Tom Sepez9857e202015-05-13 17:09:26 -0700177// This function ignores characters without unicode information.
Tom Sepez526f6d52015-01-28 15:49:13 -0800178//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400179FPDF_EXPORT int FPDF_CALLCONV FPDFText_GetText(FPDF_TEXTPAGE text_page,
180 int start_index,
181 int count,
182 unsigned short* result);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700183
184// Function: FPDFText_CountRects
Tom Sepez9857e202015-05-13 17:09:26 -0700185// Count number of rectangular areas occupied by a segment of texts.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700186// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700187// text_page - Handle to a text page information structure.
188// Returned by FPDFText_LoadPage function.
Tom Sepez9857e202015-05-13 17:09:26 -0700189// start_index - Index for the start characters.
190// count - Number of characters.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700191// Return value:
Tom Sepez9857e202015-05-13 17:09:26 -0700192// Number of rectangles. Zero for error.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700193// Comments:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700194// This function, along with FPDFText_GetRect can be used by
195// applications to detect the position
196// on the page for a text segment, so proper areas can be highlighted
197// or something.
198// FPDFTEXT will automatically merge small character boxes into bigger
199// one if those characters
Tom Sepez9857e202015-05-13 17:09:26 -0700200// are on the same line and use same font settings.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700201//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400202FPDF_EXPORT int FPDF_CALLCONV FPDFText_CountRects(FPDF_TEXTPAGE text_page,
203 int start_index,
204 int count);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700205
206// Function: FPDFText_GetRect
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700207// Get a rectangular area from the result generated by
208// FPDFText_CountRects.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700209// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700210// text_page - Handle to a text page information structure.
211// Returned by FPDFText_LoadPage function.
Tom Sepez9857e202015-05-13 17:09:26 -0700212// rect_index - Zero-based index for the rectangle.
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700213// left - Pointer to a double value receiving the rectangle
214// left boundary.
215// top - Pointer to a double value receiving the rectangle
216// top boundary.
217// right - Pointer to a double value receiving the rectangle
218// right boundary.
219// bottom - Pointer to a double value receiving the rectangle
220// bottom boundary.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700221// Return Value:
Tom Sepez9857e202015-05-13 17:09:26 -0700222// None.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700223//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400224FPDF_EXPORT void FPDF_CALLCONV FPDFText_GetRect(FPDF_TEXTPAGE text_page,
225 int rect_index,
226 double* left,
227 double* top,
228 double* right,
229 double* bottom);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700230
231// Function: FPDFText_GetBoundedText
Tom Sepez9857e202015-05-13 17:09:26 -0700232// Extract unicode text within a rectangular boundary on the page.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700233// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700234// text_page - Handle to a text page information structure.
235// Returned by FPDFText_LoadPage function.
Tom Sepez9857e202015-05-13 17:09:26 -0700236// left - Left boundary.
237// top - Top boundary.
238// right - Right boundary.
239// bottom - Bottom boundary.
240// buffer - A unicode buffer.
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700241// buflen - Number of characters (not bytes) for the buffer,
242// excluding an additional terminator.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700243// Return Value:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700244// If buffer is NULL or buflen is zero, return number of characters
245// (not bytes) of text present within
246// the rectangle, excluding a terminating NUL. Generally you should
247// pass a buffer at least one larger
248// than this if you want a terminating NUL, which will be provided if
249// space is available.
250// Otherwise, return number of characters copied into the buffer,
251// including the terminating NUL
Tom Sepez9857e202015-05-13 17:09:26 -0700252// when space for it is available.
Tom Sepez526f6d52015-01-28 15:49:13 -0800253// Comment:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700254// If the buffer is too small, as much text as will fit is copied into
255// it.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700256//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400257FPDF_EXPORT int FPDF_CALLCONV FPDFText_GetBoundedText(FPDF_TEXTPAGE text_page,
258 double left,
259 double top,
260 double right,
261 double bottom,
262 unsigned short* buffer,
263 int buflen);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700264
265// Flags used by FPDFText_FindStart function.
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700266#define FPDF_MATCHCASE \
267 0x00000001 // If not set, it will not match case by default.
268#define FPDF_MATCHWHOLEWORD \
269 0x00000002 // If not set, it will not match the whole word by default.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700270
271// Function: FPDFText_FindStart
Tom Sepez9857e202015-05-13 17:09:26 -0700272// Start a search.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700273// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700274// text_page - Handle to a text page information structure.
275// Returned by FPDFText_LoadPage function.
Tom Sepez9857e202015-05-13 17:09:26 -0700276// findwhat - A unicode match pattern.
277// flags - Option flags.
278// start_index - Start from this character. -1 for end of the page.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700279// Return Value:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700280// A handle for the search context. FPDFText_FindClose must be called
281// to release this handle.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700282//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400283FPDF_EXPORT FPDF_SCHHANDLE FPDF_CALLCONV
284FPDFText_FindStart(FPDF_TEXTPAGE text_page,
285 FPDF_WIDESTRING findwhat,
286 unsigned long flags,
287 int start_index);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700288
289// Function: FPDFText_FindNext
Tom Sepez9857e202015-05-13 17:09:26 -0700290// Search in the direction from page start to end.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700291// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700292// handle - A search context handle returned by
293// FPDFText_FindStart.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700294// Return Value:
Tom Sepez9857e202015-05-13 17:09:26 -0700295// Whether a match is found.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700296//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400297FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_FindNext(FPDF_SCHHANDLE handle);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700298
299// Function: FPDFText_FindPrev
Tom Sepez9857e202015-05-13 17:09:26 -0700300// Search in the direction from page end to start.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700301// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700302// handle - A search context handle returned by
303// FPDFText_FindStart.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700304// Return Value:
Tom Sepez9857e202015-05-13 17:09:26 -0700305// Whether a match is found.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700306//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400307FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_FindPrev(FPDF_SCHHANDLE handle);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700308
309// Function: FPDFText_GetSchResultIndex
Tom Sepez9857e202015-05-13 17:09:26 -0700310// Get the starting character index of the search result.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700311// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700312// handle - A search context handle returned by
313// FPDFText_FindStart.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700314// Return Value:
Tom Sepez9857e202015-05-13 17:09:26 -0700315// Index for the starting character.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700316//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400317FPDF_EXPORT int FPDF_CALLCONV FPDFText_GetSchResultIndex(FPDF_SCHHANDLE handle);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700318
319// Function: FPDFText_GetSchCount
Tom Sepez9857e202015-05-13 17:09:26 -0700320// Get the number of matched characters in the search result.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700321// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700322// handle - A search context handle returned by
323// FPDFText_FindStart.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700324// Return Value:
Tom Sepez9857e202015-05-13 17:09:26 -0700325// Number of matched characters.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700326//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400327FPDF_EXPORT int FPDF_CALLCONV FPDFText_GetSchCount(FPDF_SCHHANDLE handle);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700328
329// Function: FPDFText_FindClose
Tom Sepez9857e202015-05-13 17:09:26 -0700330// Release a search context.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700331// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700332// handle - A search context handle returned by
333// FPDFText_FindStart.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700334// Return Value:
Tom Sepez9857e202015-05-13 17:09:26 -0700335// None.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700336//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400337FPDF_EXPORT void FPDF_CALLCONV FPDFText_FindClose(FPDF_SCHHANDLE handle);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700338
339// Function: FPDFLink_LoadWebLinks
Tom Sepez9857e202015-05-13 17:09:26 -0700340// Prepare information about weblinks in a page.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700341// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700342// text_page - Handle to a text page information structure.
343// Returned by FPDFText_LoadPage function.
Tom Sepez526f6d52015-01-28 15:49:13 -0800344// Return Value:
Tom Sepez9857e202015-05-13 17:09:26 -0700345// A handle to the page's links information structure.
346// NULL if something goes wrong.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700347// Comments:
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700348// Weblinks are those links implicitly embedded in PDF pages. PDF also
349// has a type of
350// annotation called "link", FPDFTEXT doesn't deal with that kind of
351// link.
352// FPDFTEXT weblink feature is useful for automatically detecting links
353// in the page
354// contents. For example, things like "http://www.foxitsoftware.com"
355// will be detected,
356// so applications can allow user to click on those characters to
357// activate the link,
Tom Sepez9857e202015-05-13 17:09:26 -0700358// even the PDF doesn't come with link annotations.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700359//
Tom Sepez9857e202015-05-13 17:09:26 -0700360// FPDFLink_CloseWebLinks must be called to release resources.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700361//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400362FPDF_EXPORT FPDF_PAGELINK FPDF_CALLCONV
363FPDFLink_LoadWebLinks(FPDF_TEXTPAGE text_page);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700364
365// Function: FPDFLink_CountWebLinks
Tom Sepez9857e202015-05-13 17:09:26 -0700366// Count number of detected web links.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700367// Parameters:
Tom Sepez9857e202015-05-13 17:09:26 -0700368// link_page - Handle returned by FPDFLink_LoadWebLinks.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700369// Return Value:
Tom Sepez9857e202015-05-13 17:09:26 -0700370// Number of detected web links.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700371//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400372FPDF_EXPORT int FPDF_CALLCONV FPDFLink_CountWebLinks(FPDF_PAGELINK link_page);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700373
374// Function: FPDFLink_GetURL
Tom Sepez9857e202015-05-13 17:09:26 -0700375// Fetch the URL information for a detected web link.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700376// Parameters:
Tom Sepez9857e202015-05-13 17:09:26 -0700377// link_page - Handle returned by FPDFLink_LoadWebLinks.
378// link_index - Zero-based index for the link.
tsepez69141182016-04-21 10:43:39 -0700379// buffer - A unicode buffer for the result.
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700380// buflen - Number of characters (not bytes) for the buffer,
tsepez69141182016-04-21 10:43:39 -0700381// including an additional terminator.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700382// Return Value:
tsepez69141182016-04-21 10:43:39 -0700383// If |buffer| is NULL or |buflen| is zero, return the number of
384// characters (not bytes) needed to buffer the result (an additional
385// terminator is included in this count).
386// Otherwise, copy the result into |buffer|, truncating at |buflen| if
387// the result is too large to fit, and return the number of characters
388// actually copied into the buffer (the additional terminator is also
389// included in this count).
390// If |link_index| does not correspond to a valid link, then the result
391// is an empty string.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700392//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400393FPDF_EXPORT int FPDF_CALLCONV FPDFLink_GetURL(FPDF_PAGELINK link_page,
394 int link_index,
395 unsigned short* buffer,
396 int buflen);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700397
398// Function: FPDFLink_CountRects
Tom Sepez9857e202015-05-13 17:09:26 -0700399// Count number of rectangular areas for the link.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700400// Parameters:
Tom Sepez9857e202015-05-13 17:09:26 -0700401// link_page - Handle returned by FPDFLink_LoadWebLinks.
402// link_index - Zero-based index for the link.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700403// Return Value:
tsepez69141182016-04-21 10:43:39 -0700404// Number of rectangular areas for the link. If |link_index| does
405// not correspond to a valid link, then 0 is returned.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700406//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400407FPDF_EXPORT int FPDF_CALLCONV FPDFLink_CountRects(FPDF_PAGELINK link_page,
408 int link_index);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700409
410// Function: FPDFLink_GetRect
Tom Sepez9857e202015-05-13 17:09:26 -0700411// Fetch the boundaries of a rectangle for a link.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700412// Parameters:
Tom Sepez9857e202015-05-13 17:09:26 -0700413// link_page - Handle returned by FPDFLink_LoadWebLinks.
414// link_index - Zero-based index for the link.
415// rect_index - Zero-based index for a rectangle.
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700416// left - Pointer to a double value receiving the rectangle
tsepez69141182016-04-21 10:43:39 -0700417// left boundary.
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700418// top - Pointer to a double value receiving the rectangle
tsepez69141182016-04-21 10:43:39 -0700419// top boundary.
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700420// right - Pointer to a double value receiving the rectangle
tsepez69141182016-04-21 10:43:39 -0700421// right boundary.
Nico Weber9d8ec5a2015-08-04 13:00:21 -0700422// bottom - Pointer to a double value receiving the rectangle
tsepez69141182016-04-21 10:43:39 -0700423// bottom boundary.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700424// Return Value:
tsepez69141182016-04-21 10:43:39 -0700425// None. If |link_index| does not correspond to a valid link, then
426// |left|, |top|, |right|, and |bottom| remain unmodified.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700427//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400428FPDF_EXPORT void FPDF_CALLCONV FPDFLink_GetRect(FPDF_PAGELINK link_page,
429 int link_index,
430 int rect_index,
431 double* left,
432 double* top,
433 double* right,
434 double* bottom);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700435
436// Function: FPDFLink_CloseWebLinks
Tom Sepez9857e202015-05-13 17:09:26 -0700437// Release resources used by weblink feature.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700438// Parameters:
Tom Sepez9857e202015-05-13 17:09:26 -0700439// link_page - Handle returned by FPDFLink_LoadWebLinks.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700440// Return Value:
Tom Sepez9857e202015-05-13 17:09:26 -0700441// None.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700442//
Dan Sinclair00d2ad12017-08-10 14:13:02 -0400443FPDF_EXPORT void FPDF_CALLCONV FPDFLink_CloseWebLinks(FPDF_PAGELINK link_page);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700444
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700445#ifdef __cplusplus
Tom Sepez9857e202015-05-13 17:09:26 -0700446}
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700447#endif
448
Tom Sepez9857e202015-05-13 17:09:26 -0700449#endif // PUBLIC_FPDF_TEXT_H_