Solved

How do I print a multipage pdf document in C#

Posted on 2008-06-13
7
1,316 Views
Last Modified: 2012-06-21
I am opening up a pdf document, filling the fields with data and want to print the document. I am having troubles with the print part. I was thinking of perhaps counting the number of pages in the document and storing that value in printpagessilent method (the second 0 is the nLastPage), but I am unsure on how that is accomplished.

Dave
The following code worked great, but unfortunately it brings up a print dialog screen and you would always have to click the ok button. I need to print the pages silent.
 
acroApp.MenuItemExecute("Print")
 
The following code works fine if you have a set number of pages. 
avDoc.PrintPagesSilent(0, 0, 0, 0, 1)

Open in new window

0
Comment
Question by:kalittaair
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
7 Comments
 
LVL 15

Expert Comment

by:Raisor
ID: 21785122
Hi,

how about trying:

int pagenum = (avDoc.GetNumPages() - 1);
avDoc.PrintPagesSilent(0, pagenum, 1, 0, 1);


Best regards,
Raisor
0
 

Author Comment

by:kalittaair
ID: 21792481
Hi Raisor,

Well I am on the right path because I saw the use of GetNumPages in the SDK Summary of OLE objects and methods section that I downloaded from Adobe but whenever I tried to use it, it is not available with the intellisense. I tried the suggestion you sent anyway and an error, (like I thought it would do) states "Acrobate.CAcroAVDoc does not contain a definition for 'GetNumPages' and no extension method 'GetNumPages' accepting..."

Perhaps I am missing an Adobe library file? I am using Adobe 8 Professional.

Best Regards,
Dave

0
 
LVL 15

Expert Comment

by:Raisor
ID: 21793469
Hi,

I'm not sure if you've added the correct references!

You may have a look at this thread: http://groups.google.com/group/adobe.acrobat.sdk/browse_thread/thread/3d2da62344fc5097

... it should give you an idea about the correct references.


Best regards,
Raisor
0
What Is Transaction Monitoring and who needs it?

Synthetic Transaction Monitoring that you need for the day to day, which ensures your business website keeps running optimally, and that there is no downtime to impact your customer experience.

 

Author Comment

by:kalittaair
ID: 21797393
Hello
In C# I had to use the following code to get access to the pDDoc methods.
           CAcroPDDoc pdDoc = new AcroPDDocClass();
To get the PDDoc, (whic contains the method GetNumPages) associated with a particular AVDoc object, your supposed to use the GetPDDoc method. Have any ideas on how to join the two together?
I got as far as:
int pageNum = (avDoc.GetPDDoc(pdDoc.GetNumPages()-1)); but it's wrong because there is no overload for method 'GetPDDoc' takes '1' arguments.

Best Regards,
Dave
0
 
LVL 15

Expert Comment

by:Raisor
ID: 21797729
Hi,

I'll have a closer look at it and get back with detailed information soon!


Best regards,
Raisor
0
 
LVL 15

Accepted Solution

by:
Raisor earned 250 total points
ID: 21811129
Hi,

Let's try it this way:

CAcroPDDoc pdDoc = (Acrobat.CAcroPDDoc)new Acrobat.AcroPDDocClass();
pdDoc.Open("C:\\YourPath\\YourPDF.pdf");
int pageNum = pdDoc.GetNumPages()


Best regards,
Raisor
0
 

Author Closing Comment

by:kalittaair
ID: 31468302
Hi,
Thank you, thank you, thank you! I didn't realize you had to open up the pdDoc after creating it since I thought creating a new instance of the PDDoc Class was a way to just join to the AVDoc class, (which had already opened the file). Anyway, the final code below works great and I appreciate all your patience and perseverance ! Give yourself a big pat on the back for this one.

            CAcroPDDoc pdDoc = new AcroPDDocClass();
            pdDoc.Open(FORM_NAME); //FORM_NAME is the const string of the file name used with avDoc
            int pageNum = (pdDoc.GetNumPages()-1);

            avDoc.PrintPagesSilent(0, pageNum, 0, 0, 1);
0

Featured Post

What Is Transaction Monitoring and who needs it?

Synthetic Transaction Monitoring that you need for the day to day, which ensures your business website keeps running optimally, and that there is no downtime to impact your customer experience.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Displaying an arrayList in a listView using the default adapter is rarely the best solution. To get full control of your display data, and to be able to refresh it after editing, requires the use of a custom adapter.
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
Introduction to Processes
Starting up a Project

691 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question