This is yet another PHP-related bug we will be exploring today, though in another sense, it's a lot more general than that.
Good hunting, guys! |
It all started when I was working on yet another PHP report, that was an open-source plugin to export to PDF format. One of the users had requested me to make the font of the italicized descriptions (outlined in red) bigger, and I thought, how difficult could this be?
Oh, poor naive fool. It could get plenty more difficult.
What went wrong
I added this code around the code block. Easy fix, right?<tr>
<td>
<?php
echo get_name($item);
?>
<span style="font-size:14px">
<?php
echo get_desc($item);
?>
</span>
</td>
<td class="spacer"></td>
<td class="figure" valign="top">
<?php
echo get_qty($item);
?>
</td>
<td class="spacer"></td>
<td class="figure" valign="top">
<?php
echo get_price($item);
?>
</td>
<td class="spacer"></td>
<td class="figure" valign="top">
<?php
echo get_subtotal($item);
?>
</td>
</tr>
<td>
<?php
echo get_name($item);
?>
<span style="font-size:14px">
<?php
echo get_desc($item);
?>
</span>
</td>
<td class="spacer"></td>
<td class="figure" valign="top">
<?php
echo get_qty($item);
?>
</td>
<td class="spacer"></td>
<td class="figure" valign="top">
<?php
echo get_price($item);
?>
</td>
<td class="spacer"></td>
<td class="figure" valign="top">
<?php
echo get_subtotal($item);
?>
</td>
</tr>
Nope! The PDF font remained stubbornly small. So what now?!
Why it went wrong
After several hours of tearing my hair out, I noticed that the text was in italics, though there was nothing in the code that suggested that it would be italicized. With that in mind, I made changes to the code to see what was in the HTML.<?php
echo htmlspecialchars(get_desc($item));
?>
echo htmlspecialchars(get_desc($item));
?>
And viola! Apparently it didn't return just text! There was a span tag containing all that text. That was why the code I wrote had no effect!
How I fixed it
So now this was a problem for the attached CSS file. What I needed to do, was fix the CSS class info_box..info_box
{
font-size: 14px;
font-style: italic;
}
{
font-size: 14px;
font-style: italic;
}
And now the font was larger!
Moral of the story
There's usually more than meets the eye, especially when it comes to HTML. Developers who find themselves in situations where they can't just view the source, need to adopt other measures to have some visibility as to the HTML that they are trying to fix.Think out of the info_box!
T___T
T___T
No comments:
Post a Comment