aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFWriter.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2019-01-04 18:32:02 +0100
committerJay Berkenbilt <ejb@ql.org>2019-01-04 18:37:22 +0100
commit16fd6e64f947e17144e05325e51d792df33eaa61 (patch)
treeca397d4fcdbc15fc6b9414c6a8db0c0343aba3e2 /libqpdf/QPDFWriter.cc
parent837dcf8fc2546a80f205a0c4c53e5a1545c53a84 (diff)
downloadqpdf-16fd6e64f947e17144e05325e51d792df33eaa61.tar.zst
Add QPDFWriter::getFinalVersion (fixes #266)
Diffstat (limited to 'libqpdf/QPDFWriter.cc')
-rw-r--r--libqpdf/QPDFWriter.cc44
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)