Try
Only for Windows
Tested PB 5.62 x86 - Windows 10 x64
Example : Print to "Microsoft Print to PDF" direct
Code: Select all
Procedure Setdefaultprinter_(DeviceLine.s)
WriteProfileString_("windows", "Device", DeviceLine)
SendMessage_(#HWND_BROADCAST, #WM_WININICHANGE, 0, "windows")
EndProcedure
Procedure SetPrinter(printername$)
enumFlags = #PRINTER_ENUM_LOCAL | #PRINTER_ENUM_CONNECTIONS
If EnumPrinters_(enumFlags, #Null, 1, 0, 0, @deviceNamesBufferSize, @printerCount) = 0
deviceNamesBuffer = AllocateMemory(deviceNamesBufferSize)
If deviceNamesBuffer And EnumPrinters_(enumFlags, #Null, 1,
deviceNamesBuffer, deviceNamesBufferSize, @sizeRDB, @printerCount)
If printerCount
pInfoNameOffset = OffsetOf(PRINTER_INFO_1\pName)
For i = 0 To (printerCount - 1)
If PeekS(PeekL(deviceNamesBuffer + i * (SizeOf(PRINTER_INFO_1)) + pInfoNameOffset)) = printername$
Setdefaultprinter_(printername$)
Break
EndIf
Next
EndIf
FreeMemory(deviceNamesBuffer)
EndIf
EndIf
EndProcedure
LoadFont(0,"Tahoma",12)
OpenWindow(0,0,0,200,100,"Printer Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(1,10,10,60,20,"Print")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case 1
SetPrinter("Microsoft Print to PDF")
If DefaultPrinter()
If StartPrinting("PureBasic Test")
If StartVectorDrawing(PrinterVectorOutput())
VectorFont(FontID(0), 16)
VectorSourceColor($FF7982FF)
MovePathCursor(0, 30)
DrawVectorText("Hello RASHAD")
StopVectorDrawing()
EndIf
StopPrinting()
EndIf
EndIf
EndSelect
EndSelect
Until Quit = 1
End