summaryrefslogtreecommitdiff
path: root/fpdfsdk/cpdfsdk_helpers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk/cpdfsdk_helpers.cpp')
-rw-r--r--fpdfsdk/cpdfsdk_helpers.cpp54
1 files changed, 9 insertions, 45 deletions
diff --git a/fpdfsdk/cpdfsdk_helpers.cpp b/fpdfsdk/cpdfsdk_helpers.cpp
index 19252f7c5b..16e7efc873 100644
--- a/fpdfsdk/cpdfsdk_helpers.cpp
+++ b/fpdfsdk/cpdfsdk_helpers.cpp
@@ -13,8 +13,6 @@
#include "core/fpdfdoc/cpdf_annot.h"
#include "core/fpdfdoc/cpdf_interform.h"
#include "core/fpdfdoc/cpdf_metadata.h"
-#include "core/fxcrt/xml/cxml_content.h"
-#include "core/fxcrt/xml/cxml_element.h"
#include "public/fpdf_ext.h"
namespace {
@@ -37,45 +35,6 @@ bool RaiseUnSupportError(int nError) {
return true;
}
-bool CheckSharedForm(const CXML_Element* pElement, ByteString cbName) {
- size_t count = pElement->CountAttrs();
- for (size_t i = 0; i < count; ++i) {
- ByteString space;
- ByteString name;
- WideString value;
- pElement->GetAttrByIndex(i, &space, &name, &value);
- if (space == "xmlns" && name == "adhocwf" &&
- value == L"http://ns.adobe.com/AcrobatAdhocWorkflow/1.0/") {
- CXML_Element* pVersion =
- pElement->GetElement("adhocwf", cbName.AsStringView(), 0);
- if (!pVersion)
- continue;
- CXML_Content* pContent = ToContent(pVersion->GetChild(0));
- if (!pContent)
- continue;
- switch (pContent->m_Content.GetInteger()) {
- case 1:
- RaiseUnSupportError(FPDF_UNSP_DOC_SHAREDFORM_ACROBAT);
- break;
- case 2:
- RaiseUnSupportError(FPDF_UNSP_DOC_SHAREDFORM_FILESYSTEM);
- break;
- case 0:
- RaiseUnSupportError(FPDF_UNSP_DOC_SHAREDFORM_EMAIL);
- break;
- }
- }
- }
-
- size_t nCount = pElement->CountChildren();
- for (size_t i = 0; i < nCount; ++i) {
- CXML_Element* pChild = ToElement(pElement->GetChild(i));
- if (pChild && CheckSharedForm(pChild, cbName))
- return true;
- }
- return false;
-}
-
#ifdef PDF_ENABLE_XFA
class FPDF_FileHandlerContext : public IFX_SeekableStream {
public:
@@ -300,10 +259,15 @@ void CheckUnSupportError(CPDF_Document* pDoc, uint32_t err_code) {
}
// SharedForm
- CPDF_Metadata metaData(pDoc);
- const CXML_Element* pElement = metaData.GetRoot();
- if (pElement)
- CheckSharedForm(pElement, "workflowType");
+ const CPDF_Dictionary* pRoot = pDoc->GetRoot();
+ if (pRoot) {
+ CPDF_Stream* pStream = pRoot->GetStreamFor("Metadata");
+ if (pStream) {
+ CPDF_Metadata metaData(pStream);
+ for (const auto& err : metaData.CheckForSharedForm())
+ RaiseUnSupportError(static_cast<int>(err));
+ }
+ }
#ifndef PDF_ENABLE_XFA
// XFA Forms