RE:Definir tamaño de papel personalizado (2)
//(CONTINUÁ la declaración en Local External Functions...)
Function Long dwGetPrinterOrientation(ulong hdl, ref int iPrnOrientation) library "powerprn.dll"
Function Long dwSetPrinterOrientation(ulong hdl, int iPrnOrientation) library "powerprn.dll"
Function Long dwGetPaperWidth(ulong hdl, ref int iPaperWidth) library "powerprn.dll"
Function Long dwSetPaperWidth(ulong hdl, int iPaperWidth) library "powerprn.dll"
Function Long dwGetPaperSize(ulong hdl, ref int iPaperSize) library "powerprn.dll"
5. Colocar este script en el botón que va a realizar la impresión
integer ll_row
long edw,esz,elen,ewdth,ll_length,ll_width
//dw_1.retrieve(......)
dw_1.retrieve
ll_length = 1040 // Colocar el alto (soportado por la impresora)
ll_width = 2100 // Colocar el ancho (soportado por la impresora)
prn_hndl=CWin32Prn_CPP_CONSTRUCTOR()
esz=dwSetPaperSize(prn_hndl, DMPAPER_USER)
elen=dwSetPaperLength(prn_hndl, ll_length)
ewdth=dwSetPaperWidth(prn_hndl, ll_width)
dw_1.print()
dwSetPaperSize(prn_hndl, DMPAPER_LETTER)
CWin32Prn_CPP_DESTRUCTOR(prn_hndl)
Nota: Esa es la forma cómo se puede personalizar el tamaño del papel. Me gustaría que prueben con diferentes impresoras y SO para reportar si existen problemas. De esa manera nos quedamos o rechazamos este método.
Fuente: Adaptado de un foro en inglés.