// 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_EDIT_H_ #define PUBLIC_FPDF_EDIT_H_ #include <stdint.h> #include "fpdfview.h" // Define all types used in the SDK. Note they can be simply regarded as opaque // pointers // or long integer numbers. #define FPDF_ARGB(a, r, g, b) \ ((((uint32_t)(((uint8_t)(b) | ((FX_WORD)((uint8_t)(g)) << 8)) | \ (((FX_DWORD)(uint8_t)(r)) << 16)))) | \ (((FX_DWORD)(uint8_t)(a)) << 24)) #define FPDF_GetBValue(argb) ((uint8_t)(argb)) #define FPDF_GetGValue(argb) ((uint8_t)(((uint16_t)(argb)) >> 8)) #define FPDF_GetRValue(argb) ((uint8_t)((argb) >> 16)) #define FPDF_GetAValue(argb) ((uint8_t)((argb) >> 24)) #ifdef __cplusplus extern "C" { #endif ////////////////////////////////////////////////////////////////////// // // Document functions // ////////////////////////////////////////////////////////////////////// // Function: FPDF_CreateNewDocument // Create a new PDF document. // Parameters: // None. // Return value: // A handle to a document. If failed, NULL is returned. DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_CreateNewDocument(); ////////////////////////////////////////////////////////////////////// // // Page functions // ////////////////////////////////////////////////////////////////////// // Function: FPDFPage_New // Construct an empty page. // Parameters: // document - Handle to document. Returned by FPDF_LoadDocument // and FPDF_CreateNewDocument. // page_index - The index of a page. // width - The page width. // height - The page height. // Return value: // The handle to the page. // Comments: // Loaded page can be deleted by FPDFPage_Delete. DLLEXPORT FPDF_PAGE STDCALL FPDFPage_New(FPDF_DOCUMENT document, int page_index, double width, double height); // Function: FPDFPage_Delete // Delete a PDF page. // Parameters: // document - Handle to document. Returned by FPDF_LoadDocument // and FPDF_CreateNewDocument. // page_index - The index of a page. // Return value: // None. DLLEXPORT void STDCALL FPDFPage_Delete(FPDF_DOCUMENT document, int page_index); // Function: FPDFPage_GetRotation // Get the page rotation. One of following values will be returned: // 0(0), 1(90), 2(180), 3(270). // Parameters: // page - Handle to a page. Returned by FPDFPage_New or // FPDF_LoadPage. // Return value: // The PDF page rotation. // Comment: // The PDF page rotation is rotated clockwise. DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page); // Function: FPDFPage_SetRotation // Set page rotation. One of following values will be set: 0(0), 1(90), // 2(180), 3(270). // Parameters: // page - Handle to a page. Returned by FPDFPage_New or // FPDF_LoadPage. // rotate - The value of the PDF page rotation. // Return value: // None. // Comment: // The PDF page rotation is rotated clockwise. // DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate); // Function: FPDFPage_InsertObject // Insert an object to the page. The page object is automatically // freed. // Parameters: // page - Handle to a page. Returned by FPDFPage_New or // FPDF_LoadPage. // page_obj - Handle to a page object. Returned by // FPDFPageObj_NewTextObj,FPDFPageObj_NewTextObjEx and // FPDFPageObj_NewPathObj. // Return value: // None. DLLEXPORT void STDCALL FPDFPage_InsertObject(FPDF_PAGE page, FPDF_PAGEOBJECT page_obj); // Function: FPDFPage_CountObject // Get number of page objects inside the page. // Parameters: // page - Handle to a page. Returned by FPDFPage_New or // FPDF_LoadPage. // Return value: // The number of the page object. DLLEXPORT int STDCALL FPDFPage_CountObject(FPDF_PAGE page); // Function: FPDFPage_GetObject // Get page object by index. // Parameters: // page - Handle to a page. Returned by FPDFPage_New or // FPDF_LoadPage. // index - The index of a page object. // Return value: // The handle of the page object. Null for failed. DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPage_GetObject(FPDF_PAGE page, int index); // Function: FPDFPage_HasTransparency // Check that whether the content of specified PDF page contains // transparency. // Parameters: // page - Handle to a page. Returned by FPDFPage_New or // FPDF_LoadPage. // Return value: // TRUE means that the PDF page does contains transparency. // Otherwise, returns FALSE. DLLEXPORT FPDF_BOOL STDCALL FPDFPage_HasTransparency(FPDF_PAGE page); // Function: FPDFPage_GenerateContent // Generate PDF Page content. // Parameters: // page - Handle to a page. Returned by FPDFPage_New or // FPDF_LoadPage. // Return value: // True if successful, false otherwise. // Comment: // Before you save the page to a file, or reload the page, you must // call the FPDFPage_GenerateContent function. // Or the changed information will be lost. DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(FPDF_PAGE page); ////////////////////////////////////////////////////////////////////// // // Page Object functions // ////////////////////////////////////////////////////////////////////// // Function: FPDFPageObj_HasTransparency // Check that whether the specified PDF page object contains // transparency. // Parameters: // pageObject - Handle to a page object. // Return value: // TRUE means that the PDF page object does contains transparency. // Otherwise, returns FALSE. DLLEXPORT FPDF_BOOL STDCALL FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT pageObject); // Function: FPDFPageObj_Transform // Transform (scale, rotate, shear, move) page object. // Parameters: // page_object - Handle to a page object. Returned by // FPDFPageObj_NewImageObj. // a - The coefficient "a" of the matrix. // b - The coefficient "b" of the matrix. // c - The coefficient "c" of the matrix. // d - The coefficient "d" of the matrix. // e - The coefficient "e" of the matrix. // f - The coefficient "f" of the matrix. // Return value: // None. DLLEXPORT void STDCALL FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object, double a, double b, double c, double d, double e, double f); // Function: FPDFPage_TransformAnnots // Transform (scale, rotate, shear, move) all annots in a page. // Parameters: // page - Handle to a page. // a - The coefficient "a" of the matrix. // b - The coefficient "b" of the matrix. // c - The coefficient "c" of the matrix. // d - The coefficient "d" of the matrix. // e - The coefficient "e" of the matrix. // f - The coefficient "f" of the matrix. // Return value: // None. DLLEXPORT void STDCALL FPDFPage_TransformAnnots(FPDF_PAGE page, double a, double b, double c, double d, double e, double f); // The page object constants. #define FPDF_PAGEOBJ_TEXT 1 #define FPDF_PAGEOBJ_PATH 2 #define FPDF_PAGEOBJ_IMAGE 3 #define FPDF_PAGEOBJ_SHADING 4 #define FPDF_PAGEOBJ_FORM 5 ////////////////////////////////////////////////////////////////////// // // Image functions // ////////////////////////////////////////////////////////////////////// // Function: FPDFPageObj_NewImgeObj // Create a new Image Object. // Parameters: // document - Handle to document. Returned by // FPDF_LoadDocument or FPDF_CreateNewDocument function. // Return Value: // Handle of image object. DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPageObj_NewImgeObj(FPDF_DOCUMENT document); // Function: FPDFImageObj_LoadJpegFile // Load Image from a JPEG image file and then set it to an image // object. // Parameters: // pages - Pointers to the start of all loaded pages, could // be NULL. // nCount - Number of pages, could be 0. // image_object - Handle of image object returned by // FPDFPageObj_NewImgeObj. // fileAccess - The custom file access handler, which specifies // the JPEG image file. // Return Value: // TRUE if successful, FALSE otherwise. // Note: // The image object might already has an associated image, which is // shared and cached by the loaded pages, In this case, we need to // clear the cache of image for all the loaded pages. // Pass pages and count to this API to clear the image cache. DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_LoadJpegFile(FPDF_PAGE* pages, int nCount, FPDF_PAGEOBJECT image_object, FPDF_FILEACCESS* fileAccess); // Function: FPDFImageObj_SetMatrix // Set the matrix of an image object. // Parameters: // image_object - Handle of image object returned by // FPDFPageObj_NewImgeObj. // a - The coefficient "a" of the matrix. // b - The coefficient "b" of the matrix. // c - The coefficient "c" of the matrix. // d - The coefficient "d" of the matrix. // e - The coefficient "e" of the matrix. // f - The coefficient "f" of the matrix. // Return value: // TRUE if successful, FALSE otherwise. DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetMatrix(FPDF_PAGEOBJECT image_object, double a, double b, double c, double d, double e, double f); // Function: FPDFImageObj_SetBitmap // Set the bitmap to an image object. // Parameters: // pages - Pointer's to the start of all loaded pages. // nCount - Number of pages. // image_object - Handle of image object returned by // FPDFPageObj_NewImgeObj. // bitmap - The handle of the bitmap which you want to set // it to the image object. // Return value: // TRUE if successful, FALSE otherwise. DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetBitmap(FPDF_PAGE* pages, int nCount, FPDF_PAGEOBJECT image_object, FPDF_BITMAP bitmap); #ifdef __cplusplus } #endif #endif // PUBLIC_FPDF_EDIT_H_