Detecting the printer page size

Post Reply
User avatar
Marco Turco
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London
Contact:

Detecting the printer page size

Post by Marco Turco »

Hi all,
I know that in order to detect the printer page size I can use oPrn:GetphySize() but is there a function to have directly the page format (example A4, A5, A3....) ?

Thanks
Best Regards,

Marco Turco
SOFTWARE XP LLP
yury
Posts: 56
Joined: Wed May 23, 2007 2:01 pm

Post by yury »

hello Mr.Marco,

I think no there is a native function for this, but see the function PrnGetPaper()...

I hope that helps you...

Code: Select all

//------------------------------------------------------------------------------------------
Function Test()

oPrinter = PrintBegin('Test',.T.,.T.,,.T.)

msginfo( PrnGetPaper(oPrinter)[1] ) // string with constant name of printer class
msginfo( PrnGetPaper(oPrinter)[2] ) // number of parameter for PrnSetPage function
msginfo( PrnGetPaper(oPrinter)[3] ) // string with name of paper

RETURN
//------------------------------------------------------------------------------------------

//------------------------------------------------------------------------------------------
*
* PrnGetPaper
* Returns the array of information about paper of printer select
* by Yury Marcelino Al (yma) - 06/2006 - yury030575@yahoo.com.br
*
//------------------------------------------------------------------------------------------
Function PrnGetPaper( oPrn )

local aPoint := PrnGetSize( oPrn:hDc )
local aRecmm := {}
local nW     := 0
local nH     := 0
local wx     := 0

local aPapers:={{"DMPAPER_LETTER            " ,  1 , "Letter              " , {216,279} },; 
                {"DMPAPER_LETTERSMALL       " ,  2 , "Letter Small        " , {216,279} },;
                {"DMPAPER_TABLOID           " ,  3 , "Tabloid             " , {280,432} },;
                {"DMPAPER_LEDGER            " ,  4 , "Ledger              " , {432,280} },;
                {"DMPAPER_LEGAL             " ,  5 , "Legal               " , {216,356} },;
                {"DMPAPER_STATEMENT         " ,  6 , "Statement           " , {140,216} },;
                {"DMPAPER_EXECUTIVE         " ,  7 , "Executive           " , {184,257} },;
                {"DMPAPER_A3                " ,  8 , "A3                  " , {297,420} },;
                {"DMPAPER_A4                " ,  9 , "A4                  " , {210,297} },;
                {"DMPAPER_A4SMALL           " , 10 , "A4 Small            " , {210,297} },;
                {"DMPAPER_A5                " , 11 , "A5                  " , {148,210} },;
                {"DMPAPER_B4                " , 12 , "B4                  " , {250,354} },;
                {"DMPAPER_B5                " , 13 , "B5                  " , {182,257} },;
                {"DMPAPER_FOLIO             " , 14 , "Folio               " , {216,330} },;
                {"DMPAPER_QUARTO            " , 15 , "Quarto              " , {215,275} },;
                {"DMPAPER_10X14             " , 16 , "10x14 in            " , {254,356} },;
                {"DMPAPER_11X17             " , 17 , "11x17 in            " , {280,432} },;
                {"DMPAPER_NOTE              " , 18 , "Note                " , {216,279} },;
                {"DMPAPER_ENV_9             " , 19 , "Envelope #9         " , {098,225} },;
                {"DMPAPER_ENV_10            " , 20 , "Envelope #10        " , {105,241} },;
                {"DMPAPER_ENV_11            " , 21 , "Envelope #11        " , {114,264} },;
                {"DMPAPER_ENV_12            " , 22 , "Envelope #12        " , {109,279} },;
                {"DMPAPER_ENV_14            " , 23 , "Envelope #14        " , {127,292} },;
                {"DMPAPER_ENV_DL            " , 27 , "Envelope DL         " , {110,220} },;
                {"DMPAPER_ENV_C5            " , 28 , "Envelope C5         " , {162,229} },;
                {"DMPAPER_ENV_C3            " , 29 , "Envelope C3         " , {324,458} },;
                {"DMPAPER_ENV_C4            " , 30 , "Envelope C4         " , {229,324} },;
                {"DMPAPER_ENV_C6            " , 31 , "Envelope C6         " , {114,162} },;
                {"DMPAPER_ENV_C65           " , 32 , "Envelope C65        " , {114,229} },;
                {"DMPAPER_ENV_B4            " , 33 , "Envelope B4         " , {250,353} },;
                {"DMPAPER_ENV_B5            " , 34 , "Envelope B5         " , {176,250} },;
                {"DMPAPER_ENV_B6            " , 35 , "Envelope B6         " , {176,125} },;
                {"DMPAPER_ENV_ITALY         " , 36 , "Envelope            " , {110,230} },;
                {"DMPAPER_ENV_MONARCH       " , 37 , "Envelope Monarch    " , {098,191} },;
                {"DMPAPER_ENV_PERSONAL      " , 38 , "6 3/4 Envelope      " , {092,165} },;
                {"DMPAPER_FANFOLD_US        " , 39 , "US Std Fanfold      " , {378,279} },;
                {"DMPAPER_FANFOLD_STD_GERMAN" , 40 , "German Std Fanfold  " , {216,305} },;
                {"DMPAPER_FANFOLD_LGL_GERMAN" , 41 , "German Legal Fanfold" , {216,330} } }
  
aRecmm = oPrn:Pix2Mmtr(aPoint[1], aPoint[2])

nW = ROUND(aRecmm[1],0)
nH = ROUND(aRecmm[2],0)

for wx=1 to len(aPapers)
   if aPapers[wx,4,1] = nW .AND. aPapers[wx,4,2] = nH
      return {aPapers[wx,1],aPapers[wx,2],aPapers[wx,3]}
	endif
next

return {"",0,""}
//------------------------------------------------------------------------------------------

regards
Yury Marcelino Al
yury030575@yahoo.com.br
vimansca@vimansca.com.br
Leme / SP - Brasil
Post Reply