Html2pdf 单元格中的图像与其他单元格重叠
Html2pdf Image in cell overlaps other cells
我正在使用 Html2pdf 并遇到奇怪的问题:
如您所见,我的图像在 table 内并且在其下方重叠 tr
Html结构:
<table>
<tbody>
<tr>
<td rowspan="2" class="page-title">
Running style - head and arms isolated
</td>
<td>
EARLY: Physical - Fast
</td>
</tr>
<tr>
<td></td>
</tr>
<tr class="images single">
<td colspan="2">
<img src="http://example.com" alt="">
</td>
</tr>
<tr>
<td colspan="2" class="block-header">
Outcomes
</td>
</tr>
<tr>
<td colspan="2">
Know how to keep head still and employ efficient, correct arm drive
</td>
</tr>
/* ... */
</tbody>
</table>
CSS:
<style>
table {
width: 100%;
}
td {
width: 50%;
}
tr img {
width: 70%;
}
</style>
打印为 HTML 会产生正确的结果。
知道有什么问题吗?
明确设置图像的高度:
...
<td colspan="2">
<img style="height:350px" src="http://example.com" alt="">
</td>
...
不太确定,但如果指定图像高度,您也许可以使用 js 获取 img 高度 img.naturalheight();
function getImgSize(imgSrc) {
var newImg = new Image();
newImg.onload = function() {
var height = newImg.height;
alert ('The image size is '+height);}
newImg.src = imgSrc; // this must be done AFTER setting onload }
也许可以尝试在图像后面的新行中添加具有特定高度的空白 div。以便图像底部和文本开始位置的顶部之间有足够的 space。
<div style="height:200px;Width:100px;"> </div>
所以它看起来像这样
<tr class="images single">
<td colspan="2">
<img src="http://example.com" alt="">
</td>
</tr>
<tr>
<td>
<div style="height:200px;Width:100px;"> </div>
</td>
</tr>
<tr>
<td colspan="2" class="block-header">
Outcomes
</td>
</tr>
您可能需要尝试 div 样式的高度错误。宽度没那么重要。
同时检查您是否在 "images single" class 样式中设置了高度或宽度或位置(即:Position:Absolute;),这可能是导致叠加的原因。
如果这不起作用,那么可以尝试将 Div 放在与文本相同的单元格中,但就在文本开始之前。
<tr>
<td colspan="2" class="block-header">
<div style="height:200px;Width:100px;"> </div>
Outcomes
</td>
</tr>
一些导致错误的事实:
td
只有 50%
宽度
- 在浏览器视图中
colspan="2"
将导致 100%
单元格宽度。
现在要解决这个问题,我所要做的就是设置 tr.single td {width: 100%}
。
添加该行修复了 HTML2PDF 中的图像重叠问题。
我正在使用 Html2pdf 并遇到奇怪的问题:
如您所见,我的图像在 table 内并且在其下方重叠 tr
Html结构:
<table>
<tbody>
<tr>
<td rowspan="2" class="page-title">
Running style - head and arms isolated
</td>
<td>
EARLY: Physical - Fast
</td>
</tr>
<tr>
<td></td>
</tr>
<tr class="images single">
<td colspan="2">
<img src="http://example.com" alt="">
</td>
</tr>
<tr>
<td colspan="2" class="block-header">
Outcomes
</td>
</tr>
<tr>
<td colspan="2">
Know how to keep head still and employ efficient, correct arm drive
</td>
</tr>
/* ... */
</tbody>
</table>
CSS:
<style>
table {
width: 100%;
}
td {
width: 50%;
}
tr img {
width: 70%;
}
</style>
打印为 HTML 会产生正确的结果。
知道有什么问题吗?
明确设置图像的高度:
...
<td colspan="2">
<img style="height:350px" src="http://example.com" alt="">
</td>
...
不太确定,但如果指定图像高度,您也许可以使用 js 获取 img 高度 img.naturalheight();
function getImgSize(imgSrc) {
var newImg = new Image();
newImg.onload = function() {
var height = newImg.height;
alert ('The image size is '+height);}
newImg.src = imgSrc; // this must be done AFTER setting onload }
也许可以尝试在图像后面的新行中添加具有特定高度的空白 div。以便图像底部和文本开始位置的顶部之间有足够的 space。
<div style="height:200px;Width:100px;"> </div>
所以它看起来像这样
<tr class="images single">
<td colspan="2">
<img src="http://example.com" alt="">
</td>
</tr>
<tr>
<td>
<div style="height:200px;Width:100px;"> </div>
</td>
</tr>
<tr>
<td colspan="2" class="block-header">
Outcomes
</td>
</tr>
您可能需要尝试 div 样式的高度错误。宽度没那么重要。
同时检查您是否在 "images single" class 样式中设置了高度或宽度或位置(即:Position:Absolute;),这可能是导致叠加的原因。
如果这不起作用,那么可以尝试将 Div 放在与文本相同的单元格中,但就在文本开始之前。
<tr>
<td colspan="2" class="block-header">
<div style="height:200px;Width:100px;"> </div>
Outcomes
</td>
</tr>
一些导致错误的事实:
td
只有50%
宽度- 在浏览器视图中
colspan="2"
将导致100%
单元格宽度。
现在要解决这个问题,我所要做的就是设置 tr.single td {width: 100%}
。
添加该行修复了 HTML2PDF 中的图像重叠问题。