mirror of
https://github.com/qpdf/qpdf.git
synced 2024-05-29 16:30:53 +00:00
QPDFJob: make remaining members private
This commit is contained in:
parent
f2409f4fca
commit
edef2cd330
|
@ -284,9 +284,8 @@ class QPDFJob
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
std::shared_ptr<Config> config();
|
std::shared_ptr<Config> config();
|
||||||
|
|
||||||
// QXXXQ set options -- implemented in QPDFJob_options.cc
|
// Options for helping the qpdf CLI use the correct edit code and
|
||||||
|
// properly report warnings.
|
||||||
// QXXXQ these will not be in the final interface
|
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
bool suppressWarnings();
|
bool suppressWarnings();
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
|
@ -295,7 +294,6 @@ class QPDFJob
|
||||||
bool checkRequiresPassword();
|
bool checkRequiresPassword();
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
bool checkIsEncrypted();
|
bool checkIsEncrypted();
|
||||||
// /QXXXQ
|
|
||||||
|
|
||||||
// Execute the job
|
// Execute the job
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
|
@ -320,17 +318,12 @@ class QPDFJob
|
||||||
void doIfVerbose(
|
void doIfVerbose(
|
||||||
std::function<void(std::ostream&, std::string const& prefix)> fn);
|
std::function<void(std::ostream&, std::string const& prefix)> fn);
|
||||||
|
|
||||||
|
// Provide a string that is the help information ("schema" for the
|
||||||
|
// qpdf-specific JSON object) for version 1 of the JSON output.
|
||||||
|
QPDF_DLL
|
||||||
|
static std::string json_out_schema_v1();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
public: // QXXXQ
|
|
||||||
QPDF_DLL
|
|
||||||
static JSON json_schema(std::set<std::string>* keys = 0);
|
|
||||||
|
|
||||||
private: // QXXXQ
|
|
||||||
QPDF_DLL
|
|
||||||
static void parse_object_id(
|
|
||||||
std::string const& objspec, bool& trailer, int& obj, int& gen);
|
|
||||||
|
|
||||||
struct RotationSpec
|
struct RotationSpec
|
||||||
{
|
{
|
||||||
RotationSpec(int angle = 0, bool relative = false) :
|
RotationSpec(int angle = 0, bool relative = false) :
|
||||||
|
@ -345,7 +338,6 @@ class QPDFJob
|
||||||
|
|
||||||
enum password_mode_e { pm_bytes, pm_hex_bytes, pm_unicode, pm_auto };
|
enum password_mode_e { pm_bytes, pm_hex_bytes, pm_unicode, pm_auto };
|
||||||
|
|
||||||
public: // QXXXQ begin public
|
|
||||||
struct UnderOverlay
|
struct UnderOverlay
|
||||||
{
|
{
|
||||||
UnderOverlay(char const* which) :
|
UnderOverlay(char const* which) :
|
||||||
|
@ -368,13 +360,10 @@ class QPDFJob
|
||||||
std::vector<int> repeat_pagenos;
|
std::vector<int> repeat_pagenos;
|
||||||
};
|
};
|
||||||
|
|
||||||
size_t oi_min_width;
|
|
||||||
size_t oi_min_height;
|
|
||||||
size_t oi_min_area;
|
|
||||||
// QXXXQ END-PUBLIC
|
|
||||||
|
|
||||||
private:
|
|
||||||
// Helper functions
|
// Helper functions
|
||||||
|
static JSON json_schema(std::set<std::string>* keys = 0);
|
||||||
|
static void parse_object_id(
|
||||||
|
std::string const& objspec, bool& trailer, int& obj, int& gen);
|
||||||
void parseRotationParameter(std::string const&);
|
void parseRotationParameter(std::string const&);
|
||||||
std::vector<int> parseNumrange(char const* range, int max);
|
std::vector<int> parseNumrange(char const* range, int max);
|
||||||
|
|
||||||
|
@ -397,17 +386,19 @@ class QPDFJob
|
||||||
std::vector<std::shared_ptr<QPDF>>& page_heap);
|
std::vector<std::shared_ptr<QPDF>>& page_heap);
|
||||||
bool shouldRemoveUnreferencedResources(QPDF& pdf);
|
bool shouldRemoveUnreferencedResources(QPDF& pdf);
|
||||||
void handleRotations(QPDF& pdf);
|
void handleRotations(QPDF& pdf);
|
||||||
|
void getUOPagenos(UnderOverlay& uo,
|
||||||
|
std::map<int, std::vector<int> >& pagenos);
|
||||||
void handleUnderOverlay(QPDF& pdf);
|
void handleUnderOverlay(QPDF& pdf);
|
||||||
void doUnderOverlayForPage(
|
void doUnderOverlayForPage(
|
||||||
QPDF& pdf,
|
QPDF& pdf,
|
||||||
QPDFJob::UnderOverlay& uo,
|
UnderOverlay& uo,
|
||||||
std::map<int, std::vector<int> >& pagenos,
|
std::map<int, std::vector<int> >& pagenos,
|
||||||
size_t page_idx,
|
size_t page_idx,
|
||||||
std::map<int, QPDFObjectHandle>& fo,
|
std::map<int, QPDFObjectHandle>& fo,
|
||||||
std::vector<QPDFPageObjectHelper>& pages,
|
std::vector<QPDFPageObjectHelper>& pages,
|
||||||
QPDFPageObjectHelper& dest_page,
|
QPDFPageObjectHelper& dest_page,
|
||||||
bool before);
|
bool before);
|
||||||
void validateUnderOverlay(QPDF& pdf, QPDFJob::UnderOverlay* uo);
|
void validateUnderOverlay(QPDF& pdf, UnderOverlay* uo);
|
||||||
void handleTransformations(QPDF& pdf);
|
void handleTransformations(QPDF& pdf);
|
||||||
void addAttachments(QPDF& pdf);
|
void addAttachments(QPDF& pdf);
|
||||||
void copyAttachments(QPDF& pdf);
|
void copyAttachments(QPDF& pdf);
|
||||||
|
@ -556,6 +547,9 @@ class QPDFJob
|
||||||
bool externalize_inline_images;
|
bool externalize_inline_images;
|
||||||
bool keep_inline_images;
|
bool keep_inline_images;
|
||||||
bool remove_page_labels;
|
bool remove_page_labels;
|
||||||
|
size_t oi_min_width;
|
||||||
|
size_t oi_min_height;
|
||||||
|
size_t oi_min_area;
|
||||||
size_t ii_min_bytes;
|
size_t ii_min_bytes;
|
||||||
UnderOverlay underlay;
|
UnderOverlay underlay;
|
||||||
UnderOverlay overlay;
|
UnderOverlay overlay;
|
||||||
|
|
|
@ -43,7 +43,11 @@ namespace
|
||||||
class ImageOptimizer: public QPDFObjectHandle::StreamDataProvider
|
class ImageOptimizer: public QPDFObjectHandle::StreamDataProvider
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ImageOptimizer(QPDFJob& o, QPDFObjectHandle& image);
|
ImageOptimizer(QPDFJob& o,
|
||||||
|
size_t oi_min_width,
|
||||||
|
size_t oi_min_height,
|
||||||
|
size_t oi_min_area,
|
||||||
|
QPDFObjectHandle& image);
|
||||||
virtual ~ImageOptimizer()
|
virtual ~ImageOptimizer()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -55,6 +59,9 @@ namespace
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QPDFJob& o;
|
QPDFJob& o;
|
||||||
|
size_t oi_min_width;
|
||||||
|
size_t oi_min_height;
|
||||||
|
size_t oi_min_area;
|
||||||
QPDFObjectHandle image;
|
QPDFObjectHandle image;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -101,8 +108,15 @@ namespace
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageOptimizer::ImageOptimizer(QPDFJob& o, QPDFObjectHandle& image) :
|
ImageOptimizer::ImageOptimizer(QPDFJob& o,
|
||||||
|
size_t oi_min_width,
|
||||||
|
size_t oi_min_height,
|
||||||
|
size_t oi_min_area,
|
||||||
|
QPDFObjectHandle& image) :
|
||||||
o(o),
|
o(o),
|
||||||
|
oi_min_width(oi_min_width),
|
||||||
|
oi_min_height(oi_min_height),
|
||||||
|
oi_min_area(oi_min_area),
|
||||||
image(image)
|
image(image)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -194,9 +208,9 @@ ImageOptimizer::makePipeline(std::string const& description, Pipeline* next)
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (((o.oi_min_width > 0) && (w <= o.oi_min_width)) ||
|
if (((this->oi_min_width > 0) && (w <= this->oi_min_width)) ||
|
||||||
((o.oi_min_height > 0) && (h <= o.oi_min_height)) ||
|
((this->oi_min_height > 0) && (h <= this->oi_min_height)) ||
|
||||||
((o.oi_min_area > 0) && ((w * h) <= o.oi_min_area)))
|
((this->oi_min_area > 0) && ((w * h) <= this->oi_min_area)))
|
||||||
{
|
{
|
||||||
QTC::TC("qpdf", "qpdf image optimize too small");
|
QTC::TC("qpdf", "qpdf image optimize too small");
|
||||||
if (! description.empty())
|
if (! description.empty())
|
||||||
|
@ -415,7 +429,10 @@ QPDFJob::Members::Members() :
|
||||||
externalize_inline_images(false),
|
externalize_inline_images(false),
|
||||||
keep_inline_images(false),
|
keep_inline_images(false),
|
||||||
remove_page_labels(false),
|
remove_page_labels(false),
|
||||||
ii_min_bytes(1024), // QXXXQ comment with oi_*
|
oi_min_width(128), // Default values for these
|
||||||
|
oi_min_height(128), // oi and ii flags are in --help
|
||||||
|
oi_min_area(16384), // and in the manual.
|
||||||
|
ii_min_bytes(1024), //
|
||||||
underlay("underlay"),
|
underlay("underlay"),
|
||||||
overlay("overlay"),
|
overlay("overlay"),
|
||||||
under_overlay(0),
|
under_overlay(0),
|
||||||
|
@ -427,9 +444,6 @@ QPDFJob::Members::Members() :
|
||||||
}
|
}
|
||||||
|
|
||||||
QPDFJob::QPDFJob() :
|
QPDFJob::QPDFJob() :
|
||||||
oi_min_width(128), // Default values for these
|
|
||||||
oi_min_height(128), // oi flags are in --help
|
|
||||||
oi_min_area(16384), // and in the manual.
|
|
||||||
m(new Members())
|
m(new Members())
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -1803,6 +1817,12 @@ QPDFJob::json_schema(std::set<std::string>* keys)
|
||||||
return schema;
|
return schema;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string
|
||||||
|
QPDFJob::json_out_schema_v1()
|
||||||
|
{
|
||||||
|
return json_schema().unparse();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
QPDFJob::doJSON(QPDF& pdf)
|
QPDFJob::doJSON(QPDF& pdf)
|
||||||
{
|
{
|
||||||
|
@ -2240,8 +2260,9 @@ QPDFJob::doUnderOverlayForPage(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void get_uo_pagenos(QPDFJob::UnderOverlay& uo,
|
void
|
||||||
std::map<int, std::vector<int> >& pagenos)
|
QPDFJob::getUOPagenos(QPDFJob::UnderOverlay& uo,
|
||||||
|
std::map<int, std::vector<int> >& pagenos)
|
||||||
{
|
{
|
||||||
size_t idx = 0;
|
size_t idx = 0;
|
||||||
size_t from_size = uo.from_pagenos.size();
|
size_t from_size = uo.from_pagenos.size();
|
||||||
|
@ -2272,9 +2293,9 @@ QPDFJob::handleUnderOverlay(QPDF& pdf)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
std::map<int, std::vector<int> > underlay_pagenos;
|
std::map<int, std::vector<int> > underlay_pagenos;
|
||||||
get_uo_pagenos(m->underlay, underlay_pagenos);
|
getUOPagenos(m->underlay, underlay_pagenos);
|
||||||
std::map<int, std::vector<int> > overlay_pagenos;
|
std::map<int, std::vector<int> > overlay_pagenos;
|
||||||
get_uo_pagenos(m->overlay, overlay_pagenos);
|
getUOPagenos(m->overlay, overlay_pagenos);
|
||||||
std::map<int, QPDFObjectHandle> underlay_fo;
|
std::map<int, QPDFObjectHandle> underlay_fo;
|
||||||
std::map<int, QPDFObjectHandle> overlay_fo;
|
std::map<int, QPDFObjectHandle> overlay_fo;
|
||||||
std::vector<QPDFPageObjectHelper> upages;
|
std::vector<QPDFPageObjectHelper> upages;
|
||||||
|
@ -2439,7 +2460,6 @@ QPDFJob::copyAttachments(QPDF& pdf)
|
||||||
void
|
void
|
||||||
QPDFJob::handleTransformations(QPDF& pdf)
|
QPDFJob::handleTransformations(QPDF& pdf)
|
||||||
{
|
{
|
||||||
QPDFJob& o = *this; // QXXXQ
|
|
||||||
QPDFPageDocumentHelper dh(pdf);
|
QPDFPageDocumentHelper dh(pdf);
|
||||||
std::shared_ptr<QPDFAcroFormDocumentHelper> afdh;
|
std::shared_ptr<QPDFAcroFormDocumentHelper> afdh;
|
||||||
auto make_afdh = [&]() {
|
auto make_afdh = [&]() {
|
||||||
|
@ -2474,7 +2494,9 @@ QPDFJob::handleTransformations(QPDF& pdf)
|
||||||
{
|
{
|
||||||
std::string name = iter2.first;
|
std::string name = iter2.first;
|
||||||
QPDFObjectHandle& image = iter2.second;
|
QPDFObjectHandle& image = iter2.second;
|
||||||
ImageOptimizer* io = new ImageOptimizer(o, image);
|
ImageOptimizer* io = new ImageOptimizer(
|
||||||
|
*this, m->oi_min_width, m->oi_min_height,
|
||||||
|
m->oi_min_area, image);
|
||||||
PointerHolder<QPDFObjectHandle::StreamDataProvider> sdp(io);
|
PointerHolder<QPDFObjectHandle::StreamDataProvider> sdp(io);
|
||||||
if (io->evaluate("image " + name + " on page " +
|
if (io->evaluate("image " + name + " on page " +
|
||||||
QUtil::int_to_string(pageno)))
|
QUtil::int_to_string(pageno)))
|
||||||
|
|
|
@ -181,7 +181,7 @@ ArgParser::argJsonHelp()
|
||||||
<< std::endl
|
<< std::endl
|
||||||
<< "be null, and others will have values that apply to unencrypted files."
|
<< "be null, and others will have values that apply to unencrypted files."
|
||||||
<< std::endl
|
<< std::endl
|
||||||
<< QPDFJob::json_schema().unparse()
|
<< QPDFJob::json_out_schema_v1()
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -338,21 +338,21 @@ QPDFJob::Config::normalizeContent(char const* parameter)
|
||||||
QPDFJob::Config&
|
QPDFJob::Config&
|
||||||
QPDFJob::Config::oiMinArea(char const* parameter)
|
QPDFJob::Config::oiMinArea(char const* parameter)
|
||||||
{
|
{
|
||||||
o.oi_min_area = QUtil::string_to_uint(parameter);
|
o.m->oi_min_area = QUtil::string_to_uint(parameter);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
QPDFJob::Config&
|
QPDFJob::Config&
|
||||||
QPDFJob::Config::oiMinHeight(char const* parameter)
|
QPDFJob::Config::oiMinHeight(char const* parameter)
|
||||||
{
|
{
|
||||||
o.oi_min_height = QUtil::string_to_uint(parameter);
|
o.m->oi_min_height = QUtil::string_to_uint(parameter);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
QPDFJob::Config&
|
QPDFJob::Config&
|
||||||
QPDFJob::Config::oiMinWidth(char const* parameter)
|
QPDFJob::Config::oiMinWidth(char const* parameter)
|
||||||
{
|
{
|
||||||
o.oi_min_width = QUtil::string_to_uint(parameter);
|
o.m->oi_min_width = QUtil::string_to_uint(parameter);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user