Здравствуйте! Пытаюсь написать скрип оформления отчета в pdf формат. Использую dll: https://www.autoitscript.com/forum/topic/51054-printing-using-udf-and-a-dll/?page=1
Проблема в том, что данная функция не позволяет производить выбор формата листа (А3,А2,А1 и т.д.), принимает то формат, который установлен на принтере. Я решил установить несколько принтеров с автосохранением, указать каждому свой формат. Вот что получилось:
Возникла новая проблема: программа использует только тот формат листа, который указан у принтера по умолчанию. Настройки других принтеров не учитываются. Кто в курсе, помогите пожалуйста разобраться. Заранее всем спасибо!)))
Проблема в том, что данная функция не позволяет производить выбор формата листа (А3,А2,А1 и т.д.), принимает то формат, который установлен на принтере. Я решил установить несколько принтеров с автосохранением, указать каждому свой формат. Вот что получилось:
Код:
#include 'printMGv2.au3';the print UDF
Global $hp, $hpp
Local $mmssgg,$marginx,$marginy
$hp = _PrintDllStart($mmssgg);this must always be called first
if $hp = 0 then
consolewrite("Error from dllstart = " & $mmssgg & @CRLF)
Exit
endif
_PrintSelectPrinter($hp,"PDFCreator");Automatically choose the printer 24x16
_PrintPageOrientation($hp,1);set landscape printing
_PrintSetDocTitle($hp,"24x16")
_PrintStartPrint($hp)
$pght = _PrintGetpageheight($hp) - _PrintGetYOffset($hp)
$pgwd = _PrintGetpageWidth($hp) - _PrintGetXOffset($hp)
_PrintSetLineWid($hp,10)
_PrintSetLineCol($hp,0x000000)
_PrintLine($hp, 1, 1, 2840, 1);start x,y, end x,y in tenths of mm
_PrintLine($hp, 1, 1, 1, 1970);start x,y, end x,y in tenths of mm
_PrintLine($hp, 2840, 1, 2840, 1970);start x,y, end x,y in tenths of mm
_PrintLine($hp, 1, 1970, 2840, 1970);start x,y, end x,y in tenths of mm
_PrintImage($hp,"24x16.jpg",_PrintGetXOffset($hp),_PrintGetYOffset($hp),$pgwd,$pght)
_PrintEndPrint($hp)
_PrintNewPage($hp);Not really needed if no more pages to be printed
_printDllClose($hp)
Sleep(4500)
$hWnd = WinGetHandle("[ACTIVE]")
WinClose($hWnd)
_1()
Func _1()
$hpp = _PrintDllStart($mmssgg);this must always be called first
if $hpp = 0 then
consolewrite("Error from dllstart = " & $mmssgg & @CRLF)
Exit
endif
_PrintSelectPrinter($hpp,"pdfFactory Pro");Automatically choose the printer 24x16
_PrintPageOrientation($hpp,0);set landscape printing
_PrintSetDocTitle($hpp,"24!!!!!!")
_PrintStartPrint($hpp)
$pght = _PrintGetpageheight($hpp) - _PrintGetYOffset($hpp)
$pgwd = _PrintGetpageWidth($hpp) - _PrintGetXOffset($hpp)
_PrintSetLineWid($hpp,10)
_PrintSetLineCol($hpp,0x000000)
_PrintLine($hpp, 1, 1, 2840, 1);start x,y, end x,y in tenths of mm
_PrintLine($hpp, 1, 1, 1, 1970);start x,y, end x,y in tenths of mm
_PrintLine($hpp, 2840, 1, 2840, 1970);start x,y, end x,y in tenths of mm
_PrintLine($hpp, 1, 1970, 2840, 1970);start x,y, end x,y in tenths of mm
;~ _PrintImage($hpp,"24x16.jpg",_PrintGetXOffset($hpp),_PrintGetYOffset($hpp),$pgwd,$pght)
_PrintEndPrint($hpp)
_PrintNewPage($hpp);Not really needed if no more pages to be printed
_printDllClose($hpp)
Sleep(4500)
$hWnd = WinGetHandle("[ACTIVE]")
WinClose($hWnd)
EndFunc
Возникла новая проблема: программа использует только тот формат листа, который указан у принтера по умолчанию. Настройки других принтеров не учитываются. Кто в курсе, помогите пожалуйста разобраться. Заранее всем спасибо!)))