PDF SDK Documentation

Comprehensive Guide for Developers: Features, Integration, and API Reference

Loading...
Searching...
No Matches
xml_extractor.h
1// Copyright (c) 2009-2025 Avanquest Software. All rights reserved.
2
3#ifndef PDFSDK_CXX_XML_EXTRACTOR_H_INCLUDED_
4#define PDFSDK_CXX_XML_EXTRACTOR_H_INCLUDED_
5
6#include <string>
7#include <string_view>
8
9#include <pdfsdk/cxx/callback.h>
10#include <pdfsdk/cxx/document.h>
11#include <pdfsdk/cxx/text_edit.h>
13
14namespace PDF {
15
22inline std::string SerializeTextBlockToXML(const TextEdit::Layout& text_layout, const TextEdit::TextBlock& block) {
23 std::string xml;
24 static auto collect = [](const char* data, size_t numBytes, void* clientData) -> PDErrCode {
25 PDFSDK_CALLBACK_BEGIN
26 static_cast<std::string*>(clientData)->assign(data, numBytes);
27 return kPDErrSuccess;
28 PDFSDK_CALLBACK_END
29 };
30 PDF_CHECK_SUCCESS_X(PDTTextBlockSerializeToXML(text_layout.get(), block.get(), collect, &xml));
31 return xml;
32}
33
43inline void DeserializeTextBlockFromXML(const Document& doc,
44 const TextEdit::Layout& text_layout,
45 const TextEdit::TextBlock& block,
46 std::string_view xml) {
47 PDF_CHECK_SUCCESS_X(
48 PDTTextBlockDeserializeFromXML(doc.get(), text_layout.get(), block.get(), xml.data(), xml.size()));
49}
50
59inline std::string SerializePageToXML(const TextEdit::Layout& text_layout) {
60 std::string xml;
61 static auto collect = [](const char* data, size_t numBytes, void* clientData) -> PDErrCode {
62 PDFSDK_CALLBACK_BEGIN
63 static_cast<std::string*>(clientData)->assign(data, numBytes);
64 return kPDErrSuccess;
65 PDFSDK_CALLBACK_END
66 };
67 PDF_CHECK_SUCCESS_X(PDTLayoutSerializeToXML(text_layout.get(), collect, &xml));
68 return xml;
69}
70
80inline void DeserializePageFromXML(const Document& doc, const TextEdit::Layout& text_layout, std::string_view xml) {
81 PDF_CHECK_SUCCESS_X(PDTLayoutDeserializeFromXML(doc.get(), text_layout.get(), xml.data(), xml.size()));
82}
83
84} // namespace PDF
85
86#endif // PDFSDK_CXX_XML_EXTRACTOR_H_INCLUDED_
Represents a PDF document.
Definition document.h:27
The Layout class represents a text layout in a PDF document.
Definition text_edit.h:25
The TextBlock class represents a block of text in a Layout.
Definition text_edit.h:123
@ kPDErrSuccess
Operation was successful.
Definition errors.h:18
int32_t PDErrCode
Definition errors.h:44
XML Extractor API.