diff options
author | Jay Berkenbilt <ejb@ql.org> | 2019-01-04 18:32:02 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2019-01-04 18:37:22 +0100 |
commit | 16fd6e64f947e17144e05325e51d792df33eaa61 (patch) | |
tree | ca397d4fcdbc15fc6b9414c6a8db0c0343aba3e2 /libqpdf/QPDFWriter.cc | |
parent | 837dcf8fc2546a80f205a0c4c53e5a1545c53a84 (diff) | |
download | qpdf-16fd6e64f947e17144e05325e51d792df33eaa61.tar.zst |
Add QPDFWriter::getFinalVersion (fixes #266)
Diffstat (limited to 'libqpdf/QPDFWriter.cc')
-rw-r--r-- | libqpdf/QPDFWriter.cc | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc index 22b990ff..598d4654 100644 --- a/libqpdf/QPDFWriter.cc +++ b/libqpdf/QPDFWriter.cc @@ -63,6 +63,7 @@ QPDFWriter::Members::Members(QPDF& pdf) : max_ostream_index(0), deterministic_id(false), md5_pipeline(0), + did_write_setup(false), events_expected(0), events_seen(0), next_progress_report(0) @@ -2358,8 +2359,14 @@ QPDFWriter::prepareFileForWrite() } void -QPDFWriter::write() +QPDFWriter::doWriteSetup() { + if (this->m->did_write_setup) + { + return; + } + this->m->did_write_setup = true; + // Do preliminary setup if (this->m->linearized) @@ -2507,6 +2514,23 @@ QPDFWriter::write() setMinimumPDFVersion("1.5"); } + setMinimumPDFVersion(this->m->pdf.getPDFVersion(), + this->m->pdf.getExtensionLevel()); + this->m->final_pdf_version = this->m->min_pdf_version; + this->m->final_extension_level = this->m->min_extension_level; + if (! this->m->forced_pdf_version.empty()) + { + QTC::TC("qpdf", "QPDFWriter using forced PDF version"); + this->m->final_pdf_version = this->m->forced_pdf_version; + this->m->final_extension_level = this->m->forced_extension_level; + } +} + +void +QPDFWriter::write() +{ + doWriteSetup(); + // Set up progress reporting. We spent about equal amounts of time // preparing and writing one pass. To get a rough estimate of // progress, we track handling of indirect objects. For linearized @@ -2569,20 +2593,16 @@ QPDFWriter::writeEncryptionDictionary() closeObject(this->m->encryption_dict_objid); } +std::string +QPDFWriter::getFinalVersion() +{ + doWriteSetup(); + return this->m->final_pdf_version; +} + void QPDFWriter::writeHeader() { - setMinimumPDFVersion(this->m->pdf.getPDFVersion(), - this->m->pdf.getExtensionLevel()); - this->m->final_pdf_version = this->m->min_pdf_version; - this->m->final_extension_level = this->m->min_extension_level; - if (! this->m->forced_pdf_version.empty()) - { - QTC::TC("qpdf", "QPDFWriter using forced PDF version"); - this->m->final_pdf_version = this->m->forced_pdf_version; - this->m->final_extension_level = this->m->forced_extension_level; - } - writeString("%PDF-"); writeString(this->m->final_pdf_version); if (this->m->pclm) |