Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PDF printing in C# ?

3,361 views
Skip to first unread message

cybertof

unread,
Jun 16, 2004, 2:39:33 AM6/16/04
to

Hello,

Is there a way to easily print a .pdf file to the printer ?
(without an external component)


Thanks.

Anders Eriksson

unread,
Jun 16, 2004, 3:26:40 AM6/16/04
to

I would say No!

The only way I have made it print is using Acrobat Reader or Ghostscript
gsprint and then starting it via System.Diagnostics.Process

If your application is commercial then Acrobat Reader is your only choice,
unless you sell a million copies of it...

The really hard way would of cause be to create a .NET component that
prints PDF... If you do, PLEASE let me know!!!

// Anders

cybertof

unread,
Jun 16, 2004, 4:34:43 AM6/16/04
to
In article <1t7qay2hbbp0c$.d...@morateknikutveckling.se>,
anders....@morateknikutveckling.se says...

> The only way I have made it print is using Acrobat Reader or Ghostscript
> gsprint and then starting it via System.Diagnostics.Process
>
>

Hi !

Yes but I don't think Acrobat Reader exposes a robust COM interface to
do it.

It is possible to do it through a shell call like :

acrord32.exe /h /p d:\test.pdf

But :
- it makes acrobat reader appear
- it does not close at the end


Any idea to do it properly (not appear and closing at the end) ?


Regards,
Cybertof.

Mark Rae

unread,
Jun 16, 2004, 4:55:32 AM6/16/04
to
"Anders Eriksson" <anders....@morateknikutveckling.se> wrote in message
news:1t7qay2hbbp0c$.dlg@morateknikutveckling.se...

> The really hard way would of cause be to create a .NET component that
> prints PDF... If you do, PLEASE let me know!!!

And me!


Olivier

unread,
Jun 16, 2004, 5:46:17 AM6/16/04
to
Hello

What about

http://itextsharp.sourceforge.net/tutorial/index.html


Olivier

"cybertof" <cybertof2...@gmx.net> a écrit dans le message de
news:MPG.1b3a0992f...@msnews.microsoft.com...

Anders Eriksson

unread,
Jun 16, 2004, 9:57:36 AM6/16/04
to
On Wed, 16 Jun 2004 11:46:17 +0200, Olivier wrote:

> http://itextsharp.sourceforge.net/tutorial/index.html
>
The iTextSharp is a very nice Library, but I haven't seen anyone using it
for printing.

If you know how to do it then _PLEASE_ let us know!!

// Anders
--
I'm using iTextSharp for merging several PDF files into one so that I can
print out many PDF files in a specific order...

Shakir Hussain

unread,
Jun 16, 2004, 11:08:11 AM6/16/04
to
You can close acrobot after printing by using System.Windows.Forms.SendKeys
class. You have to send ALT+F4 to close the app.

However, you have to check the printer queue first to ensure that printing
is completed before closing it..

Shak.

"cybertof" <cybertof2...@gmx.net> wrote in message
news:MPG.1b3a2489b...@msnews.microsoft.com...

Mark Rae

unread,
Jun 21, 2004, 5:16:19 PM6/21/04
to
"Anders Eriksson" <anders....@morateknikutveckling.se> wrote in message
news:g7bi6gpv0qui$.dlg@morateknikutveckling.se...

> The iTextSharp is a very nice Library, but I haven't seen anyone using it
> for printing.

That's because it doesn't work...

> If you know how to do it then _PLEASE_ let us know!!

Yep, I'll eat my hat, as we say here in Blighty... :-)


Javier Ros Moreno

unread,
Jul 13, 2004, 5:32:31 PM7/13/04
to
hi,

I惴 using this for print the .pdf files:

acrord32.exe /h /p d:\mypdf.pdf

but I惴 getting some errors.

In my case, I惴 printing several files, 100, 150, 200, ...
I have a list of pdf files, and for each pdf I execute the command:

acrord32.exe /h /p d:\mypdfX.pdf

The error is the following: acrobat print the documents in other order
than I have executed, and don愒 print some documents ...

Any ideas?

PD: sorry, my inglish is very poor.

*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!

Anders Eriksson

unread,
Jul 15, 2004, 3:16:31 AM7/15/04
to
Hello Javier,

On Tue, 13 Jul 2004 14:32:31 -0700, Javier Ros Moreno wrote:

> In my case, I´m printing several files, 100, 150, 200, ...


> I have a list of pdf files, and for each pdf I execute the command:
>
> acrord32.exe /h /p d:\mypdfX.pdf
>
> The error is the following: acrobat print the documents in other order

> than I have executed, and don´t print some documents ...
>
> Any ideas?

The problem is that Adobe has change the behavior of Acrobat Reader! If you
are using a version later than 4.0 then the /p flag is not performed.

Acrobat will 'never' exit and is reused for the next document you print.
Only one document can be printed at a time. This explains the error that
some documents are not printed. Your command to print is executed when
Acrobat is busy printing and your command is ignored!

The reason for that the documents are printed in a different order on the
printer than you have executed the commands is that you are using a print
queue (which is the normal way of printing in Windows). You are not
printing directly to the printer just to the print queue and then the print
queue will send the documents to the printer, in the order that the print
queue thinks is appropriate.

The only way I have gotten this to work is to use iTextSharp to merge all
the documents into one big document that has all pages in the correct order
and then print this AllInOne document.

I have created a .net Assembly that I can include in any .net project, but
since I did this for the company I work for I need to check with the bosses
if I can share it.

It's really simple to create it yourself. Just go to iTextSharps site and
download the library and the source. then check the sample on merging
pdf-documents...
http://itextsharp.sourceforge.net/

>
> PD: sorry, my inglish is very poor.
>

su inglés es mucho mejor que mi español ;-)


// Anders

Javier Ros Moreno

unread,
Jul 15, 2004, 3:43:05 AM7/15/04
to

Anders, I had tryed to merge these document into one big document but
iTextSharp don´t support encrypted documents, my pdf documents are
encryted.

Thanks.

Anders Eriksson

unread,
Jul 15, 2004, 4:29:14 AM7/15/04
to
On Thu, 15 Jul 2004 00:43:05 -0700, Javier Ros Moreno wrote:

> Anders, I had tryed to merge these document into one big document but
> iTextSharp don´t support encrypted documents, my pdf documents are
> encryted.
>

OK, then there are one thing that you might do. This depends on the license
of your application.

I'm sure you have heard of Ghostscript. Well there is a utility program
that comes with Ghostscript called gsprint. Using gsprint instead of
Acrobat Reader will do everything you want.

gsprint will end when the printing is done so you can use
System.Diagnostics.Process to start gsprint and then use
Process::WaitForExit(); to wait until the printing is done.

This way you will get all documents printed in order!

The only problem is that to be able to use gsprint/Ghostscript your
application has to be released under the GPL License or you need to buy a
license from Artifex Software, Inc. and the license cost from 20000$ and up

// Anders

0 new messages