Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
PDF3 library issue
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Gestionnaire de rapports & Rapports
Versions des environnements
Visual FoxPro:
VFP 9 SP2
OS:
Windows 10
Divers
Thread ID:
01663043
Message ID:
01666898
Vues:
143
Martina,

It appears that all tools for converting VFP reports to PDF are created either by Martin or Martina :)

Are there any other first names in Czech Republic other than Martin and Martina? :) Just kidding; my best childhood friend, lives in Prague. And his name is not Martin :)


>Hi Rick,
>
>IMHO, the bug is in another place, see to previous loop in code.
>
>1) Split to text to lines (array p)
>2) Calculate width for each line
>3) If line's width is greather then original text width, then split line to two lines
>
>MartinaJ
>
>>>Hi Rick,
>>>PDF3 is derived report listener.
>>>All metadata (text, value, left, top, width, height) are the same for PDF3 and each report listener (base or derived).
>>>MartinaJ
>>>
>>>>I have discovered an issue with PDF3.PRG written by Martin Krivka in 2013: http://www.vfp.cz
>>
>>Martina,
>>
>>I have found what I think is another issue with this code in pdf3.prg. Can you verify?
>>
>>The code is in this block:
>>
=HPDF_Page_SetRGBFill(.hPage, m.frx.penred, m.frx.pengreen, m.frx.penblue)
>>=HPDF_Page_BeginText(.hPage)
>>for m.i=1 to alen(p)
>>    =HPDF_Page_TextRect(.hPage, p_left, p_top, p_right, p_bottom, p_text, m.frx._align, 0)
>>endfor
>>if bittest(m.frx.fontstyle ,2)
>>    private ul,ur,u,uw,underline1
>>    m.underline1=HPDF_Page_TextWidth(.hPage, "_")
>>    for m.i=1 to alen(p)
>>        m.u=replicate("_", int(p_width/m.underline1))
>>        m.uw=m.underline1*len(m.u)
>>        if m.uw > p_width
>>            m.ul=p_left - round( (m.uw - (p_right-p_left))/2, 0)
>>            m.ur=m.ul+m.uw
>>        else
>>            m.ul=p_left
>>            m.ur=p_right
>>        endif
>>        =HPDF_Page_TextRect(.hPage, m.ul, p_top-1, m.ur, p_bottom-1, m.u, m.frx._align, 0)
>>    endfor
>>endif
>>=HPDF_Page_EndText(.hPage)
>>
>>The bug is here:
>>
for m.i=1 to alen(p)
>>* Bug ... this line positions the multiple rows of data without regard to any height consideration:
>>    =HPDF_Page_TextRect(.hPage, p_left, p_top, p_right, p_bottom, p_text, m.frx._align, 0)
>>endfor
>>
>>
>>it should be like this so that lines that wrap and exceed their rectangle do not continue to be positioned on the page:
>>
for m.i=1 to alen(p)
>>    IF p_top - p_height >= p_bottom   && Added
>>        =HPDF_Page_TextRect(.hPage, p_left, p_top, p_right, p_bottom, p_text, m.frx._align, 0)
>>    ENDIF   && Added
>>endfor
>>
>>
>>In one of our data sets, for example, we have a report that allows 1.23" for a particular column, but the data in the column is wide enough for two rows of that. Using pdf3.prg as it is it wraps the second line down and prints row 2 half over the top of the first row content. With the change above it only prints the first row, and skips over the second row because the coordinates exceed the original rectangle.
>>
>>I think this may only be half a solution, however, because there should be a way to determine if the content's properties should allow wrapping or not.
>>
>>What do you think?
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform