Word OLE (Delphi PDF) - SDK sample


Related Articles Add comment Email article Print article

The Word OLE (Delphi PDF) sample is a simple Windows console application that converts a MS Word document (C:\Test.doc) to PDF using Word OLE automation. The sample can be used to elaborate more complex code and applications with the novaPDF SDK.

Note: To be able to use the samples you must install novaPDF SDK as samples work only with it. Download it here: nova PDF SDK.

Sample Code:

program HelloWorld;

 

{$APPTYPE CONSOLE}

 

uses

  ActiveX,

  Printers,

  novaOptions,

  novapiLIB_TLB;

const

 

  //name of novaPDF Printer

  PRINTER_NAME    = '<%SDK_SAMPLE_PRINTER%>';

 

  //text to be written in the PDF file

  PDF_TEXT        = 'Hello world from Delphi!';

 

  //PDF file name

  PDF_FILE_NAME   = 'HelloWorld_Delphi.pdf';

 

  //Print profile name

  PROFILE_NAME      = 'HelloWorld Delphi Profile';

  PROFILE_IS_PUBLIC = 0;

 

var

  hr : HRESULT;

  pNova : INovaPdfOptions;

  strDefaultProfile : WideString;

  bPublicProfile: INTEGER;

  //decomment next code if you use workaround for printer index (see below)

  //Device, Driver, Port: array[0..80] of Char;

  //DevMode: THandle;

 

BEGIN

 

  //initialize COM

  hr := ActiveX.CoInitialize(NIL);

  IF (FAILED (hr)) then BEGIN

    System.Writeln('Failed to initialize COM');

    EXIT;

  END;

 

  //create one NovaPdfOptions instance

  pNova := NIL;

  hr := ActiveX.CoCreateInstance(

              CLASS_NovaPdfOptions, //CLSID_CNovaPdfSource,

              NIL,

              CLSCTX_INPROC_SERVER,

              IID_INovaPdfOptions,

              pNova);

  IF (FAILED(hr))    then BEGIN

    System.Writeln('Failed to create novaPDF COM object');

    EXIT;

  END;

 

  //initialize NovaPdfOptions and pass printer name

  //if you have an application license for novaPDF SDK,

  //pass both the registration name and the license key to the Initialize2() function

  //hr := pNova.Initialize2( PRINTER_NAME, '<registration name>', '<license key>', '<application name>');

  hr := pNova.Initialize2( PRINTER_NAME, '', '', '' );

 

  IF (SUCCEEDED(hr)) then BEGIN

 

  pNova.SetDefaultPrinter();

    // now the default printer is novaPDF printer but the Printer object is not updated

    // here is a workaround to update the Printer object with the default printer

    // you only need this code if you check later on the Printer.PrinterIndex to find out the default printer

    //Printer.GetPrinter(Device, Driver, Port, DevMode);

    //Printer.SetPrinter(PRINTER_NAME, Driver, Port, 0);

 

    // set optional PDF settings

    // create a temporary profile for the current print job,

    // in order to not modify the default profile settings

    pNova.AddProfile2(PROFILE_NAME, PROFILE_IS_PUBLIC);

    // set PDF document Title

    pNova.SetOptionString2(NOVAPDF_INFO_TITLE,

                           'Hello World Delphi Sample', PROFILE_NAME, PROFILE_IS_PUBLIC);

    // set resulting file name

    pNova.SetOptionString2(NOVAPDF_SAVE_FOLDER, '', PROFILE_NAME, PROFILE_IS_PUBLIC);

    pNova.SetOptionString2(NOVAPDF_SAVE_FILE,

                           PDF_FILE_NAME, PROFILE_NAME, PROFILE_IS_PUBLIC);

    //do not show prompt dialog

    pNova.SetOptionLong2(NOVAPDF_SAVE_PROMPT, 0, PROFILE_NAME, PROFILE_IS_PUBLIC);

    //if file exists, override

    pNova.SetOptionLong2(NOVAPDF_SAVE_CONFLICT_STRATEGY,

                         FILE_CONFLICT_STRATEGY_OVERWRITE,

                         PROFILE_NAME, PROFILE_IS_PUBLIC);

    //open document in PDF viewer

    pNova.SetOptionLong2(NOVAPDF_ACTION_OPEN_DOCUMENT, 1, PROFILE_NAME, PROFILE_IS_PUBLIC);

    // set active profile

    strDefaultProfile := '';

    pNova.GetActiveProfile2(strDefaultProfile, bPublicProfile);

    pNova.SetActiveProfile2(PROFILE_NAME, PROFILE_IS_PUBLIC);

 

    //start print job

    Printer.BeginDoc();

    Printer.Canvas.Font.Size := 24;

    Printer.Canvas.TextOut( 100,

                            80,

                            PDF_TEXT);

    Printer.endDoc();

    System.Writeln('Print job finished');

 

    //restore default profile

    pNova.SetActiveProfile2(strDefaultProfile, bPublicProfile);

    pNova.DeleteProfile2(PROFILE_NAME, PROFILE_IS_PUBLIC);

    //restore default printer

    pNova.RestoreDefaultPrinter();

  END ELSE BEGIN

    System.Writeln('Failed to initialize novaPDF Printer');

  END;

 

  ActiveX.CoUninitialize();

 

END.

Related articles

Comments