如果我有一个打印CSS样式元素:
border:1px solid black;
或:
border:0.25pt solid black;
打印时线条很厚 - 至少1pt。如果我尝试使用更小的值,例如0.05pt,则该行根本不会出现。我怎么能得到一条细线?在像InDesign这样的程序中,你将“发丝”的厚度设置为0.25pt,即非常细的线条,但不能太薄以至于无法打印。
注意:这个问题似乎问了同样的问题,但是没有人解决线路厚度的实际问题,只是使用的最佳测量单位: pt or px for specifying border-width for print
答案 0 :(得分:11)
感谢您的帮助。在这方面,浏览器似乎毫无用处。
我做了一些测试,结论似乎是:
我测试了以下网页的变体,每次调整边框点大小。我打印出'fit to page'关闭。
<html>
<body style="width:17cm; background-color:rgb(245,245,245);">
<div style="border:0.3pt solid black; width:100%; height:20cm">IE 0.3pt</div>
</body>
</html>
这些是最小可打印点大小的结果,以及与InDesign中的行打印输出相比的结果。我也包括了一些其他注释:
FF:0.25pt,看起来像1.25pt。 DIV宽度看起来像是17厘米,但由于FF的大量打印边缘,右侧边框被切断。似乎16.5cm是最大的可用宽度。 BODY高度符合页面的高度。
Safari 5:0.75pt,看起来像1pt。 DIV宽度为18.2厘米,BODY宽度为19.5厘米 - 即使没有迹象表明它会这样做,Safari似乎也适合页面。在DIV高度后不久,BODY高度结束。
歌剧11:0.4pt,看起来像0.75pt。 DIV宽度为16.2厘米,BODY背景仅出现在div中 - 尽管文本行显示在白色背景上IE7:0.4pt,看起来像0.5pt(和0.5pt一样)。与FF一样,DIV宽度看起来像是17厘米,但由于IE的大量打印边缘,右侧边框被切断。
IE9:0.1有效(可能更低),但仍然看起来像0.5pt。否则与IE7相同。
答案 1 :(得分:5)
如今,在2015年,使用HTML5和CSS3制作细线有一些解决方法,例如:用于打印或在高分辨率屏幕上:
stroke-width: .5
)扩展方法在this article中有详细介绍。归结为:
hr.thin {
height: 1px;
border-top: none;
border-bottom: 1px solid black;
transform: scaleY(0.33);
}
线性渐变方法适用于这些行(双关语,in detail here):
hr.hairline {
height: 1px;
background: linear-gradient(
transparent 0%,
transparent 50%,
black 50%,
black 100%);
}
为简化起见,我使用1px <hr>
元素作为示例。但是通过分别缩放元素中的所有样式或分别使用多个背景,两个解决方案都可以扩展为在元素的所有四个边上作为边框。
答案 2 :(得分:4)
我发现使用dotted
而不是solid
的厚度在某些打印场景中有所帮助,并且渲染为比点更细的(头发)线。
答案 3 :(得分:3)
问题可能在于浏览器重新缩放页面(至少IE用于在打印时执行此操作),但正如我现在在Opera中测试它(没有重新缩放),线仍然不像发际线那么薄。但是,我总是使用它来实现薄边框效果:
p {
border: 0.4pt solid #CCC;
}
这将创建非常浅灰色的边框。正如Barry Kaye提出的那样,你也可以让它dotted
看起来更瘦。
答案 4 :(得分:1)
我建议首先使用将HTML文档转换为PDF的工具。然后,您可以打印PDF并获得一致的结果。 Wkhtmltopdf对此非常有用,因为它基于最符合标准的Web渲染引擎。
使用wkhtmltopdf时,您可以将缩放设置为大于1的值以获得更细的线条。
将线宽设置为0.25pt
,并使用以下命令。
wkhtmltopdf -T 0 -B 0 -L 0 -R 0 -s A4 --zoom 10 <URL> <output filename>
现在你的线条很细。当您指定更高的缩放值时,渲染更精确,因此看起来略有不同。
要获得最佳效果,请使用以下单位:mm,cm和pt而不是px。
答案 5 :(得分:1)
我发现 B.Martin 的答案最有用。以下是我可以添加的内容:
<强>理论强>
在物理上,头发的宽度(毛发宽度)在17到181微米之间。 即0.02至0.2毫米或0.05至0.5微米。
因此,使线条窄于0.1pt并没有多大意义,因为眼睛可能看不到它们。
CorelDraw的发际线为0.23pt或81微米。
<强>实践强>
事实上,wkhtmltopdf
工具可以方便地创建细线。我设法实现了以下宽度:
我没有测量线条的实际宽度,但它看起来与我的CorelDraw的“发际线”几乎相同。
NB将宽度从0.1pt更改为0.15pt(缩放= 8)或从0.2pt更改为0.3pt(缩放= 4)不会改变生成的线宽,至少在视觉上是这样。
所以,我带来的是:
wkhtmltopdf -s A0 --zoom 4 <input filename> <output filename>
提供了一个漂亮的A0大小的页面,可以在打印时自动缩放到A4 - 此阶段也不会丢失毛发线。
<强>更新强>
我终于设法使用Acrobat插件来测量它:-s A0 --zoom 4
在a0上变为0.6pt后的原始0.3pt线(缩小后为0.15pt),这对我来说已经足够了。