summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Johnson <ajohnson@redneon.com>2013-12-30 17:59:09 +1030
committerAdrian Johnson <ajohnson@redneon.com>2014-02-05 19:42:50 +1030
commit6d39a1d7b348329dd057a8e7c77bfd47921fc495 (patch)
tree822571c800ac1dac1241fa81597558690def8a79
parentb1da7e20dcef78ef6036418b37a47ba3f8818453 (diff)
pdftocairo: ensure page size and crop box works the same as pdftops
Bug 72312
-rw-r--r--utils/pdftocairo.126
-rw-r--r--utils/pdftocairo.cc20
2 files changed, 24 insertions, 22 deletions
diff --git a/utils/pdftocairo.1 b/utils/pdftocairo.1
index 7d17eef4..c903ffac 100644
--- a/utils/pdftocairo.1
+++ b/utils/pdftocairo.1
@@ -147,7 +147,7 @@ Specifies the height of crop area in pixels (image output) or points (vector out
Specifies the size of crop square in pixels (image output) or points (vector output) (sets \-W and \-H)
.TP
.B \-cropbox
-Uses the crop box rather than media box when generating the files
+Uses the crop box rather than media box when generating the files (PNG/JPEG/TIFF only)
.TP
.B \-mono
Generate a monochrome file (PNG and TIFF only).
@@ -169,32 +169,24 @@ Generate Level 3 PostScript (PS only). This enables all Level 2 features plus
shading patterns and masked images. This is the default setting.
.TP
.B \-origpagesizes
-Generate a file with variable page sizes and orientations (PS and PDF
-only). The size of each page will be the original page in the PDF
-file. If the output is PS the file will contain %%DocumentMedia and
-%%PageMedia DSC comments specifying the size of each page. Any
-specification of the page size via \-paper, \-paperw, or \-paperh will
-get overridden as long as each page of the PDF file has a defined
-paper size.
+This option is the same as "\-paper match".
.TP
.BI \-paper " size"
Set the paper size to one of "letter", "legal", "A4", or "A3"
(PS,PDF,SVG only). This can also be set to "match", which will set
-the paper size to match the size specified in the PDF
-file. \-origpagesizes overrides this setting if the PDF file has
-defined page sizes.
+the paper size of each page to match the size specified in the PDF
+file. If none the \-paper, \-paperw, or \-paperh options are
+specified the default is to match the paper size.
.TP
.BI \-paperw " size"
-Set the paper width, in points (PS,PDF,SVG only). \-origpagesizes overrides this setting
-if the PDF file has defined page sizes.
+Set the paper width, in points (PS,PDF,SVG only).
.TP
.BI \-paperh " size"
-Set the paper height, in points (PS,PDF,SVG only). \-origpagesizes overrides this setting
-if the PDF file has defined page sizes.
+Set the paper height, in points (PS,PDF,SVG only).
.TP
.B \-nocrop
-By default, output is cropped to the CropBox specified in the PDF
-file. This option disables cropping.
+By default, printing output is cropped to the CropBox specified in the PDF
+file. This option disables cropping (PS,PDF,SVG only).
.TP
.B \-expand
Expand PDF pages smaller than the paper to fill the paper (PS,PDF,SVG only). By
diff --git a/utils/pdftocairo.cc b/utils/pdftocairo.cc
index f67007f7..59c1996e 100644
--- a/utils/pdftocairo.cc
+++ b/utils/pdftocairo.cc
@@ -104,7 +104,7 @@ static GooString icc;
static GBool level2 = gFalse;
static GBool level3 = gFalse;
-static GBool doOrigPageSizes = gFalse;
+static GBool origPageSizes = gFalse;
static char paperSize[15] = "";
static int paperWidth = -1;
static int paperHeight = -1;
@@ -203,7 +203,7 @@ static const ArgDesc argDesc[] = {
"generate Level 2 PostScript (PS, EPS)"},
{"-level3", argFlag, &level3, 0,
"generate Level 3 PostScript (PS, EPS)"},
- {"-origpagesizes",argFlag, &doOrigPageSizes,0,
+ {"-origpagesizes",argFlag, &origPageSizes,0,
"conserve original page sizes (PS, PDF, SVG)"},
{"-paper", argString, paperSize, sizeof(paperSize),
"paper size (letter, legal, A4, A3, match)"},
@@ -420,7 +420,7 @@ static void getOutputSize(double page_w, double page_h, double *width, double *h
{
if (printing) {
- if (doOrigPageSizes) {
+ if (origPageSizes) {
*width = page_w;
*height = page_h;
} else {
@@ -828,10 +828,11 @@ int main(int argc, char *argv[]) {
checkInvalidPrintOption(transp, "-transp");
checkInvalidPrintOption(icc.getCString()[0], "-icc");
checkInvalidPrintOption(singleFile, "-singlefile");
+ checkInvalidPrintOption(useCropBox, "-cropbox");
} else {
checkInvalidImageOption(level2, "-level2");
checkInvalidImageOption(level3, "-level3");
- checkInvalidImageOption(doOrigPageSizes, "-origpagesizes");
+ checkInvalidImageOption(origPageSizes, "-origpagesizes");
checkInvalidImageOption(paperSize[0], "-paper");
checkInvalidImageOption(paperWidth > 0, "-paperw");
checkInvalidImageOption(paperHeight > 0, "-paperh");
@@ -842,6 +843,9 @@ int main(int argc, char *argv[]) {
checkInvalidImageOption(duplex, "-duplex");
}
+ if (printing)
+ useCropBox = !noCrop;
+
if (icc.getCString()[0] && !png) {
fprintf(stderr, "Error: -icc may only be used with png output.\n");
exit(99);
@@ -874,17 +878,23 @@ int main(int argc, char *argv[]) {
if (!level2 && !level3)
level3 = gTrue;
- if (eps && (doOrigPageSizes || paperSize[0] || paperWidth > 0 || paperHeight > 0)) {
+ if (eps && (origPageSizes || paperSize[0] || paperWidth > 0 || paperHeight > 0)) {
fprintf(stderr, "Error: page size options may not be used with eps output.\n");
exit(99);
}
if (paperSize[0]) {
+ if (origPageSizes) {
+ fprintf(stderr, "Error: -origpagesizes and -paper may not be used together.\n");
+ exit(99);
+ }
if (!setPSPaperSize(paperSize, paperWidth, paperHeight)) {
fprintf(stderr, "Invalid paper size\n");
exit(99);
}
}
+ if (paperWidth < 0 || paperHeight < 0)
+ origPageSizes = gTrue;
globalParams = new GlobalParams();
if (quiet) {