PDF SDK Documentation

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

Loading...
Searching...
No Matches
pdfa.h
1// Copyright (c) 2026 Avanquest Software. All rights reserved.
2
3#ifndef PDFSDK_CXX_PDFA_H_INCLUDED_
4#define PDFSDK_CXX_PDFA_H_INCLUDED_
5
6#include <filesystem>
7#include <string>
8
10#include <pdfsdk/cxx/callback.h>
11#include <pdfsdk/cxx/document.h>
12#include <pdfsdk/cxx/exception.h>
13#include <pdfsdk/cxx/progress_monitor.h>
14
15namespace PDF {
16
23class PdfaIssueMonitor {
24protected:
25 PdfaIssueMonitor() = default;
26
27public:
28 virtual ~PdfaIssueMonitor() = default;
29
30#ifndef SWIG
31 const PDFAIssueMonitor* monitor() const { return &m_monitor; }
32 void* userdata() { return this; }
33#endif
34
43 virtual void OnIssue(PDFAIssueType type,
44 PDFAIssueLevel level,
45 const std::string& message,
46 size_t count) = 0;
47
48private:
49 static PDErrCode PDFSDK_CALLCONV OnIssueCb(void* clientData,
50 PDFAIssueType type,
51 PDFAIssueLevel level,
52 const char* message,
53 size_t count) {
54 PDFSDK_CALLBACK_BEGIN
55 auto monitor = static_cast<PdfaIssueMonitor*>(clientData);
56 monitor->OnIssue(type, level, message ? message : std::string{}, count);
57 return kPDErrSuccess;
58 PDFSDK_CALLBACK_END
59 }
60
61 PDFAIssueMonitor m_monitor = {
62 &PdfaIssueMonitor::OnIssueCb,
63 };
64};
65
94inline PDFAFlavor ConvertPdfToPdfA(const Document& input,
95 const std::filesystem::path& outputFile,
96 PDFAFlavor flavor,
99 PdfaIssueMonitor* issueMonitor = nullptr,
100 ProgressMonitor* progress = nullptr) {
101 PDFConvertToPDFAParams params = {};
102 auto outputFileStr = outputFile.wstring();
103 params.outputFile = outputFileStr.c_str();
104 params.flavor = flavor;
105 params.mode = mode;
106 params.flags = flags;
107
108 const PDProgressMonitor* progressMon = progress ? progress->monitor() : nullptr;
109 void* progressData = progress ? progress->userdata() : nullptr;
110
111 const PDFAIssueMonitor* issueMon = issueMonitor ? issueMonitor->monitor() : nullptr;
112 void* issueMonData = issueMonitor ? issueMonitor->userdata() : nullptr;
113
114 PDFAFlavor produced = flavor;
115 PDF_CHECK_SUCCESS_X(PDFConvertToPDFA(input.get(),
116 progressMon,
117 progressData,
118 issueMon,
119 issueMonData,
120 &params,
121 &produced));
122 return produced;
123}
124
125} // namespace PDF
126
127#endif // PDFSDK_CXX_PDFA_H_INCLUDED_
Represents a PDF document.
Definition document.h:27
Monitor that receives PDF/A compliance issues reported during conversion.
Definition pdfa.h:23
virtual void OnIssue(PDFAIssueType type, PDFAIssueLevel level, const std::string &message, size_t count)=0
Called to report a compliance issue encountered during conversion.
Progress monitor for tracking the progress of an operation.
Definition progress_monitor.h:14
@ kPDErrSuccess
Operation was successful.
Definition errors.h:18
int32_t PDErrCode
Definition errors.h:44
PDF to PDF/A conversion API.
uint32_t PDFAConvertFlags
Definition pdf2pdfa.h:49
PDFAConvertMode
Defines the conversion mode for PDF to PDF/A conversion.
Definition pdf2pdfa.h:27
@ kPDFAConvertMode_Auto
Definition pdf2pdfa.h:28
PDFAIssueLevel
The level of severity of the compliance issue, reported via PDFAIssueMonitor.
Definition pdf2pdfa.h:162
PDFAIssueType
Compliance issue category reported via PDFAIssueMonitor.
Definition pdf2pdfa.h:68
@ kPDFAConvertFlags_Default
Definition pdf2pdfa.h:45
PDFSDK_IMPORT_ PDErrCode PDFSDK_CALLCONV PDFConvertToPDFA(PDDoc source, const PDProgressMonitor *progress, void *progressData, const PDFAIssueMonitor *issueMon, void *issueMonData, const PDFConvertToPDFAParams *params, PDFAFlavor *producedFlavor)
Converts a PDF document into a PDF/A‑compliant file.
PDF/A compliance issue monitor.
Definition pdf2pdfa.h:172
PDFAConvertFlags flags
Definition pdf2pdfa.h:59
PDFAFlavor flavor
Definition pdf2pdfa.h:56
const wchar_t * outputFile
Definition pdf2pdfa.h:55
PDFAConvertMode mode
Definition pdf2pdfa.h:57