Commit 1253d1be60bd74a94ba78ff7064a8e7fce1ab514

Authored by m-holger
Committed by Jay Berkenbilt
1 parent 33e8195c

Tidy pdf-create example

Convert loop to use range-based for statement.
Remove unnecessary variables.
Showing 1 changed file with 15 additions and 27 deletions
examples/pdf-create.cc
@@ -182,15 +182,15 @@ void add_page(QPDFPageDocumentHelper& dh, QPDFObjectHandle font, @@ -182,15 +182,15 @@ void add_page(QPDFPageDocumentHelper& dh, QPDFObjectHandle font,
182 size_t width = p->getWidth(); 182 size_t width = p->getWidth();
183 size_t height = p->getHeight(); 183 size_t height = p->getHeight();
184 QPDFObjectHandle image = QPDFObjectHandle::newStream(&pdf); 184 QPDFObjectHandle image = QPDFObjectHandle::newStream(&pdf);
185 - image.replaceDict("<<" 185 + auto image_dict = "<<"
186 " /Type /XObject" 186 " /Type /XObject"
187 " /Subtype /Image" 187 " /Subtype /Image"
188 " /BitsPerComponent 8" 188 " /BitsPerComponent 8"
189 - ">>"_qpdf);  
190 - QPDFObjectHandle image_dict = image.getDict(); 189 + ">>"_qpdf;
191 image_dict.replaceKey("/ColorSpace", newName(color_space)); 190 image_dict.replaceKey("/ColorSpace", newName(color_space));
192 image_dict.replaceKey("/Width", newInteger(width)); 191 image_dict.replaceKey("/Width", newInteger(width));
193 image_dict.replaceKey("/Height", newInteger(height)); 192 image_dict.replaceKey("/Height", newInteger(height));
  193 + image.replaceDict(image_dict);
194 194
195 // Provide the stream data. 195 // Provide the stream data.
196 image.replaceStreamData(provider, 196 image.replaceStreamData(provider,
@@ -211,21 +211,16 @@ void add_page(QPDFPageDocumentHelper&amp; dh, QPDFObjectHandle font, @@ -211,21 +211,16 @@ void add_page(QPDFPageDocumentHelper&amp; dh, QPDFObjectHandle font,
211 resources.replaceKey("/Font", rfont); 211 resources.replaceKey("/Font", rfont);
212 resources.replaceKey("/XObject", xobject); 212 resources.replaceKey("/XObject", xobject);
213 213
214 - QPDFObjectHandle mediabox = QPDFObjectHandle::newArray();  
215 - mediabox.appendItem(newInteger(0));  
216 - mediabox.appendItem(newInteger(0));  
217 - mediabox.appendItem(newInteger(612));  
218 - mediabox.appendItem(newInteger(392));  
219 -  
220 // Create the page content stream 214 // Create the page content stream
221 QPDFObjectHandle contents = createPageContents( 215 QPDFObjectHandle contents = createPageContents(
222 pdf, color_space + " with filter " + filter); 216 pdf, color_space + " with filter " + filter);
223 217
224 // Create the page dictionary 218 // Create the page dictionary
225 QPDFObjectHandle page = pdf.makeIndirectObject( 219 QPDFObjectHandle page = pdf.makeIndirectObject(
226 - QPDFObjectHandle::newDictionary());  
227 - page.replaceKey("/Type", newName("/Page"));  
228 - page.replaceKey("/MediaBox", mediabox); 220 + "<<"
  221 + " /Type /Page"
  222 + " /MediaBox [0 0 612 392]"
  223 + ">>"_qpdf);
229 page.replaceKey("/Contents", contents); 224 page.replaceKey("/Contents", contents);
230 page.replaceKey("/Resources", resources); 225 page.replaceKey("/Resources", resources);
231 226
@@ -257,20 +252,16 @@ static void check(char const* filename, @@ -257,20 +252,16 @@ static void check(char const* filename,
257 252
258 QPDF pdf; 253 QPDF pdf;
259 pdf.processFile(filename); 254 pdf.processFile(filename);
260 - QPDFPageDocumentHelper dh(pdf);  
261 - std::vector<QPDFPageObjectHelper> pages = dh.getAllPages(); 255 + auto pages = QPDFPageDocumentHelper(pdf).getAllPages();
262 if (n_color_spaces * n_filters != pages.size()) 256 if (n_color_spaces * n_filters != pages.size())
263 { 257 {
264 throw std::logic_error("incorrect number of pages"); 258 throw std::logic_error("incorrect number of pages");
265 } 259 }
266 size_t pageno = 1; 260 size_t pageno = 1;
267 bool errors = false; 261 bool errors = false;
268 - for (std::vector<QPDFPageObjectHelper>::iterator page_iter =  
269 - pages.begin();  
270 - page_iter != pages.end(); ++page_iter) 262 + for (auto& page : pages)
271 { 263 {
272 - QPDFPageObjectHelper& page(*page_iter);  
273 - std::map<std::string, QPDFObjectHandle> images = page.getImages(); 264 + auto images = page.getImages();
274 if (images.size() != 1) 265 if (images.size() != 1)
275 { 266 {
276 throw std::logic_error("incorrect number of images on page"); 267 throw std::logic_error("incorrect number of images on page");
@@ -279,8 +270,7 @@ static void check(char const* filename, @@ -279,8 +270,7 @@ static void check(char const* filename,
279 // Check filter and color space. 270 // Check filter and color space.
280 std::string desired_color_space = 271 std::string desired_color_space =
281 color_spaces[(pageno - 1) / n_color_spaces]; 272 color_spaces[(pageno - 1) / n_color_spaces];
282 - std::string desired_filter =  
283 - filters[(pageno - 1) % n_filters]; 273 + std::string desired_filter = filters[(pageno - 1) % n_filters];
284 // In the default mode, QPDFWriter will compress with 274 // In the default mode, QPDFWriter will compress with
285 // /FlateDecode if no filters are provided. 275 // /FlateDecode if no filters are provided.
286 if (desired_filter == "null") 276 if (desired_filter == "null")
@@ -310,7 +300,7 @@ static void check(char const* filename, @@ -310,7 +300,7 @@ static void check(char const* filename,
310 if (! this_errors) 300 if (! this_errors)
311 { 301 {
312 // Check image data 302 // Check image data
313 - PointerHolder<Buffer> actual_data = 303 + auto actual_data =
314 image.getStreamData(qpdf_dl_all); 304 image.getStreamData(qpdf_dl_all);
315 ImageProvider* p = new ImageProvider(desired_color_space, "null"); 305 ImageProvider* p = new ImageProvider(desired_color_space, "null");
316 PointerHolder<QPDFObjectHandle::StreamDataProvider> provider(p); 306 PointerHolder<QPDFObjectHandle::StreamDataProvider> provider(p);
@@ -399,13 +389,11 @@ static void create_pdf(char const* filename) @@ -399,13 +389,11 @@ static void create_pdf(char const* filename)
399 filters.push_back("/DCTDecode"); 389 filters.push_back("/DCTDecode");
400 filters.push_back("/RunLengthDecode"); 390 filters.push_back("/RunLengthDecode");
401 QPDFPageDocumentHelper dh(pdf); 391 QPDFPageDocumentHelper dh(pdf);
402 - for (std::vector<std::string>::iterator c_iter = color_spaces.begin();  
403 - c_iter != color_spaces.end(); ++c_iter) 392 + for (auto const& color_space : color_spaces)
404 { 393 {
405 - for (std::vector<std::string>::iterator f_iter = filters.begin();  
406 - f_iter != filters.end(); ++f_iter) 394 + for (auto const& filter : filters)
407 { 395 {
408 - add_page(dh, font, *c_iter, *f_iter); 396 + add_page(dh, font, color_space, filter);
409 } 397 }
410 } 398 }
411 399