diff options
author | Jay Berkenbilt <ejb@ql.org> | 2024-01-05 22:11:09 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2024-01-05 23:12:12 +0100 |
commit | 7cac433e2d9256fb8361aa53d136d4eaacfda6fe (patch) | |
tree | 91e18e06655d5d83dd745032641cdd7406785ced /libqpdf/QPDFPageLabelDocumentHelper.cc | |
parent | 543038c52a3e0dc166565142ed7efb183e461948 (diff) | |
download | qpdf-7cac433e2d9256fb8361aa53d136d4eaacfda6fe.tar.zst |
Implement --set-page-labels and supporting API (fixes #939)
Diffstat (limited to 'libqpdf/QPDFPageLabelDocumentHelper.cc')
-rw-r--r-- | libqpdf/QPDFPageLabelDocumentHelper.cc | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/libqpdf/QPDFPageLabelDocumentHelper.cc b/libqpdf/QPDFPageLabelDocumentHelper.cc index d94c41fd..e291e9aa 100644 --- a/libqpdf/QPDFPageLabelDocumentHelper.cc +++ b/libqpdf/QPDFPageLabelDocumentHelper.cc @@ -99,3 +99,36 @@ QPDFPageLabelDocumentHelper::getLabelsForPageRange( } } } + +QPDFObjectHandle +QPDFPageLabelDocumentHelper::pageLabelDict( + qpdf_page_label_e label_type, int start_num, std::string_view prefix) +{ + auto num = "<< /Type /PageLabel >>"_qpdf; + switch (label_type) { + case pl_none: + break; + case pl_digits: + num.replaceKey("/S", "/D"_qpdf); + break; + case pl_alpha_lower: + num.replaceKey("/S", "/a"_qpdf); + break; + case pl_alpha_upper: + num.replaceKey("/S", "/A"_qpdf); + break; + case pl_roman_lower: + num.replaceKey("/S", "/r"_qpdf); + break; + case pl_roman_upper: + num.replaceKey("/S", "/R"_qpdf); + break; + } + if (!prefix.empty()) { + num.replaceKey("/P", QPDFObjectHandle::newUnicodeString(std::string(prefix))); + } + if (start_num != 1) { + num.replaceKey("/St", QPDFObjectHandle::newInteger(start_num)); + } + return num; +} |