Well, it compiles and it works... but there are some strangeness in the code....
AAAA) Start with this code snippet: #ifdef __XPP__ METHOD tPdf:SetLPI(_nLpi) #else METHOD SetLPI(_nLpi) #endif local cLpi := alltrim(str(_nLpi)) DEFAULT _nLpi TO 6 cLpi := iif(cLpi$"1;2;3;4;6;8;12;16;24;48",cLpi,"6") ::aReport[ LPI ] := val( cLpi ) ::PageSize( ::aReport[ PAGESIZE ] ) RETURN _nLpi is used BEFORE assigning it a default value... then ::PageSize( ::aReport[ PAGESIZE ] ) is called, but this method has no use of LPI ! BBBB) SetLPI is called only once in the code, here: ::PageSize( _cPageSize ) // sets page width and height ::PageOrient( _cPageOrient ) // sets page orientation and the CALLS PageSize... correctly because you may have rotated the paper ::SetLPI( _nLpi ) // sets the LPI and then CALLS PageSize.... but the results doesn't change because LPI value is not used.... Probably a refactoring could be: ::SetLPI( _nLpi ) // removing the call to PageSize ::PageOrient( _cPageOrient ) // sets page orientation AND CALLS PageSize... since PageOrient is a public method, it is correct that it calls correctly because you may have rotated the paper But since PageOrient is PUBLIC, I can call it also in the middle of a page.... can I ? Later I will try the effect.... A better refactoring could be: ::SetLPI( _nLpi ) // removing the call to PageSize make PageOrient a PROTECTED method (it's called only once) ::PageOrient( _cPageOrient ) ::PageSize( _cPageSize ) CCCC) What puzzled me the most, I spent some time trying to understand why my A4 pdf looked strange when I called PageSize( "A4").... and found this code: METHOD PageSize( _cPageSize ) #endif local nSize, aSize := { { "LETTER", 8.50, 11.00 }, ; { "LEGAL" , 8.50, 14.00 }, ; { "LEDGER", 11.00, 17.00 }, ; { "EXECUTIVE", 7.25, 10.50 }, ; { "A4", 8.27, 11.69 }, ; { "A3", 11.69, 16.54 }, ; { "JIS B4", 10.12, 14.33 }, ; { "JIS B5", 7.16, 10.12 }, ; { "JPOST", 3.94, 5.83 }, ; { "JPOSTD", 5.83, 7.87 }, ; { "COM10", 4.12, 9.50 }, ; { "MONARCH", 3.87, 7.50 }, ; { "C5", 6.38, 9.01 }, ; { "DL", 4.33, 8.66 }, ; { "B5", 6.93, 9.84 } } DEFAULT _cPageSize TO "LETTER" nSize := ascan( aSize, { |arr| arr[ 1 ] = _cPageSize } ) IF nSize == 0 .or. nSize > 2 // HERE IS THE PROBLEM..... nSize := 1 ENDIF It seems that I can only have LETTER pdf.... So, after a couple of days spent on this library that looked interesting, I think I will give up.... it may have some other "hidden" features... What's your idea ? Francesco _______________________________________________ Harbour mailing list (attachment size limit: 40KB) Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour