OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #ifndef FPDFSDK_INCLUDE_FPDFXFA_FPDFXFA_DOC_H_ | 7 #ifndef FPDFSDK_INCLUDE_FPDFXFA_FPDFXFA_DOC_H_ |
8 #define FPDFSDK_INCLUDE_FPDFXFA_FPDFXFA_DOC_H_ | 8 #define FPDFSDK_INCLUDE_FPDFXFA_FPDFXFA_DOC_H_ |
9 | 9 |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "public/fpdfview.h" | 12 #include "public/fpdfview.h" |
13 #include "xfa/include/fxfa/fxfa.h" | 13 #include "xfa/include/fxfa/fxfa.h" |
| 14 #include "xfa/include/fxfa/xfa_ffdochandler.h" |
14 | 15 |
15 class CPDFXFA_App; | 16 class CPDFXFA_App; |
16 class CPDFXFA_Document; | 17 class CPDFXFA_Document; |
17 class CPDFXFA_Page; | 18 class CPDFXFA_Page; |
18 class CPDFSDK_Document; | 19 class CPDFSDK_Document; |
19 class CPDFDoc_Environment; | 20 class CPDFDoc_Environment; |
20 class IJS_Runtime; | 21 class IJS_Runtime; |
21 class IJS_Context; | 22 class IJS_Context; |
22 class IXFA_DocHandler; | 23 class CXFA_FFDocHandler; |
23 | 24 |
24 class CPDFXFA_Document : public IXFA_DocProvider { | 25 class CPDFXFA_Document : public IXFA_DocProvider { |
25 public: | 26 public: |
26 CPDFXFA_Document(CPDF_Document* pPDFDoc, CPDFXFA_App* pProvider); | 27 CPDFXFA_Document(CPDF_Document* pPDFDoc, CPDFXFA_App* pProvider); |
27 ~CPDFXFA_Document(); | 28 ~CPDFXFA_Document(); |
28 | 29 |
29 FX_BOOL LoadXFADoc(); | 30 FX_BOOL LoadXFADoc(); |
30 CPDFXFA_App* GetApp() { return m_pApp; } | 31 CPDFXFA_App* GetApp() { return m_pApp; } |
31 CPDF_Document* GetPDFDoc() { return m_pPDFDoc; } | 32 CPDF_Document* GetPDFDoc() { return m_pPDFDoc; } |
32 IXFA_Doc* GetXFADoc() { return m_pXFADoc; } | 33 CXFA_FFDoc* GetXFADoc() { return m_pXFADoc; } |
33 IXFA_DocView* GetXFADocView() { return m_pXFADocView; } | 34 CXFA_FFDocView* GetXFADocView() { return m_pXFADocView; } |
34 | 35 |
35 int GetPageCount(); | 36 int GetPageCount(); |
36 CPDFXFA_Page* GetPage(int page_index); | 37 CPDFXFA_Page* GetPage(int page_index); |
37 CPDFXFA_Page* GetPage(IXFA_PageView* pPage); | 38 CPDFXFA_Page* GetPage(CXFA_FFPageView* pPage); |
38 | 39 |
39 void DeletePage(int page_index); | 40 void DeletePage(int page_index); |
40 void RemovePage(CPDFXFA_Page* page); | 41 void RemovePage(CPDFXFA_Page* page); |
41 int GetDocType() { return m_iDocType; } | 42 int GetDocType() { return m_iDocType; } |
42 | 43 |
43 CPDFSDK_Document* GetSDKDocument(CPDFDoc_Environment* pFormFillEnv); | 44 CPDFSDK_Document* GetSDKDocument(CPDFDoc_Environment* pFormFillEnv); |
44 | 45 |
45 void FXRect2PDFRect(const CFX_RectF& fxRectF, CFX_FloatRect& pdfRect); | 46 void FXRect2PDFRect(const CFX_RectF& fxRectF, CFX_FloatRect& pdfRect); |
46 | 47 |
47 virtual void SetChangeMark(IXFA_Doc* hDoc); | 48 virtual void SetChangeMark(CXFA_FFDoc* hDoc); |
48 virtual FX_BOOL GetChangeMark(IXFA_Doc* hDoc); | 49 virtual FX_BOOL GetChangeMark(CXFA_FFDoc* hDoc); |
49 // used in dynamic xfa, dwFlags refer to XFA_INVALIDATE_XXX macros. | 50 // used in dynamic xfa, dwFlags refer to XFA_INVALIDATE_XXX macros. |
50 virtual void InvalidateRect(IXFA_PageView* pPageView, | 51 virtual void InvalidateRect(CXFA_FFPageView* pPageView, |
51 const CFX_RectF& rt, | 52 const CFX_RectF& rt, |
52 uint32_t dwFlags = 0); | 53 uint32_t dwFlags = 0); |
53 // used in static xfa, dwFlags refer to XFA_INVALIDATE_XXX macros. | 54 // used in static xfa, dwFlags refer to XFA_INVALIDATE_XXX macros. |
54 virtual void InvalidateRect(IXFA_Widget* hWidget, uint32_t dwFlags = 0); | 55 virtual void InvalidateRect(CXFA_FFWidget* hWidget, uint32_t dwFlags = 0); |
55 // show or hide caret | 56 // show or hide caret |
56 virtual void DisplayCaret(IXFA_Widget* hWidget, | 57 virtual void DisplayCaret(CXFA_FFWidget* hWidget, |
57 FX_BOOL bVisible, | 58 FX_BOOL bVisible, |
58 const CFX_RectF* pRtAnchor); | 59 const CFX_RectF* pRtAnchor); |
59 // dwPos: (0:bottom 1:top) | 60 // dwPos: (0:bottom 1:top) |
60 virtual FX_BOOL GetPopupPos(IXFA_Widget* hWidget, | 61 virtual FX_BOOL GetPopupPos(CXFA_FFWidget* hWidget, |
61 FX_FLOAT fMinPopup, | 62 FX_FLOAT fMinPopup, |
62 FX_FLOAT fMaxPopup, | 63 FX_FLOAT fMaxPopup, |
63 const CFX_RectF& rtAnchor, | 64 const CFX_RectF& rtAnchor, |
64 CFX_RectF& rtPopup); | 65 CFX_RectF& rtPopup); |
65 virtual FX_BOOL PopupMenu(IXFA_Widget* hWidget, | 66 virtual FX_BOOL PopupMenu(CXFA_FFWidget* hWidget, |
66 CFX_PointF ptPopup, | 67 CFX_PointF ptPopup, |
67 const CFX_RectF* pRectExclude = NULL); | 68 const CFX_RectF* pRectExclude = NULL); |
68 | 69 |
69 // dwFlags XFA_PAGEVIEWEVENT_Added, XFA_PAGEVIEWEVENT_Removing | 70 // dwFlags XFA_PAGEVIEWEVENT_Added, XFA_PAGEVIEWEVENT_Removing |
70 virtual void PageViewEvent(IXFA_PageView* pPageView, uint32_t dwFlags); | 71 virtual void PageViewEvent(CXFA_FFPageView* pPageView, uint32_t dwFlags); |
71 // dwEvent refer to XFA_WIDGETEVENT_XXX | 72 // dwEvent refer to XFA_WIDGETEVENT_XXX |
72 virtual void WidgetEvent(IXFA_Widget* hWidget, | 73 virtual void WidgetEvent(CXFA_FFWidget* hWidget, |
73 CXFA_WidgetAcc* pWidgetData, | 74 CXFA_WidgetAcc* pWidgetData, |
74 uint32_t dwEvent, | 75 uint32_t dwEvent, |
75 void* pParam = NULL, | 76 void* pParam = NULL, |
76 void* pAdditional = NULL); | 77 void* pAdditional = NULL); |
77 | 78 |
78 // return true if render it. | 79 // return true if render it. |
79 virtual FX_BOOL RenderCustomWidget(IXFA_Widget* hWidget, | 80 virtual FX_BOOL RenderCustomWidget(CXFA_FFWidget* hWidget, |
80 CFX_Graphics* pGS, | 81 CFX_Graphics* pGS, |
81 CFX_Matrix* pMatrix, | 82 CFX_Matrix* pMatrix, |
82 const CFX_RectF& rtUI) { | 83 const CFX_RectF& rtUI) { |
83 return FALSE; | 84 return FALSE; |
84 } | 85 } |
85 | 86 |
86 // host method | 87 // host method |
87 virtual int32_t CountPages(IXFA_Doc* hDoc); | 88 virtual int32_t CountPages(CXFA_FFDoc* hDoc); |
88 virtual int32_t GetCurrentPage(IXFA_Doc* hDoc); | 89 virtual int32_t GetCurrentPage(CXFA_FFDoc* hDoc); |
89 virtual void SetCurrentPage(IXFA_Doc* hDoc, int32_t iCurPage); | 90 virtual void SetCurrentPage(CXFA_FFDoc* hDoc, int32_t iCurPage); |
90 virtual FX_BOOL IsCalculationsEnabled(IXFA_Doc* hDoc); | 91 virtual FX_BOOL IsCalculationsEnabled(CXFA_FFDoc* hDoc); |
91 virtual void SetCalculationsEnabled(IXFA_Doc* hDoc, FX_BOOL bEnabled); | 92 virtual void SetCalculationsEnabled(CXFA_FFDoc* hDoc, FX_BOOL bEnabled); |
92 virtual void GetTitle(IXFA_Doc* hDoc, CFX_WideString& wsTitle); | 93 virtual void GetTitle(CXFA_FFDoc* hDoc, CFX_WideString& wsTitle); |
93 virtual void SetTitle(IXFA_Doc* hDoc, const CFX_WideStringC& wsTitle); | 94 virtual void SetTitle(CXFA_FFDoc* hDoc, const CFX_WideStringC& wsTitle); |
94 virtual void ExportData(IXFA_Doc* hDoc, | 95 virtual void ExportData(CXFA_FFDoc* hDoc, |
95 const CFX_WideStringC& wsFilePath, | 96 const CFX_WideStringC& wsFilePath, |
96 FX_BOOL bXDP = TRUE); | 97 FX_BOOL bXDP = TRUE); |
97 virtual void ImportData(IXFA_Doc* hDoc, const CFX_WideStringC& wsFilePath); | 98 virtual void ImportData(CXFA_FFDoc* hDoc, const CFX_WideStringC& wsFilePath); |
98 virtual void GotoURL(IXFA_Doc* hDoc, | 99 virtual void GotoURL(CXFA_FFDoc* hDoc, |
99 const CFX_WideStringC& bsURL, | 100 const CFX_WideStringC& bsURL, |
100 FX_BOOL bAppend = TRUE); | 101 FX_BOOL bAppend = TRUE); |
101 virtual FX_BOOL IsValidationsEnabled(IXFA_Doc* hDoc); | 102 virtual FX_BOOL IsValidationsEnabled(CXFA_FFDoc* hDoc); |
102 virtual void SetValidationsEnabled(IXFA_Doc* hDoc, FX_BOOL bEnabled); | 103 virtual void SetValidationsEnabled(CXFA_FFDoc* hDoc, FX_BOOL bEnabled); |
103 virtual void SetFocusWidget(IXFA_Doc* hDoc, IXFA_Widget* hWidget); | 104 virtual void SetFocusWidget(CXFA_FFDoc* hDoc, CXFA_FFWidget* hWidget); |
104 virtual void Print(IXFA_Doc* hDoc, | 105 virtual void Print(CXFA_FFDoc* hDoc, |
105 int32_t nStartPage, | 106 int32_t nStartPage, |
106 int32_t nEndPage, | 107 int32_t nEndPage, |
107 uint32_t dwOptions); | 108 uint32_t dwOptions); |
108 | 109 |
109 // LayoutPseudo method | 110 // LayoutPseudo method |
110 virtual int32_t AbsPageCountInBatch(IXFA_Doc* hDoc) { return 0; } | 111 virtual int32_t AbsPageCountInBatch(CXFA_FFDoc* hDoc) { return 0; } |
111 virtual int32_t AbsPageInBatch(IXFA_Doc* hDoc, IXFA_Widget* hWidget) { | 112 virtual int32_t AbsPageInBatch(CXFA_FFDoc* hDoc, CXFA_FFWidget* hWidget) { |
112 return 0; | 113 return 0; |
113 } | 114 } |
114 virtual int32_t SheetCountInBatch(IXFA_Doc* hDoc) { return 0; } | 115 virtual int32_t SheetCountInBatch(CXFA_FFDoc* hDoc) { return 0; } |
115 virtual int32_t SheetInBatch(IXFA_Doc* hDoc, IXFA_Widget* hWidget) { | 116 virtual int32_t SheetInBatch(CXFA_FFDoc* hDoc, CXFA_FFWidget* hWidget) { |
116 return 0; | 117 return 0; |
117 } | 118 } |
118 | 119 |
119 virtual int32_t Verify(IXFA_Doc* hDoc, | 120 virtual int32_t Verify(CXFA_FFDoc* hDoc, |
120 CXFA_Node* pSigNode, | 121 CXFA_Node* pSigNode, |
121 FX_BOOL bUsed = TRUE) { | 122 FX_BOOL bUsed = TRUE) { |
122 return 0; | 123 return 0; |
123 } | 124 } |
124 virtual FX_BOOL Sign(IXFA_Doc* hDoc, | 125 virtual FX_BOOL Sign(CXFA_FFDoc* hDoc, |
125 CXFA_NodeList* pNodeList, | 126 CXFA_NodeList* pNodeList, |
126 const CFX_WideStringC& wsExpression, | 127 const CFX_WideStringC& wsExpression, |
127 const CFX_WideStringC& wsXMLIdent, | 128 const CFX_WideStringC& wsXMLIdent, |
128 const CFX_WideStringC& wsValue = FX_WSTRC(L"open"), | 129 const CFX_WideStringC& wsValue = FX_WSTRC(L"open"), |
129 FX_BOOL bUsed = TRUE) { | 130 FX_BOOL bUsed = TRUE) { |
130 return 0; | 131 return 0; |
131 } | 132 } |
132 virtual CXFA_NodeList* Enumerate(IXFA_Doc* hDoc) { return 0; } | 133 virtual CXFA_NodeList* Enumerate(CXFA_FFDoc* hDoc) { return 0; } |
133 virtual FX_BOOL Clear(IXFA_Doc* hDoc, | 134 virtual FX_BOOL Clear(CXFA_FFDoc* hDoc, |
134 CXFA_Node* pSigNode, | 135 CXFA_Node* pSigNode, |
135 FX_BOOL bCleared = TRUE) { | 136 FX_BOOL bCleared = TRUE) { |
136 return 0; | 137 return 0; |
137 } | 138 } |
138 | 139 |
139 // Get document path | 140 // Get document path |
140 virtual void GetURL(IXFA_Doc* hDoc, CFX_WideString& wsDocURL); | 141 virtual void GetURL(CXFA_FFDoc* hDoc, CFX_WideString& wsDocURL); |
141 virtual FX_ARGB GetHighlightColor(IXFA_Doc* hDoc); | 142 virtual FX_ARGB GetHighlightColor(CXFA_FFDoc* hDoc); |
142 | 143 |
143 /** | 144 /** |
144 *Submit data to email, http, ftp. | 145 *Submit data to email, http, ftp. |
145 * @param[in] hDoc The document handler. | 146 * @param[in] hDoc The document handler. |
146 * @param[in] eFormat Determines the format in which the data will be | 147 * @param[in] eFormat Determines the format in which the data will be |
147 *submitted. XFA_ATTRIBUTEENUM_Xdp, XFA_ATTRIBUTEENUM_Xml... | 148 *submitted. XFA_ATTRIBUTEENUM_Xdp, XFA_ATTRIBUTEENUM_Xml... |
148 * @param[in] wsTarget The URL to which the data will be submitted. | 149 * @param[in] wsTarget The URL to which the data will be submitted. |
149 * @param[in] eEncoding The encoding of text content. | 150 * @param[in] eEncoding The encoding of text content. |
150 * @param[in] pXDPContent Controls what subset of the data is submitted, used | 151 * @param[in] pXDPContent Controls what subset of the data is submitted, used |
151 *only when the format property is xdp. | 152 *only when the format property is xdp. |
152 * @param[in] bEmbedPDF, specifies whether PDF is embedded in the submitted | 153 * @param[in] bEmbedPDF, specifies whether PDF is embedded in the submitted |
153 *content or not. | 154 *content or not. |
154 */ | 155 */ |
155 virtual FX_BOOL SubmitData(IXFA_Doc* hDoc, CXFA_Submit submit); | 156 virtual FX_BOOL SubmitData(CXFA_FFDoc* hDoc, CXFA_Submit submit); |
156 | 157 |
157 virtual FX_BOOL CheckWord(IXFA_Doc* hDoc, const CFX_ByteStringC& sWord) { | 158 virtual FX_BOOL CheckWord(CXFA_FFDoc* hDoc, const CFX_ByteStringC& sWord) { |
158 return FALSE; | 159 return FALSE; |
159 } | 160 } |
160 virtual FX_BOOL GetSuggestWords(IXFA_Doc* hDoc, | 161 virtual FX_BOOL GetSuggestWords(CXFA_FFDoc* hDoc, |
161 const CFX_ByteStringC& sWord, | 162 const CFX_ByteStringC& sWord, |
162 std::vector<CFX_ByteString>& sSuggest) { | 163 std::vector<CFX_ByteString>& sSuggest) { |
163 return FALSE; | 164 return FALSE; |
164 } | 165 } |
165 | 166 |
166 // Get PDF javascript object, set the object to hValue. | 167 // Get PDF javascript object, set the object to hValue. |
167 virtual FX_BOOL GetPDFScriptObject(IXFA_Doc* hDoc, | 168 virtual FX_BOOL GetPDFScriptObject(CXFA_FFDoc* hDoc, |
168 const CFX_ByteStringC& utf8Name, | 169 const CFX_ByteStringC& utf8Name, |
169 FXJSE_HVALUE hValue); | 170 FXJSE_HVALUE hValue); |
170 | 171 |
171 virtual FX_BOOL GetGlobalProperty(IXFA_Doc* hDoc, | 172 virtual FX_BOOL GetGlobalProperty(CXFA_FFDoc* hDoc, |
172 const CFX_ByteStringC& szPropName, | 173 const CFX_ByteStringC& szPropName, |
173 FXJSE_HVALUE hValue); | 174 FXJSE_HVALUE hValue); |
174 virtual FX_BOOL SetGlobalProperty(IXFA_Doc* hDoc, | 175 virtual FX_BOOL SetGlobalProperty(CXFA_FFDoc* hDoc, |
175 const CFX_ByteStringC& szPropName, | 176 const CFX_ByteStringC& szPropName, |
176 FXJSE_HVALUE hValue); | 177 FXJSE_HVALUE hValue); |
177 virtual CPDF_Document* OpenPDF(IXFA_Doc* hDoc, | 178 virtual CPDF_Document* OpenPDF(CXFA_FFDoc* hDoc, |
178 IFX_FileRead* pFile, | 179 IFX_FileRead* pFile, |
179 FX_BOOL bTakeOverFile) { | 180 FX_BOOL bTakeOverFile) { |
180 return NULL; | 181 return NULL; |
181 } | 182 } |
182 | 183 |
183 virtual IFX_FileRead* OpenLinkedFile(IXFA_Doc* hDoc, | 184 virtual IFX_FileRead* OpenLinkedFile(CXFA_FFDoc* hDoc, |
184 const CFX_WideString& wsLink); | 185 const CFX_WideString& wsLink); |
185 | 186 |
186 FX_BOOL _GetHValueByName(const CFX_ByteStringC& utf8Name, | 187 FX_BOOL _GetHValueByName(const CFX_ByteStringC& utf8Name, |
187 FXJSE_HVALUE hValue, | 188 FXJSE_HVALUE hValue, |
188 IJS_Runtime* runTime); | 189 IJS_Runtime* runTime); |
189 FX_BOOL _OnBeforeNotifySumbit(); | 190 FX_BOOL _OnBeforeNotifySumbit(); |
190 void _OnAfterNotifySumbit(); | 191 void _OnAfterNotifySumbit(); |
191 FX_BOOL _NotifySubmit(FX_BOOL bPrevOrPost); | 192 FX_BOOL _NotifySubmit(FX_BOOL bPrevOrPost); |
192 FX_BOOL _SubmitData(IXFA_Doc* hDoc, CXFA_Submit submit); | 193 FX_BOOL _SubmitData(CXFA_FFDoc* hDoc, CXFA_Submit submit); |
193 FX_BOOL _MailToInfo(CFX_WideString& csURL, | 194 FX_BOOL _MailToInfo(CFX_WideString& csURL, |
194 CFX_WideString& csToAddress, | 195 CFX_WideString& csToAddress, |
195 CFX_WideString& csCCAddress, | 196 CFX_WideString& csCCAddress, |
196 CFX_WideString& csBCCAddress, | 197 CFX_WideString& csBCCAddress, |
197 CFX_WideString& csSubject, | 198 CFX_WideString& csSubject, |
198 CFX_WideString& csMsg); | 199 CFX_WideString& csMsg); |
199 FX_BOOL _ExportSubmitFile(FPDF_FILEHANDLER* ppFileHandler, | 200 FX_BOOL _ExportSubmitFile(FPDF_FILEHANDLER* ppFileHandler, |
200 int fileType, | 201 int fileType, |
201 FPDF_DWORD encodeType, | 202 FPDF_DWORD encodeType, |
202 FPDF_DWORD flag = 0x01111111); | 203 FPDF_DWORD flag = 0x01111111); |
203 void _ToXFAContentFlags(CFX_WideString csSrcContent, FPDF_DWORD& flag); | 204 void _ToXFAContentFlags(CFX_WideString csSrcContent, FPDF_DWORD& flag); |
204 void _ClearChangeMark(); | 205 void _ClearChangeMark(); |
205 | 206 |
206 private: | 207 private: |
207 enum LoadStatus { | 208 enum LoadStatus { |
208 FXFA_LOADSTATUS_PRELOAD = 0, | 209 FXFA_LOADSTATUS_PRELOAD = 0, |
209 FXFA_LOADSTATUS_LOADING, | 210 FXFA_LOADSTATUS_LOADING, |
210 FXFA_LOADSTATUS_LOADED, | 211 FXFA_LOADSTATUS_LOADED, |
211 FXFA_LOADSTATUS_CLOSING, | 212 FXFA_LOADSTATUS_CLOSING, |
212 FXFA_LOADSTATUS_CLOSED | 213 FXFA_LOADSTATUS_CLOSED |
213 }; | 214 }; |
214 void CloseXFADoc(IXFA_DocHandler* pDoc) { | 215 void CloseXFADoc(CXFA_FFDocHandler* pDoc) { |
215 if (pDoc) { | 216 if (pDoc) { |
216 pDoc->CloseDoc(m_pXFADoc); | 217 pDoc->CloseDoc(m_pXFADoc); |
217 pDoc->ReleaseDoc(m_pXFADoc); | 218 pDoc->ReleaseDoc(m_pXFADoc); |
218 m_pXFADoc = NULL; | 219 m_pXFADoc = NULL; |
219 m_pXFADocView = NULL; | 220 m_pXFADocView = NULL; |
220 } | 221 } |
221 } | 222 } |
222 | 223 |
223 int m_iDocType; | 224 int m_iDocType; |
224 CPDF_Document* m_pPDFDoc; | 225 CPDF_Document* m_pPDFDoc; |
225 CPDFSDK_Document* m_pSDKDoc; | 226 CPDFSDK_Document* m_pSDKDoc; |
226 IXFA_Doc* m_pXFADoc; | 227 CXFA_FFDoc* m_pXFADoc; |
227 IXFA_DocView* m_pXFADocView; | 228 CXFA_FFDocView* m_pXFADocView; |
228 CPDFXFA_App* m_pApp; | 229 CPDFXFA_App* m_pApp; |
229 IJS_Context* m_pJSContext; | 230 IJS_Context* m_pJSContext; |
230 CFX_ArrayTemplate<CPDFXFA_Page*> m_XFAPageList; | 231 CFX_ArrayTemplate<CPDFXFA_Page*> m_XFAPageList; |
231 LoadStatus m_nLoadStatus; | 232 LoadStatus m_nLoadStatus; |
232 int m_nPageCount; | 233 int m_nPageCount; |
233 }; | 234 }; |
234 | 235 |
235 #endif // FPDFSDK_INCLUDE_FPDFXFA_FPDFXFA_DOC_H_ | 236 #endif // FPDFSDK_INCLUDE_FPDFXFA_FPDFXFA_DOC_H_ |
OLD | NEW |