打印时隐藏HTML媒体

打印时隐藏HTML媒体,html,css,printing-web-page,Html,Css,Printing Web Page,我目前正在使用HTML编写一个可打印的文档,该文档将显示从数据库中提取的数据。我的想法是,我将使用HTML/CSS使文档看起来漂亮,但它将专门用于打印 文档的布局使用表来控制数据库中数据的显示方式 其中一个关键要求是,文件必须仅覆盖A4的两个面。但是,我们从数据库获得的数据有些不可预测,因为字段大小非常大,所以我们不能保证数据库中的一行等于文档中的一行 因此,我们希望使用一种解决方案,其中表的大小由HTML控制,并且应该隐藏数据库中导致表大于定义值的任何输出 我已经定义了以下CSS样式 tabl

我目前正在使用HTML编写一个可打印的文档,该文档将显示从数据库中提取的数据。我的想法是,我将使用HTML/CSS使文档看起来漂亮,但它将专门用于打印

文档的布局使用表来控制数据库中数据的显示方式

其中一个关键要求是,文件必须仅覆盖A4的两个面。但是,我们从数据库获得的数据有些不可预测,因为字段大小非常大,所以我们不能保证数据库中的一行等于文档中的一行

因此,我们希望使用一种解决方案,其中表的大小由HTML控制,并且应该隐藏数据库中导致表大于定义值的任何输出

我已经定义了以下CSS样式

table.noQual
{
page-break-inside: avoid;
width: 100%;
border: 0px;
font-family:"Verdana","sans-serif";color:black;
overflow-y:hidden;
display:block;
max-height:50px !important;
}
这在屏幕上非常有效,但是当我打印时,所有的数据库内容都会显示出来,所以表会变得大于50px,并覆盖整个页面


如何将内容隐藏在打印机和屏幕上?

如果不知道实际数据是什么,或者数据的格式是什么,很难提供解决方案。您可能需要加入一些javascript来截断设置字符数后的文本。(有人告诉我,有些[非标准]CSS也可以做到这一点。)

否则,我认为你的问题是因为你在桌子上使用了像素高度。您可能希望使用
cm
或类似的单位来转换为“真实世界”的度量。您可能需要考虑的一些关于打印介质样式的信息。
您可能还需要考虑使用创建专门用于打印的自定义CSS。

如果不知道实际数据是什么,或者数据的格式是什么,就很难提供解决方案。您可能需要加入一些javascript来截断设置字符数后的文本。(有人告诉我,有些[非标准]CSS也可以做到这一点。)

否则,我认为你的问题是因为你在桌子上使用了像素高度。您可能希望使用
cm
或类似的单位来转换为“真实世界”的度量。您可能需要考虑的一些关于打印介质样式的信息。
您可能还想研究使用创建专门用于打印的自定义CSS。

您是否在现有样式表中指定了打印样式表或打印
@media
部分

默认情况下,样式表可以在屏幕上正常工作(正如您所发现的);但是,除非您明确指定打印CSS样式表,否则在打印页面时,它将默认为浏览器默认样式(通常为15pt乘以新罗马等)

解决方案1:添加第二个打印样式表
在HTML头中包含以下两个标记:

然后将所需的格式样式从
screenstyles.css
复制到
printstyles.css
(或者将这两个
链接到屏幕样式表)

解决方案2:只有1个样式表,但其中包含打印
@media

您的单个CSS样式表如下所示(从CSS链接rel标记中省略
media=”“

/*Normal css*/
table.noQual {
    page-break-inside: avoid;
    width: 100%;
    border: 0px;
    font-family: "Verdana","sans-serif";
    color:black;
    overflow-y: hidden;
    display: block;
    max-height:50px !important;
}
@media print {
    /*Everything inside here will be used to style the printed product*/
    table.noQual {
        page-break-inside: avoid;
        width: 100%;
        border: 0px;
        font-family: "Verdana","sans-serif";
        color:black;
        overflow-y: hidden;
        display: block;
        max-height: 50px !important;
    }
}

您是否在现有样式表中指定了打印样式表或打印
@media
部分

默认情况下,样式表可以在屏幕上正常工作(正如您所发现的);但是,除非您明确指定打印CSS样式表,否则在打印页面时,它将默认为浏览器默认样式(通常为15磅乘以新罗马等)

解决方案1:添加第二个打印样式表
在HTML头中包含以下两个标记:

然后将所需的格式样式从
screenstyles.css
复制到
printstyles.css
(或者将这两个
链接到屏幕样式表)

解决方案2:只有1个样式表,但其中包含打印
@media

您的单个CSS样式表如下所示(从CSS链接rel标记中省略
media=”“

/*Normal css*/
table.noQual {
    page-break-inside: avoid;
    width: 100%;
    border: 0px;
    font-family: "Verdana","sans-serif";
    color:black;
    overflow-y: hidden;
    display: block;
    max-height:50px !important;
}
@media print {
    /*Everything inside here will be used to style the printed product*/
    table.noQual {
        page-break-inside: avoid;
        width: 100%;
        border: 0px;
        font-family: "Verdana","sans-serif";
        color:black;
        overflow-y: hidden;
        display: block;
        max-height: 50px !important;
    }
}

不幸的是,由于数据库应用程序生成HTML的方式,我无法使用Javascript,但实际上这正是我想要做的,在达到一定数量的字符后截断文本。抱歉,按下得太早。实际数据只是文本字符(nvarchar字段),没什么特别的。不过,谢谢你的网站,我会好好看看iTunes。由于数据库应用程序生成HTML的方式,我不能使用Javascript,但实际上这就是我想要做的,在达到一定数量的字符后截断文本。抱歉,按下得太快。实际数据只是文本字符(nvarchar字段),没什么特别的。不过谢谢你的网站,我会好好看看的