首页 > 解决方案 > 打印位于图像中的文本

问题描述

我将文本定位在图像的中心,逻辑是打印证书,并且该文本是动态生成的,这是正确的。问题出在打印时,文本在第 2 页,图像在第 1 页

HTML:

<div id="DivImpressao">
    <section id="AtestadoTecnico">                          
        <img id="imgAtestado" src="~/Images/Site/AtestadoTecnico.png" runat="server" class="imgAtestadoTecnico" height="685" />                           
        <div class="txtAtestadoTecnico">
            <div style="text-align: justify; font-family: Ebrima; font-size: 10pt; margin-top: 20px">
                //texto aqui
            </div>
        </div>
    </section>
</div>

CSS:

#AtestadoTecnico {
    width: 1014px;
    height: 670px;
    position: relative;
}

.imgAtestadoTecnico {
    top: 0px;
    bottom: 20px;
    position: absolute;
}

.txtAtestadoTecnico {
    top: 100px;
    left: 120px;
    position: absolute;
}

JavaScript (aqui eu passo a "DivImpressao" como parâmetro para impressão:

function imprimePanel(elementId) {
    var printContent = document.getElementById(elementId);
    var windowUrl = 'about:blank';
    var uniqueName = new Date();
    var windowName = 'Print' + uniqueName.getTime();
    var printWindow = window.open(windowUrl, windowName, 'left=50000,top=50000,width=0,height=0');
    printWindow.document.write(printContent.innerHTML);
    printWindow.document.close();
    printWindow.focus();
    printWindow.print();
    printWindow.close();
}

标签: javascripthtmlcss

解决方案


取自 W3C规范

提醒作者,浮点数、div 和绝对定位的盒子在它们自身、彼此和表格单元格中的嵌套应谨慎使用,因为这些构造的嵌套深度取决于打印机和实现。

这基本上说您不应该使用absolute定位进行打印,因为每个浏览器和打印机都可能(并且将会)以不同的方式执行它(阅读,而不是您期望/想要的方式)。

您最好的选择是创建一个不使用absolute定位的简单文档(您可以将其用于打印目的),或者使用一些第三方应用程序从该文档中创建 PDF。


推荐阅读