1 /*
2 * Copyright 2002-2007, Haiku.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 * Michael Pfeiffer
7 */
8
9 #include <stdio.h>
10 #include <PrintJob.h>
11
12 #include "PicturePrinter.h"
13 #include "PrintJobReader.h"
14
printArguments(const char * application)15 void printArguments(const char* application) {
16 printf("Usage: %s [--pictures] files\n", application);
17 printf("Prints the contents of the specified spool files to stdout.\n"
18 "Arguments:\n"
19 " --pictures print contents of pictures\n");
20 }
21
main(int argc,char * argv[])22 int main(int argc, char* argv[]) {
23 BApplication app("application/x-vnd.Haiku.dump-print-job");
24
25 bool printPicture = false;
26 bool hasFiles = false;
27
28 for (int i = 1; i < argc; i ++) {
29 const char* arg = argv[i];
30 if (strcmp(arg, "--pictures") == 0) {
31 printPicture = true;
32 continue;
33 }
34
35 hasFiles = true;
36 BFile jobFile(arg, B_READ_WRITE);
37 if (jobFile.InitCheck() != B_OK) {
38 fprintf(stderr, "Error opening file %s!\n", arg);
39 continue;
40 }
41
42 PrintJobReader reader(&jobFile);
43 if (reader.InitCheck() != B_OK) {
44 fprintf(stderr, "Error reading spool file %s!", arg);
45 continue;
46 }
47
48 printf("Spool file: %s\n", arg);
49 printf("Job settings message:\n");
50 reader.JobSettings()->PrintToStream();
51
52 int32 pages = reader.NumberOfPages();
53 printf("Number of pages: %d\n", (int)pages);
54 for (int page = 0; page < pages; page ++) {
55 printf("Page: %d\n", page+1);
56 PrintJobPage pjp;
57 if (reader.GetPage(page, pjp) != B_OK) {
58 fprintf(stderr, "Error reading page!\n");
59 break;
60 }
61
62 BPicture picture;
63 BPoint pos;
64 BRect rect;
65 printf("Number of pictures: %ld\n", pjp.NumberOfPictures());
66 while (pjp.NextPicture(picture, pos, rect) == B_OK) {
67 printf("Picture position = (%f, %f) bounds = [l: %f t: %f r: %f b: %f]\n",
68 pos.x, pos.y,
69 rect.left, rect.top, rect.right, rect.bottom);
70
71 if (printPicture) {
72 printf("Picture:\n");
73 PicturePrinter printer;
74 printer.Iterate(&picture);
75 }
76 }
77 }
78 }
79
80 if (!hasFiles)
81 printArguments(argv[0]);
82 }
83