From a72ce95c922228e624e47bb43a68c55a9dd8eab2 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Fri, 1 Oct 2010 11:02:35 +0000 Subject: setOutputStreams git-svn-id: svn+q:///qpdf/trunk@1035 71b93d88-0707-0410-a8cf-f5a4172ac649 --- libqpdf/QPDF.cc | 22 +++++++++++---- libqpdf/QPDF_linearization.cc | 64 +++++++++++++++++++++---------------------- 2 files changed, 48 insertions(+), 38 deletions(-) (limited to 'libqpdf') diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc index 3ea0f813..122b0bdb 100644 --- a/libqpdf/QPDF.cc +++ b/libqpdf/QPDF.cc @@ -267,6 +267,8 @@ QPDF::QPDF() : encryption_initialized(false), ignore_xref_streams(false), suppress_warnings(false), + out_stream(&std::cout), + err_stream(&std::cerr), attempt_recovery(true), encryption_V(0), encrypt_metadata(true), @@ -332,6 +334,13 @@ QPDF::setIgnoreXRefStreams(bool val) this->ignore_xref_streams = val; } +void +QPDF::setOutputStreams(std::ostream* out, std::ostream* err) +{ + this->out_stream = out ? out : &std::cout; + this->err_stream = err ? err : &std::cerr; +} + void QPDF::setSuppressWarnings(bool val) { @@ -449,7 +458,8 @@ QPDF::warn(QPDFExc const& e) this->warnings.push_back(e); if (! this->suppress_warnings) { - std::cerr << "WARNING: " << this->warnings.back().what() << std::endl; + *err_stream << "WARNING: " + << this->warnings.back().what() << std::endl; } } @@ -1045,16 +1055,16 @@ QPDF::showXRefTable() { ObjGen const& og = (*iter).first; QPDFXRefEntry const& entry = (*iter).second; - std::cout << og.obj << "/" << og.gen << ": "; + *out_stream << og.obj << "/" << og.gen << ": "; switch (entry.getType()) { case 1: - std::cout << "uncompressed; offset = " << entry.getOffset(); + *out_stream << "uncompressed; offset = " << entry.getOffset(); break; case 2: - std::cout << "compressed; stream = " << entry.getObjStreamNumber() - << ", index = " << entry.getObjStreamIndex(); + *out_stream << "compressed; stream = " << entry.getObjStreamNumber() + << ", index = " << entry.getObjStreamIndex(); break; default: @@ -1062,7 +1072,7 @@ QPDF::showXRefTable() " showing xref_table"); break; } - std::cout << std::endl; + *out_stream << std::endl; } } diff --git a/libqpdf/QPDF_linearization.cc b/libqpdf/QPDF_linearization.cc index f291c201..ca3fdbae 100644 --- a/libqpdf/QPDF_linearization.cc +++ b/libqpdf/QPDF_linearization.cc @@ -64,7 +64,7 @@ QPDF::checkLinearization() } catch (QPDFExc& e) { - std::cout << e.what() << std::endl; + *out_stream << e.what() << std::endl; } return result; } @@ -351,9 +351,9 @@ QPDF::readHintStream(Pipeline& pl, off_t offset, size_t length) if ((computed_end < min_end_offset) || (computed_end > max_end_offset)) { - std::cout << "expected = " << computed_end - << "; actual = " << min_end_offset << ".." - << max_end_offset << std::endl; + *out_stream << "expected = " << computed_end + << "; actual = " << min_end_offset << ".." + << max_end_offset << std::endl; throw QPDFExc(qpdf_e_damaged_pdf, this->file->getName(), "linearization dictionary", this->file->getLastOffset(), @@ -617,7 +617,7 @@ QPDF::checkLinearizationInternal() for (std::list::iterator iter = errors.begin(); iter != errors.end(); ++iter) { - std::cout << "ERROR: " << (*iter) << std::endl; + *out_stream << "ERROR: " << (*iter) << std::endl; } } @@ -627,7 +627,7 @@ QPDF::checkLinearizationInternal() for (std::list::iterator iter = warnings.begin(); iter != warnings.end(); ++iter) { - std::cout << "WARNING: " << (*iter) << std::endl; + *out_stream << "WARNING: " << (*iter) << std::endl; } } @@ -1008,17 +1008,17 @@ QPDF::showLinearizationData() } catch (QPDFExc& e) { - std::cout << e.what() << std::endl; + *out_stream << e.what() << std::endl; } } void QPDF::dumpLinearizationDataInternal() { - std::cout << this->file->getName() << ": linearization data:" << std::endl - << std::endl; + *out_stream << this->file->getName() << ": linearization data:" << std::endl + << std::endl; - std::cout + *out_stream << "file_size: " << this->linp.file_size << std::endl << "first_page_object: " << this->linp.first_page_object << std::endl << "first_page_end: " << this->linp.first_page_end << std::endl @@ -1029,19 +1029,19 @@ QPDF::dumpLinearizationDataInternal() << "H_length: " << this->linp.H_length << std::endl << std::endl; - std::cout << "Page Offsets Hint Table" << std::endl - << std::endl; + *out_stream << "Page Offsets Hint Table" << std::endl + << std::endl; dumpHPageOffset(); - std::cout << std::endl - << "Shared Objects Hint Table" << std::endl - << std::endl; + *out_stream << std::endl + << "Shared Objects Hint Table" << std::endl + << std::endl; dumpHSharedObject(); if (this->outline_hints.nobjects > 0) { - std::cout << std::endl - << "Outlines Hint Table" << std::endl - << std::endl; + *out_stream << std::endl + << "Outlines Hint Table" << std::endl + << std::endl; dumpHGeneric(this->outline_hints); } } @@ -1064,7 +1064,7 @@ void QPDF::dumpHPageOffset() { HPageOffset& t = this->page_offset_hints; - std::cout + *out_stream << "min_nobjects: " << t.min_nobjects << std::endl << "first_page_offset: " << adjusted_offset(t.first_page_offset) @@ -1095,7 +1095,7 @@ QPDF::dumpHPageOffset() for (int i1 = 0; i1 < this->linp.npages; ++i1) { HPageOffsetEntry& pe = t.entries[i1]; - std::cout + *out_stream << "Page " << i1 << ":" << std::endl << " nobjects: " << pe.delta_nobjects + t.min_nobjects << std::endl @@ -1109,10 +1109,10 @@ QPDF::dumpHPageOffset() << " nshared_objects: " << pe.nshared_objects << std::endl; for (int i2 = 0; i2 < pe.nshared_objects; ++i2) { - std::cout << " identifier " << i2 << ": " - << pe.shared_identifiers[i2] << std::endl; - std::cout << " numerator " << i2 << ": " - << pe.shared_numerators[i2] << std::endl; + *out_stream << " identifier " << i2 << ": " + << pe.shared_identifiers[i2] << std::endl; + *out_stream << " numerator " << i2 << ": " + << pe.shared_numerators[i2] << std::endl; } } } @@ -1121,7 +1121,7 @@ void QPDF::dumpHSharedObject() { HSharedObject& t = this->shared_object_hints; - std::cout + *out_stream << "first_shared_obj: " << t.first_shared_obj << std::endl << "first_shared_offset: " << adjusted_offset(t.first_shared_offset) @@ -1140,19 +1140,19 @@ QPDF::dumpHSharedObject() for (int i = 0; i < t.nshared_total; ++i) { HSharedObjectEntry& se = t.entries[i]; - std::cout << "Shared Object " << i << ":" << std::endl; - std::cout << " group length: " - << se.delta_group_length + t.min_group_length << std::endl; + *out_stream << "Shared Object " << i << ":" << std::endl; + *out_stream << " group length: " + << se.delta_group_length + t.min_group_length << std::endl; // PDF spec says signature present nobjects_minus_one are // always 0, so print them only if they have a non-zero value. if (se.signature_present) { - std::cout << " signature present" << std::endl; + *out_stream << " signature present" << std::endl; } if (se.nobjects_minus_one != 0) { - std::cout << " nobjects: " - << se.nobjects_minus_one + 1 << std::endl; + *out_stream << " nobjects: " + << se.nobjects_minus_one + 1 << std::endl; } } } @@ -1160,7 +1160,7 @@ QPDF::dumpHSharedObject() void QPDF::dumpHGeneric(HGeneric& t) { - std::cout + *out_stream << "first_object: " << t.first_object << std::endl << "first_object_offset: " << adjusted_offset(t.first_object_offset) -- cgit v1.2.3-54-g00ecf