7#include "public/fpdf_edit.h"
14#include "constants/page_object.h"
15#include "core/fpdfapi/edit/cpdf_pagecontentgenerator.h"
16#include "core/fpdfapi/page/cpdf_colorspace.h"
17#include "core/fpdfapi/page/cpdf_docpagedata.h"
18#include "core/fpdfapi/page/cpdf_form.h"
19#include "core/fpdfapi/page/cpdf_formobject.h"
20#include "core/fpdfapi/page/cpdf_imageobject.h"
21#include "core/fpdfapi/page/cpdf_page.h"
22#include "core/fpdfapi/page/cpdf_pageimagecache.h"
23#include "core/fpdfapi/page/cpdf_pageobject.h"
24#include "core/fpdfapi/page/cpdf_pathobject.h"
25#include "core/fpdfapi/page/cpdf_shadingobject.h"
26#include "core/fpdfapi/page/cpdf_textobject.h"
27#include "core/fpdfapi/parser/cpdf_array.h"
28#include "core/fpdfapi/parser/cpdf_dictionary.h"
29#include "core/fpdfapi/parser/cpdf_document.h"
30#include "core/fpdfapi/parser/cpdf_name.h"
31#include "core/fpdfapi/parser/cpdf_number.h"
32#include "core/fpdfapi/parser/cpdf_string.h"
33#include "core/fpdfapi/render/cpdf_docrenderdata.h"
34#include "core/fpdfdoc/cpdf_annot.h"
35#include "core/fpdfdoc/cpdf_annotlist.h"
36#include "core/fxcrt/compiler_specific.h"
37#include "core/fxcrt/fx_extension.h"
38#include "core/fxcrt/fx_memcpy_wrappers.h"
39#include "core/fxcrt/numerics/safe_conversions.h"
40#include "core/fxcrt/span.h"
41#include "core/fxcrt/span_util.h"
42#include "core/fxcrt/stl_util.h"
43#include "fpdfsdk/cpdfsdk_helpers.h"
44#include "public/fpdf_formfill.h"
47#include "fpdfsdk/fpdfxfa/cpdfxfa_context.h"
48#include "fpdfsdk/fpdfxfa/cpdfxfa_page.h"
55 "FPDF_PAGEOBJ_TEXT/CPDF_PageObject::TEXT mismatch");
58 "FPDF_PAGEOBJ_PATH/CPDF_PageObject::PATH mismatch");
61 "FPDF_PAGEOBJ_IMAGE/CPDF_PageObject::IMAGE mismatch");
64 "FPDF_PAGEOBJ_SHADING/CPDF_PageObject::SHADING mismatch");
67 "FPDF_PAGEOBJ_FORM/CPDF_PageObject::FORM mismatch");
69bool IsPageObject(CPDF_Page* pPage) {
78 ToName(pFormDict->GetObjectFor(pdfium::page_object::kType)->GetDirect());
79 return pName && pName->GetString() ==
"Page";
88 CPDF_PathObject* pPathObj = pPageObj
->AsPath();
103 CPDF_FormObject* pFormObj = pPageObj
->AsForm();
111 CPDF_ContentMarkItem* pMarkItem =
113 return pMarkItem ? pMarkItem
->GetParam() :
nullptr;
117 FPDF_PAGEOBJECTMARK mark) {
122 CPDF_ContentMarkItem* pMarkItem =
136 FPDF_PAGEOBJECTMARK mark) {
137 const CPDF_ContentMarkItem* pMarkItem =
142CPDF_FormObject* CPDFFormObjectFromFPDFPageObject(FPDF_PAGEOBJECT page_object) {
144 return pPageObj ? pPageObj
->AsForm() :
nullptr;
148 FPDF_PAGEOBJECT page_object) {
149 CPDF_FormObject* pFormObject = CPDFFormObjectFromFPDFPageObject(page_object);
150 return pFormObject ? pFormObject
->form() :
nullptr;
158 std::make_unique<CPDF_DocPageData>());
159 pDoc->CreateNewDoc();
168 "D:%04d%02d%02d%02d%02d%02d", pTM->tm_year + 1900
, pTM->tm_mon + 1
,
169 pTM->tm_mday
, pTM->tm_hour
, pTM->tm_min
, pTM->tm_sec
);
177 pInfoDict->SetNewFor<CPDF_String>(
"CreationDate", DateStr);
178 pInfoDict->SetNewFor<CPDF_String>(
"Creator", L"PDFium");
182 return FPDFDocumentFromCPDFDocument(pDoc.release());
192 const uint32_t page_obj_num = pExtension ? pExtension
->DeletePage(page_index
)
199 const int* page_indices,
200 unsigned long page_indices_len,
201 int dest_page_index) {
209 return doc->MovePages(
233 if (pDoc->GetExtension()) {
234 auto pXFAPage = pdfium::MakeRetain<CPDFXFA_Page>(pDoc, page_index);
235 pXFAPage->LoadPDFPageFromDict(pPageDict);
236 return FPDFPageFromIPDFPage(pXFAPage.Leak());
240 auto pPage =
pdfium::MakeRetain<CPDF_Page>(pDoc, pPageDict);
241 pPage->AddPageImageCache();
242 pPage->ParseContent();
244 return FPDFPageFromIPDFPage(pPage.Leak());
258 std::unique_ptr<CPDF_PageObject> pPageObjHolder(pPageObj);
260 if (!IsPageObject(pPage))
264 pPage->AppendPageObject(
std::move(pPageObjHolder));
265 CalcBoundingBox(pPageObj);
275 if (!IsPageObject(pPage))
279 return !!pPage->RemovePageObject(pPageObj).release();
284 if (!IsPageObject(pPage))
287 return pdfium::checked_cast<
int>(pPage->GetPageObjectCount());
293 if (!IsPageObject(pPage))
296 return FPDFPageObjectFromCPDFPageObject(pPage->GetPageObjectByIndex(index));
335 if (index >= pMarks->CountItems())
338 return FPDFPageObjectMarkFromCPDFContentMarkItem(pMarks->GetItem(index));
351 const size_t index = pMarks->CountItems() - 1;
352 return FPDFPageObjectMarkFromCPDFContentMarkItem(pMarks->GetItem(index));
358 CPDF_ContentMarkItem* pMarkItem =
360 if (!pPageObj || !pMarkItem)
373 unsigned long buflen,
374 unsigned long* out_buflen) {
375 const CPDF_ContentMarkItem* pMarkItem =
377 if (!pMarkItem || !out_buflen) {
381 *out_buflen = Utf16EncodeMaybeCopyAndReturnLength(
382 WideString::FromUTF8(pMarkItem->GetName().AsStringView()),
389 const CPDF_ContentMarkItem* pMarkItem =
395 return pParams ?
fxcrt::CollectionSize<
int>(*pParams) : 0;
402 unsigned long buflen,
403 unsigned long* out_buflen) {
412 for (
auto& it : locker) {
415 *out_buflen = Utf16EncodeMaybeCopyAndReturnLength(
416 WideString::FromUTF8(it.first.AsStringView()),
428 FPDF_BYTESTRING key) {
449 if (!pObj || !pObj->IsNumber())
452 *out_value = pObj->GetInteger();
460 unsigned long buflen,
461 unsigned long* out_buflen) {
470 if (!pObj || !pObj->IsString())
474 *out_buflen = Utf16EncodeMaybeCopyAndReturnLength(
475 WideString::FromUTF8(pObj->GetString().AsStringView()),
484 unsigned long buflen,
485 unsigned long* out_buflen) {
494 if (!pObj || !pObj->IsString())
498 auto result_span =
UNSAFE_BUFFERS(SpanFromFPDFApiArgs(buffer, buflen));
500 fxcrt::try_spancpy(result_span, value.span());
501 *out_buflen =
pdfium::checked_cast<
unsigned long>(value.span().size());
539 FPDF_PAGEOBJECT page_object,
540 FPDF_PAGEOBJECTMARK mark,
544 if (!pPageObj || !PageObjectContainsMark(pPageObj, mark))
548 GetOrCreateMarkParamsDict(document, mark);
552 pParams->SetNewFor<CPDF_Number>(key, value);
559 FPDF_PAGEOBJECT page_object,
560 FPDF_PAGEOBJECTMARK mark,
562 FPDF_BYTESTRING value) {
564 if (!pPageObj || !PageObjectContainsMark(pPageObj, mark))
568 GetOrCreateMarkParamsDict(document, mark);
572 pParams->SetNewFor<CPDF_String>(key, value);
579 FPDF_PAGEOBJECT page_object,
580 FPDF_PAGEOBJECTMARK mark,
583 unsigned long value_len) {
584 if (!value && value_len > 0) {
589 if (!pPageObj || !PageObjectContainsMark(pPageObj, mark)) {
594 GetOrCreateMarkParamsDict(document, mark);
600 pParams->SetNewFor<CPDF_String>(
603 pdfium::make_span(
static_cast<
const uint8_t*>(value), value_len)),
611 FPDF_PAGEOBJECTMARK mark,
612 FPDF_BYTESTRING key) {
621 auto removed = pParams->RemoveFor(key);
631 return pPageObj ?
static_cast<
int>(pPageObj
->GetType())
637 if (!IsPageObject(pPage))
653 const FS_MATRIX matrix{
static_cast<
float>(a),
static_cast<
float>(b),
654 static_cast<
float>(c),
static_cast<
float>(d),
655 static_cast<
float>(e),
static_cast<
float>(f)};
677 if (!pPageObj || !matrix)
701 if (!pPageObj || !matrix)
727 FPDF_BYTESTRING blend_mode) {
747 CPDF_AnnotList AnnotList
(pPage
);
748 for (size_t i = 0; i < AnnotList.Count(); ++i) {
759 pRectArray = pAnnotDict->SetNewFor<
CPDF_Array>(
"Rect");
761 pRectArray->AppendNew<CPDF_Number>(rect
.left);
762 pRectArray->AppendNew<CPDF_Number>(rect
.bottom);
763 pRectArray->AppendNew<CPDF_Number>(rect
.right);
764 pRectArray->AppendNew<CPDF_Number>(rect
.top);
773 if (!IsPageObject(pPage))
788 if (!pPageObj || R > 255 || G > 255 || B > 255 || A > 255)
791 std::vector<
float> rgb = {R / 255.f, G / 255.f, B / 255.f};
807 if (!pPageObj || !R || !G || !B || !A)
842 FS_QUADPOINTSF* quad_points) {
844 if (!cpage_object || !quad_points)
861 const CFX_PointF bottom_left = matrix.Transform({bbox.left, bbox.bottom});
862 const CFX_PointF bottom_right = matrix.Transform({bbox.right, bbox.bottom});
863 const CFX_PointF top_right = matrix.Transform({bbox.right, bbox.top});
864 const CFX_PointF top_left = matrix.Transform({bbox.left, bbox.top});
867 quad_points->x1 = bottom_left.x;
868 quad_points->y1 = bottom_left.y;
869 quad_points->x2 = bottom_right.x;
870 quad_points->y2 = bottom_right.y;
871 quad_points->x3 = top_right.x;
872 quad_points->y3 = top_right.y;
873 quad_points->x4 = top_left.x;
874 quad_points->y4 = top_left.y;
885 if (!pPageObj || R > 255 || G > 255 || B > 255 || A > 255)
888 std::vector<
float> rgb = {R / 255.f, G / 255.f, B / 255.f};
904 if (!pPageObj || !R || !G || !B || !A) {
922 if (!pPageObj || width < 0.0f)
933 if (!pPageObj || !width)
987 if (!pPageObj || !phase)
1008 return pPageObj ?
pdfium::checked_cast<
int>(
1016 size_t dash_count) {
1028 return fxcrt::try_spancpy(result_span,
pdfium::make_span(dash_vector));
1033 const float* dash_array,
1036 if (dash_count > 0 && !dash_array)
1043 std::vector<
float> dashes;
1044 if (dash_count > 0) {
1045 dashes.reserve(dash_count);
1046 dashes.assign(dash_array,
UNSAFE_TODO(dash_array + dash_count));
1055 const auto* pObjectList = CPDFPageObjHolderFromFPDFFormObject(form_object);
1057 ?
pdfium::checked_cast<
int>(pObjectList->GetPageObjectCount())
1063 const auto* pObjectList = CPDFPageObjHolderFromFPDFFormObject(form_object);
1067 return FPDFPageObjectFromCPDFPageObject(
1068 pObjectList->GetPageObjectByIndex(index));
fxcrt::ByteString ByteString
constexpr CFX_FloatRect(float l, float b, float r, float t)
float GetLineDashPhase() const
void SetLineWidth(float width)
void SetLineJoin(CFX_GraphStateData::LineJoin join)
void SetLineDashPhase(float phase)
float GetLineWidth() const
CFX_GraphStateData::LineCap GetLineCap() const
CFX_GraphStateData::LineJoin GetLineJoin() const
void SetLineCap(CFX_GraphStateData::LineCap cap)
CFX_Matrix & operator=(const CFX_Matrix &other)=default
CFX_FloatRect TransformRect(const CFX_FloatRect &rect) const
constexpr CFX_Matrix(float a1, float b1, float c1, float d1, float e1, float f1)
CPDF_AnnotList(CPDF_Page *pPage)
CFX_FloatRect GetRect() const
std::vector< RetainPtr< CPDF_Object > >::const_iterator const_iterator
static RetainPtr< CPDF_ColorSpace > GetStockCS(Family family)
FX_COLORREF GetStrokeColorRef() const
FX_COLORREF GetFillColorRef() const
RetainPtr< CPDF_Dictionary > GetParam()
void SetDirectDict(RetainPtr< CPDF_Dictionary > pDict)
bool RemoveMark(CPDF_ContentMarkItem *pMarkItem)
bool ContainsItem(const CPDF_ContentMarkItem *pItem) const
int GetMarkedContentID() const
void AddMark(ByteString name)
std::map< ByteString, RetainPtr< CPDF_Object >, std::less<> > DictMap
virtual uint32_t DeletePage(int page_index)=0
Extension * GetExtension() const
void SetPageToNullObject(uint32_t page_obj_num)
uint32_t DeletePage(int iPage)
float GetStrokeAlpha() const
float GetFillAlpha() const
void SetFillAlpha(float alpha)
void SetStrokeAlpha(float alpha)
BlendMode GetBlendType() const
void SetBlendMode(const ByteString &mode)
RetainPtr< const CPDF_Dictionary > GetSoftMask() const
void SetImageMatrix(const CFX_Matrix &matrix)
const CFX_Matrix & matrix() const
bool BackgroundAlphaNeeded() const
const CPDF_Transparency & GetTransparency() const
virtual void Transform(const CFX_Matrix &matrix)=0
const CFX_FloatRect & GetOriginalRect() const
const CPDF_ColorState & color_state() const
void SetDirty(bool value)
const CPDF_GeneralState & general_state() const
virtual Type GetType() const =0
CPDF_GeneralState & mutable_general_state()
virtual CPDF_ShadingObject * AsShading()
const CFX_FloatRect & GetRect() const
virtual CPDF_ImageObject * AsImage()
CPDF_ContentMarks * GetContentMarks()
virtual CPDF_FormObject * AsForm()
virtual CPDF_TextObject * AsText()
virtual CPDF_PathObject * AsPath()
const CFX_GraphState & graph_state() const
virtual bool IsForm() const
CFX_GraphState & mutable_graph_state()
virtual bool IsPath() const
CPDF_ColorState & mutable_color_state()
int GetPageRotation() const
void SetPathMatrix(const CFX_Matrix &matrix)
const CFX_Matrix & matrix() const
CFX_Matrix GetTextMatrix() const
void SetTextMatrix(const CFX_Matrix &matrix)
static ByteString Format(const char *pFormat,...)
ByteString & operator=(ByteString &&that) noexcept
#define UNSAFE_BUFFERS(...)
FPDF_BOOL IsPDFSandboxPolicyEnabled(FPDF_DWORD policy)
CPDF_ContentMarkItem * CPDFContentMarkItemFromFPDFPageObjectMark(FPDF_PAGEOBJECTMARK mark)
FS_MATRIX FSMatrixFromCFXMatrix(const CFX_Matrix &matrix)
CPDF_Page * CPDFPageFromFPDFPage(FPDF_PAGE page)
CPDF_Document * CPDFDocumentFromFPDFDocument(FPDF_DOCUMENT doc)
CPDF_PageObject * CPDFPageObjectFromFPDFPageObject(FPDF_PAGEOBJECT page_object)
CFX_Matrix CFXMatrixFromFSMatrix(const FS_MATRIX &matrix)
#define FPDF_LINECAP_BUTT
FPDF_EXPORT int FPDF_CALLCONV FPDFPage_GetRotation(FPDF_PAGE page)
FPDF_EXPORT int FPDF_CALLCONV FPDFFormObj_CountObjects(FPDF_PAGEOBJECT form_object)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_SetStrokeColor(FPDF_PAGEOBJECT page_object, unsigned int R, unsigned int G, unsigned int B, unsigned int A)
FPDF_EXPORT int FPDF_CALLCONV FPDFPageObj_GetLineCap(FPDF_PAGEOBJECT page_object)
#define FPDF_PAGEOBJ_UNKNOWN
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_MovePages(FPDF_DOCUMENT document, const int *page_indices, unsigned long page_indices_len, int dest_page_index)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObjMark_GetParamKey(FPDF_PAGEOBJECTMARK mark, unsigned long index, void *buffer, unsigned long buflen, unsigned long *out_buflen)
FPDF_EXPORT int FPDF_CALLCONV FPDFPageObj_GetDashCount(FPDF_PAGEOBJECT page_object)
FPDF_EXPORT FPDF_PAGE FPDF_CALLCONV FPDFPage_New(FPDF_DOCUMENT document, int page_index, double width, double height)
FPDF_EXPORT void FPDF_CALLCONV FPDFPage_InsertObject(FPDF_PAGE page, FPDF_PAGEOBJECT page_object)
FPDF_EXPORT void FPDF_CALLCONV FPDFPage_SetRotation(FPDF_PAGE page, int rotate)
FPDF_EXPORT FPDF_DOCUMENT FPDF_CALLCONV FPDF_CreateNewDocument()
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_SetFillColor(FPDF_PAGEOBJECT page_object, unsigned int R, unsigned int G, unsigned int B, unsigned int A)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_GetDashPhase(FPDF_PAGEOBJECT page_object, float *phase)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_HasTransparency(FPDF_PAGE page)
#define FPDF_LINEJOIN_MITER
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_GetRotatedBounds(FPDF_PAGEOBJECT page_object, FS_QUADPOINTSF *quad_points)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_GetFillColor(FPDF_PAGEOBJECT page_object, unsigned int *R, unsigned int *G, unsigned int *B, unsigned int *A)
FPDF_EXPORT int FPDF_CALLCONV FPDFPageObjMark_CountParams(FPDF_PAGEOBJECTMARK mark)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_RemoveMark(FPDF_PAGEOBJECT page_object, FPDF_PAGEOBJECTMARK mark)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObjMark_SetIntParam(FPDF_DOCUMENT document, FPDF_PAGEOBJECT page_object, FPDF_PAGEOBJECTMARK mark, FPDF_BYTESTRING key, int value)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObjMark_GetParamStringValue(FPDF_PAGEOBJECTMARK mark, FPDF_BYTESTRING key, void *buffer, unsigned long buflen, unsigned long *out_buflen)
FPDF_EXPORT int FPDF_CALLCONV FPDFPageObj_CountMarks(FPDF_PAGEOBJECT page_object)
#define FPDF_LINECAP_PROJECTING_SQUARE
FPDF_EXPORT void FPDF_CALLCONV FPDFPage_TransformAnnots(FPDF_PAGE page, double a, double b, double c, double d, double e, double f)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_RemoveObject(FPDF_PAGE page, FPDF_PAGEOBJECT page_object)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObjMark_GetParamBlobValue(FPDF_PAGEOBJECTMARK mark, FPDF_BYTESTRING key, void *buffer, unsigned long buflen, unsigned long *out_buflen)
FPDF_EXPORT int FPDF_CALLCONV FPDFPageObj_GetLineJoin(FPDF_PAGEOBJECT page_object)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObjMark_RemoveParam(FPDF_PAGEOBJECT page_object, FPDF_PAGEOBJECTMARK mark, FPDF_BYTESTRING key)
FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV FPDFPage_GetObject(FPDF_PAGE page, int index)
FPDF_EXPORT FPDF_OBJECT_TYPE FPDF_CALLCONV FPDFPageObjMark_GetParamValueType(FPDF_PAGEOBJECTMARK mark, FPDF_BYTESTRING key)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObjMark_GetParamIntValue(FPDF_PAGEOBJECTMARK mark, FPDF_BYTESTRING key, int *out_value)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_SetLineJoin(FPDF_PAGEOBJECT page_object, int line_join)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_SetLineCap(FPDF_PAGEOBJECT page_object, int line_cap)
FPDF_EXPORT int FPDF_CALLCONV FPDFPageObj_GetType(FPDF_PAGEOBJECT page_object)
#define FPDF_PAGEOBJ_PATH
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObjMark_SetStringParam(FPDF_DOCUMENT document, FPDF_PAGEOBJECT page_object, FPDF_PAGEOBJECTMARK mark, FPDF_BYTESTRING key, FPDF_BYTESTRING value)
#define FPDF_PAGEOBJ_TEXT
#define FPDF_PAGEOBJ_SHADING
#define FPDF_PAGEOBJ_IMAGE
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObjMark_SetBlobParam(FPDF_DOCUMENT document, FPDF_PAGEOBJECT page_object, FPDF_PAGEOBJECTMARK mark, FPDF_BYTESTRING key, void *value, unsigned long value_len)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_GetBounds(FPDF_PAGEOBJECT page_object, float *left, float *bottom, float *right, float *top)
FPDF_EXPORT FPDF_PAGEOBJECTMARK FPDF_CALLCONV FPDFPageObj_GetMark(FPDF_PAGEOBJECT page_object, unsigned long index)
FPDF_EXPORT void FPDF_CALLCONV FPDFPage_Delete(FPDF_DOCUMENT document, int page_index)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_GetStrokeWidth(FPDF_PAGEOBJECT page_object, float *width)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_SetMatrix(FPDF_PAGEOBJECT page_object, const FS_MATRIX *matrix)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_SetDashPhase(FPDF_PAGEOBJECT page_object, float phase)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_SetStrokeWidth(FPDF_PAGEOBJECT page_object, float width)
#define FPDF_LINEJOIN_BEVEL
#define FPDF_PAGEOBJ_FORM
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT page_object)
FPDF_EXPORT int FPDF_CALLCONV FPDFPageObj_GetMarkedContentID(FPDF_PAGEOBJECT page_object)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_GenerateContent(FPDF_PAGE page)
FPDF_EXPORT int FPDF_CALLCONV FPDFPage_CountObjects(FPDF_PAGE page)
FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV FPDFFormObj_GetObject(FPDF_PAGEOBJECT form_object, unsigned long index)
FPDF_EXPORT FPDF_PAGEOBJECTMARK FPDF_CALLCONV FPDFPageObj_AddMark(FPDF_PAGEOBJECT page_object, FPDF_BYTESTRING name)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObjMark_GetName(FPDF_PAGEOBJECTMARK mark, void *buffer, unsigned long buflen, unsigned long *out_buflen)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_GetMatrix(FPDF_PAGEOBJECT page_object, FS_MATRIX *matrix)
FPDF_EXPORT void FPDF_CALLCONV FPDFPageObj_SetBlendMode(FPDF_PAGEOBJECT page_object, FPDF_BYTESTRING blend_mode)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_TransformF(FPDF_PAGEOBJECT page_object, const FS_MATRIX *matrix)
FPDF_EXPORT void FPDF_CALLCONV FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object, double a, double b, double c, double d, double e, double f)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_GetStrokeColor(FPDF_PAGEOBJECT page_object, unsigned int *R, unsigned int *G, unsigned int *B, unsigned int *A)
FPDF_EXPORT void FPDF_CALLCONV FPDFPageObj_Destroy(FPDF_PAGEOBJECT page_object)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_SetDashArray(FPDF_PAGEOBJECT page_object, const float *dash_array, size_t dash_count, float phase)
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPageObj_GetDashArray(FPDF_PAGEOBJECT page_object, float *dash_array, size_t dash_count)
#define FPDF_POLICY_MACHINETIME_ACCESS
#define FPDF_OBJECT_UNKNOWN
CFX_PTemplate< float > CFX_PointF
constexpr uint8_t FXSYS_GetRValue(uint32_t bgr)
constexpr unsigned int FXSYS_GetUnsignedAlpha(float alpha)
constexpr uint8_t FXSYS_GetGValue(uint32_t bgr)
constexpr uint8_t FXSYS_GetBValue(uint32_t bgr)
time_t FXSYS_time(time_t *tloc)
struct tm * FXSYS_localtime(const time_t *tp)