?
Solved

Printing a word doc in duplex mode using delphi OLE Automation

Posted on 2013-06-28
3
Medium Priority
?
1,367 Views
Last Modified: 2013-07-31
Hello,

I am using a printer that supports duplex printing(I am successfully printing double-sided a document using Word - Office 2013). I need to print a word document double-sided using Delphi and my tries have failed so far.
Please let me know if you have a working solution.
Here is the code I am using:

procedure TForm1.b1Click(Sender: TObject);
var
  Word: variant;

  procedure SetDuplexMode;
  var
    Device, Driver, Port: array[0..80] of Char;
    DevMode: THandle;
    pDevmode: PDeviceMode;
  begin
    Printer.GetPrinter(Device, Driver, Port, DevMode);
    if Devmode  <> 0 then begin
      pDevMode := GlobalLock(Devmode);
      if pDevmode <> nil then
      try
        with pDevmode^ do begin
          dmDuplex := DMDUP_VERTICAL;
          dmFields := dmFields or DM_DUPLEX;
        end;
      finally
        GlobalUnlock(Devmode);
      end;
    end;
  end;

begin
   Word := CreateOleObject('Word.Application');
   Word.documents.add('C:\Developpement\Analysis\Print-Doubleface\1.docx');
   SetDuplexMode;

   Word.ActiveDocument.Printout;
end;
0
Comment
Question by:AMS_DEV
3 Comments
 
LVL 31

Expert Comment

by:Helen Feddema
ID: 39285164
I am not familiar with Delphi, but one way to get around difficulties with duplexing via code is to make a separate printer item, preset for duplexing.  Then you just print to that printer.  That is what I do for printing from Word or Access.
0
 

Author Comment

by:AMS_DEV
ID: 39285245
Thanks Helen, but I really need someone that can fix my code or give me another code example that works. Or maybe you can show me the code in another language you work with.
0
 

Accepted Solution

by:
Guillaume80 earned 1500 total points
ID: 39332729
The code you are using won't work because you are modifying the printer properties in the context of your Delphi application. (Add a TPrinterSetupDialog and you will see that the duplex mode is activated)
However, each application manages the printer properties independently.

You should therefore find a way to modify those properties through your Word Ole object. I have no knowledge of how you can handle this... As far as I know, it is not possible.

As Helen_Feddema suggested, the best way to get around this is to set up a dedicated printer for duplex printing. On a network, you can use a shared printer.
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

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

This article describes how to use the Send to Mail Recipient command. The instructions apply generally to Office 2007 and later versions, but Microsoft® Word 2013 was used for the specific steps and figures.  What is Send to Mail Recipient? Send…
Ever visit a website where you spotted a really cool looking Font, yet couldn't figure out which font family it belonged to, or how to get a copy of it for your own use? This article explains the process of doing exactly that, as well as showing how…
This video shows where to find templates, what they are used for, and how to create and save a custom template using Microsoft Word.
Learn how to make your own table of contents in Microsoft Word using paragraph styles and the automatic table of contents tool. We'll be using the paragraph styles in Word’s Home toolbar to help you create a table of contents. Type out your initial …
Suggested Courses

850 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