Commit 1253d1be60bd74a94ba78ff7064a8e7fce1ab514
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& dh, QPDFObjectHandle font, | @@ -211,21 +211,16 @@ void add_page(QPDFPageDocumentHelper& 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 |