Do you own a Debenu Quick PDF Library version 7, 8, 9, 10, 11, 12, 13 or iSEDQuickPDF license? Upgrade to Debenu Quick PDF Library 14 today!
Print To Different Tray/Bin Not Working |
Post Reply |
Author | ||
m_alam
Team Player Joined: 02 Aug 11 Location: Bangladesh Status: Offline Points: 40 |
Post Options
Thanks(0)
Posted: 13 Sep 22 at 1:18AM |
|
Greeting, i am trying to print to different tray/bin.. i have tried to set paper tray number using following code:
my printer has 4 trays.. i tried 1 to number 4 that didn't work.. so, i made a demo tool to list the printer trays, but strangely it shows same trays number for most of my printers :( but still when i try to print tray 15 and 257 (using 1st printer name), both print to same/default tray :( and more strange is that the 2nd printer on the list only have 1 tray, but qpl also shows same trays number for that one too? :( so? what i am doing wrong here? thanks in advance for upcoming help best regards
|
||
Ingo
Moderator Group Joined: 29 Oct 05 Status: Offline Points: 3524 |
Post Options
Thanks(0)
|
|
Hi Hassan,
To check about the real printer names i use: GetPrinterNames. To check about existing printer bins i use: GetPrinterBins. Doing the output the following syntax should help: if ( prname = 'default' ) Then PriName := QP.GetDefaultPrinterName; if ( prname <> 'default' ) then PriName := prname; // . . . propt := QP.PrintOptions(pscal, rotate, fname); if ( bin > 0 ) Then begin cPriName := QP.NewCustomPrinter(PriName); QP.SetupCustomPrinter(cPriName, 9, bin); end; if ( pend = 9999 ) then pend := pc; // pagecount for i := 1 to copies do begin if ( bin > 0 ) Then QP.PrintDocument(cPriName, pstart, pend, propt) // with bin else QP.PrintDocument(PriName, pstart, pend, propt); // without bin end; |
||
Cheers,
Ingo |
||
m_alam
Team Player Joined: 02 Aug 11 Location: Bangladesh Status: Offline Points: 40 |
Post Options
Thanks(0)
|
|
that's what exactly my code does, though in different language.. but it just not working :( |
||
Ingo
Moderator Group Joined: 29 Oct 05 Status: Offline Points: 3524 |
Post Options
Thanks(0)
|
|
not really "exactly" cause my code works for me ;-)
|
||
Cheers,
Ingo |
||
m_alam
Team Player Joined: 02 Aug 11 Location: Bangladesh Status: Offline Points: 40 |
Post Options
Thanks(0)
|
|
that is the code i am using to setup printer tray, what i am doing wrong here? can you please tell me? thanks in advance best regards
|
||
Ingo
Moderator Group Joined: 29 Oct 05 Status: Offline Points: 3524 |
Post Options
Thanks(0)
|
|
Do you read all at "for default source" (New Value)?
https://www.debenu.com/docs/pdf_library_reference/SetupCustomPrinter.php There should be a problem... After each code line you can check the returning value of the call from one line before. 1 means okay / 0 means error Perhaps this helps one step further? |
||
Cheers,
Ingo |
||
jack97119
Beginner Joined: 28 Dec 21 Status: Offline Points: 3 |
Post Options
Thanks(0)
|
|
Before printing, you can set the paper box that the printer will use in advance.
The following example achieves a more flexible function: changing the paper box used during the printing process. If you only need to set up the paper box before printing, you can modify the code yourself. ============================== code: Printer.BeginDoc; //dosomething...print //--------- Changing Trays .... ----------------- Printer.GetPrinter(device, driver, port, hDMode); if (hDMode <> 0) then begin pDMode := GlobalLock(hDMode); if Assigned(pDMode) then begin pDMode.dmFields := pDMode.dmFields or DMBIN_MANUAL; pDMode.dmDefaultSource :=GetTraysID(); winapi.Windows.EndPage( Printer.Handle ); If ResetDC( Printer.canvas.Handle, pDMode^ ) = 0 Then showmessage( 'ResetDC failed, '+SysErrorMessage(GetLastError)); GlobalUnlock( hDMode ); winapi.Windows.StartPage( Printer.Handle ); Printer.Canvas.Refresh; end; //-------------------------------------------------- //dosomething...print Printer.EndDoc; end; function GetTraysID()(TraysName: string; adevice, aport: PWideChar): Word; var i, rslt: Integer; tBinNames: array of Tbinname; BinCodes: array of Word; begin Result := DM_DEFAULTSOURCE; rslt := devicecapabilitiesW(adevice, aport, dc_binnames, nil, nil); if rslt > 0 then begin setlength(tBinNames, rslt); setlength(BinCodes, rslt); try if devicecapabilitiesW(adevice, aport, dc_binnames, @tBinNames[0], nil) = -1 then begin setlength(BinCodes, 0); setlength(tBinNames, 0); raise exception.Create('error tbinnames'); end; if devicecapabilitiesW(adevice, aport, DC_BINS, @BinCodes[0], nil) = -1 then begin setlength(BinCodes, 0); setlength(tBinNames, 0); raise exception.Create('error BinCodes'); end; for i := 0 to rslt - 1 do begin if TraysName = tBinNames then begin Result := BinCodes; Break; end; end; finally setlength(BinCodes, 0); setlength(tBinNames, 0); end; end; end; |
||
Post Reply | |
Tweet
|
Forum Jump | Forum Permissions You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |
Copyright © 2017 Debenu. Debenu Quick PDF Library is a PDF SDK. All rights reserved. About — Contact — Blog — Support — Online Store