summaryrefslogtreecommitdiff
path: root/utils/pdftocairo.cc
diff options
context:
space:
mode:
authorAdrian Johnson <ajohnson@redneon.com>2014-09-07 20:18:36 +0930
committerAdrian Johnson <ajohnson@redneon.com>2014-10-21 22:04:23 +1030
commit700205af19ef1ae5f2c713d118ebd5dd4a0afba3 (patch)
treeab05bdf272fdaa1418210220060332574cf06d62 /utils/pdftocairo.cc
parent40d3ae87befad489fd8c0b38ff2561a0782cae0b (diff)
pdftocairo: Allow an output file for win32 printing to be specified
Can be used for testing win32 print output without wasting paper.
Diffstat (limited to 'utils/pdftocairo.cc')
-rw-r--r--utils/pdftocairo.cc13
1 files changed, 7 insertions, 6 deletions
diff --git a/utils/pdftocairo.cc b/utils/pdftocairo.cc
index 79d71d9b..65d7c231 100644
--- a/utils/pdftocairo.cc
+++ b/utils/pdftocairo.cc
@@ -500,7 +500,7 @@ static cairo_status_t writeStream(void *closure, const unsigned char *data, unsi
return CAIRO_STATUS_WRITE_ERROR;
}
-static void beginDocument(GooString *outputFileName, double w, double h)
+static void beginDocument(GooString *inputFileName, GooString *outputFileName, double w, double h)
{
if (printing) {
if (!print) {
@@ -541,7 +541,7 @@ static void beginDocument(GooString *outputFileName, double w, double h)
#endif
}
#ifdef CAIRO_HAS_WIN32_SURFACE
- win32BeginDocument(outputFileName, w, h);
+ win32BeginDocument(inputFileName, outputFileName, w, h);
#endif
}
}
@@ -731,7 +731,7 @@ static GooString *getOutputFileName(GooString *fileName, GooString *outputName)
if (outputName) {
if (outputName->cmp("-") == 0) {
- if (!printing && !singleFile) {
+ if (print || (!printing && !singleFile)) {
fprintf(stderr, "Error: stdout may only be used with the ps, eps, pdf, svg output options or if -singlefile is used.\n");
exit(99);
}
@@ -740,8 +740,9 @@ static GooString *getOutputFileName(GooString *fileName, GooString *outputName)
return new GooString(outputName);
}
- if (print)
- return fileName; //it will be used as the job name
+ if (print) {
+ return NULL; // No output file means print to printer
+ }
if (fileName->cmp("fd://0") == 0) {
fprintf(stderr, "Error: an output filename or '-' must be supplied when the PDF file is stdin.\n");
@@ -1090,7 +1091,7 @@ int main(int argc, char *argv[]) {
getOutputSize(pg_w, pg_h, &output_w, &output_h);
if (pg == firstPage)
- beginDocument(outputFileName, output_w, output_h);
+ beginDocument(fileName, outputFileName, output_w, output_h);
beginPage(output_w, output_h);
renderPage(doc, cairoOut, pg, pg_w, pg_h, output_w, output_h);
endPage(imageFileName);