diff options
author | Jay Berkenbilt <ejb@ql.org> | 2010-08-06 02:37:39 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2010-08-06 02:37:39 +0200 |
commit | 6d0e60bf3fe84745586e869bc17364b4d99cf267 (patch) | |
tree | d4601947ab59008bf1e98ad7eedd535fb974d1e0 /examples/double-page-size.cc | |
parent | 81b73bb9e9e1c93c6ad6d8e7cd32ab230450c02b (diff) | |
download | qpdf-6d0e60bf3fe84745586e869bc17364b4d99cf267.tar.zst |
rename
git-svn-id: svn+q:///qpdf/trunk@998 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'examples/double-page-size.cc')
-rw-r--r-- | examples/double-page-size.cc | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/examples/double-page-size.cc b/examples/double-page-size.cc deleted file mode 100644 index e933b5ac..00000000 --- a/examples/double-page-size.cc +++ /dev/null @@ -1,113 +0,0 @@ -#include <iostream> -#include <string.h> -#include <stdlib.h> -#include <qpdf/QPDF.hh> -#include <qpdf/QUtil.hh> -#include <qpdf/Buffer.hh> -#include <qpdf/QPDFWriter.hh> - -static char const* whoami = 0; - -void usage() -{ - std::cerr << "Usage: " << whoami << " infile.pdf outfile.pdf [in-password]" - << std::endl - << "Double size of all pages in infile.pdf;" - << " write output to outfile.pdf" << std::endl; - exit(2); -} - -static void doubleBoxSize(QPDFObjectHandle& page, char const* box_name) -{ - QPDFObjectHandle box = page.getKey(box_name); - if (box.isNull()) - { - return; - } - if (! (box.isArray() && (box.getArrayNItems() == 4))) - { - throw std::runtime_error(std::string("box ") + box_name + - " is not an array of four elements"); - } - std::vector<QPDFObjectHandle> doubled; - for (unsigned int i = 0; i < 4; ++i) - { - doubled.push_back( - QPDFObjectHandle::newReal( - QUtil::double_to_string( - box.getArrayItem(i).getNumericValue() * 2.0, 2))); - } - page.replaceKey(box_name, QPDFObjectHandle::newArray(doubled)); -} - -int main(int argc, char* argv[]) -{ - whoami = QUtil::getWhoami(argv[0]); - - // For libtool's sake.... - if (strncmp(whoami, "lt-", 3) == 0) - { - whoami += 3; - } - - if (! ((argc == 3) || (argc == 4))) - { - usage(); - } - - char const* infilename = argv[1]; - char const* outfilename = argv[2]; - char const* password = (argc == 4) ? argv[3] : ""; - - // Text to prepend to each page's contents - char const* content = "2 0 0 2 0 0 cm\n"; - - // Copy text into a buffer without the null terminator - PointerHolder<Buffer> b = new Buffer(strlen(content)); - unsigned char* bp = b.getPointer()->getBuffer(); - memcpy(bp, (unsigned char*)content, strlen(content)); - - try - { - QPDF qpdf; - qpdf.processFile(infilename, password); - - std::vector<QPDFObjectHandle> pages = qpdf.getAllPages(); - for (std::vector<QPDFObjectHandle>::iterator iter = pages.begin(); - iter != pages.end(); ++iter) - { - QPDFObjectHandle& page = *iter; - - // Prepend the buffer to the page's contents - page.addPageContents(QPDFObjectHandle::newStream(&qpdf, b), true); - - // Double the size of each of the content boxes - doubleBoxSize(page, "/MediaBox"); - doubleBoxSize(page, "/CropBox"); - doubleBoxSize(page, "/BleedBox"); - doubleBoxSize(page, "/TrimBox"); - doubleBoxSize(page, "/ArtBox"); - } - - // Write out a new file - QPDFWriter w(qpdf, outfilename); - if (QUtil::get_env("IN_TESTSUITE")) - { - // For the test suite, uncompress streams and use static - // IDs. - w.setStaticID(true); - w.setStreamDataMode(qpdf_s_uncompress); - } - w.write(); - std::cout << whoami << ": new file written to " << outfilename - << std::endl; - } - catch (std::exception &e) - { - std::cerr << whoami << " processing file " << infilename << ": " - << e.what() << std::endl; - exit(2); - } - - return 0; -} |