I'm using Ghostscript library API (wrapping from C#) to print PDF documents from my application.
With the '-dFirstPage' and '-dLastPage' parameters I'm able to select an range of pages to be printed, but how about the total number of a PDF's pages?
It is not very nice to allow a user to select a page interval from 2 to 10 when, let me say, the PDF document has only 4 pages.
Consider that I'm using Ghostscript library through the gsapi_init_with_args API library call.
Ghostscript can count and display the number of pages of a PDF on stdout
. The commandline is
gswin32c ^ -q ^ -dNODISPLAY ^ -c "(input.pdf) (r) file runpdfbegin pdfpagecount = quit"
Here all the -c "..."
stuff is a PostScript commandline snippet (using a few GS internal command extensions). And input.pdf is the PDF filename (could also be a full path like (c:/path/to/my.pdf)
).
However, a better and faster tool for this kind of job would be to use pdfinfo
(part of the XPDF-utilities, also available on Windows).
Update:
@ebyrob wants to know if one can modify my example command line so that it also displays the PDF in a single operation. Try this:
gswin32c ^ -q ^ -c "(input.pdf) (r) file runpdfbegin pdfpagecount =" ^ -f input.pdf
Well, it's not a single operation -- it's just two different operations in a single commandline.
I tried to make this script:
gswin32c ^ -q ^ -c "(input.pdf) (r) file runpdfbegin pdfpagecount =" ^ -f input.pdf
work in a c# wrapped solution and kept getting error "/undefinedfilename". In this case ensure that your filepath has Slashes "/" as DirectorySeperator and not Backslashes "\". I know Kurt Pfeifle already wrote it, but it happened to me i just overlooked it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With