this example, I want to show you how to automate print using default printer on local computer.
PROCEDURE GENERATE_VALIDATION (ID1 number, ID2 number, ID3 DATE) IS
PL_ID PARAMLIST;
filename varchar2(255);
teks varchar2(255);
IN_FILE TEXT_IO.FILE_TYPE;
BEGIN
pl_id := Create_Parameter_List('TEMP');
ADD_PARAMETER(PL_ID,'ID_1',TEXT_PARAMETER,ID1);
ADD_PARAMETER(PL_ID,'ID_2',TEXT_PARAMETER,ID2);
ADD_PARAMETER(PL_ID,'ID_3',TEXT_PARAMETER,ID3);
--this statement for get default printer and generate to text file
host('CMD /C wmic printer where default=''TRUE'' get name > '||filename,NO_SCREEN);
--because wmic generate 3 lines, this statement for get only line where the
--default printer located
host('CMD /C Powershell "Get-Content '||filename||' | Select-Object -Index 1" > '||filename||'.txt', NO_SCREEN );
begin
IN_FILE := TEXT_IO.FOPEN(filename||'.txt', 'r');
TEXT_IO.GET_LINE(IN_FILE,TEKS);
--Trim TEKS, because there is spaces after default printer name
TEKS := LTRIM(RTRIM(TEKS));
TEXT_IO.FCLOSE(IN_FILE);
exception when others then
TEXT_IO.FCLOSE(IN_FILE);
end;
--erase temporary files
host('CMD /R DEL '||filename||'.*',NO_SCREEN);
--if there's default printer then automate print default printer on local computer
if TEKS is null then
ADD_PARAMETER(PL_ID,'DESTYPE',TEXT_PARAMETER,'PRINTER');
ADD_PARAMETER(PL_ID,'DESNAME',TEXT_PARAMETER,TEKS);
--if there's no default printer then show your report
else
ADD_PARAMETER(PL_ID,'DESTYPE',TEXT_PARAMETER,'SCREEN');
end if;
Add_Parameter(pl_id,'PARAMFORM', TEXT_PARAMETER, 'NO');
Add_Parameter(pl_id,'PRINTJOB', TEXT_PARAMETER,'YES');
Run_Product(REPORTS,'VALIDATION', SYNCHRONOUS, RUNTIME,FILESYSTEM, pl_id, NULL);
Destroy_Parameter_List(pl_id);
END;
Reference: https://technet.microsoft.com/en-us/library/hh849895.aspx | https://adamstech.wordpress.com/2010/11/1 | http://stackoverflow.com/questions/17217476..
Notes: For windows XP/2003 you must install powershell, here’s the links:
- Microsoft .NET Framework 2.0 Service Pack 1 (x86)
- Update for Windows XP (KB968930): includes Windows PowerShell 2.0 and Windows Remote Management (WinRM) 2.0
- Update for Windows 2003