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