是否可以使HTML页面的行为类似于MS Word中的A4大小的页面?
本质上,我希望能够在浏览器中显示HTML页面,并在A4尺寸页面的尺寸中概述内容。
为了简单起见,我假设HTML页面仅包含文本(没有图像等),并且没有<br>
标签。
同样,当打印HTML页面时,它将以A4尺寸的纸页形式出现。
是否可以使HTML页面的行为类似于MS Word中的A4大小的页面?
本质上,我希望能够在浏览器中显示HTML页面,并在A4尺寸页面的尺寸中概述内容。
为了简单起见,我假设HTML页面仅包含文本(没有图像等),并且没有<br>
标签。
同样,当打印HTML页面时,它将以A4尺寸的纸页形式出现。
许多方法可以做到:
html,body{
height:297mm;
width:210mm;
}
html,body{
height:29.7cm;
width:21cm;
}
html,body{
height: 842px;
width: 595px;
}
自1998年以来,我已经在商业报告中使用680像素来打印在A4页面上。700像素可能无法正确地取决于边距的大小。现代的浏览器可以缩小页面以适合打印机上的页面,但是如果使用680像素,则几乎可以在所有浏览器中正确打印。
这就是您可以运行的 HTML 代码段,并查看结果:
window.print();
<table width=680 border=1 cellpadding=20 cellspacing=0>
<tr><th>#</th><th>name</th></tr>
<tr align=center><td>1</td><td>DONALD TRUMP</td></tr>
<tr align=center><td>2</td><td>BARACK OBAMA</td></tr>
</table>
JSFiddle:
我知道这个主题已经很老了,但是我想分享一下我对该主题的经验。实际上,我在搜索一个可以帮助我处理日常报告的模块。我正在用HTML + CSS(而不是Word,Latex,OO等)编写一些文档和报告。其目标是将它们打印在A4纸上,以便与朋友共享。...而不是进行搜索,我决定进行一个小型有趣的编码会议,以实现一个简单的lib,该lib可处理“页面”,页码,摘要,标题,页脚,....最后,我在~~ 2h内完成了此操作,我知道这不是有史以来最好的工具,但就我的目的而言几乎可以。您可以在我的仓库中查看该项目,并随时分享您的想法。也许不是您要100%搜索的内容,但是我认为该模块可以为您提供帮助。
基本上,我创建一个页面“宽度:200mm;” 和高度为290mm(小于A4)的容器。然后我使用page-break-after:always; 因此浏览器的“打印”选项知道何时拆分页面。
寻找类似的问题,我发现了这一点-http://www.indigorose.com/forums/archive/index.php/t-13334.html
A4是一种文档格式,因为屏幕图像将取决于图像分辨率,例如,A4文档的大小调整为:
从技术上讲,您可以,但是要使所有浏览器完全按照屏幕上的显示打印出页面,需要大量的工作。同样,大多数浏览器在打印输出上强制使用URL,打印日期和页码,但这并非总是需要的。这不能更改或禁用。
相反,我建议您根据屏幕上的内容创建一个PDF并将其提供给下载和/或打印。尽管大多数可用的PDF库都是付费的,但是有一些免费的替代方法可用于创建基本PDF。
PPI和DPI对从浏览器打印文档的方式绝对没有影响。打印机不接收有关屏幕点距或图像DPI的信息。如果要打印图像,则它们的打印尺寸将与它们在屏幕上的显示方式成比例。浏览器的打印处理器会将图像的DPI从相当低的72dpi提升到文档其余部分的DPI。假设图片显示为半个页面宽,然后物理上约为4英寸宽。该图像的像素宽度大约为300像素,才能在浏览器中正确显示。到以标称300DPI打印时,处理器已经添加了像素并且图片将增长到1200px左右,在300 DPI下为4“。
当涉及基于矢量或非像素元素(例如文本)时,打印机从驱动程序中选择与屏幕点距或浏览器宽度等无关的DPI。如果浏览器为3000px宽,则打印处理器将适当包装文本。
这使得创建打印显示变得很困难:每个浏览器和打印机都会以自己的方式解释文本大小(pt,em,px)和间距。根据您使用的打印机,浏览器甚至操作系统,您将在每页上获得不同数量的行和字符。因此,即使您使用浏览器和打印机在计算机上进行测试并弄清楚您可以在640x900px的框中显示文本,并且可以完美打印,下一个尝试打印的人也可能会以不同的方式进行打印。确实没有办法强迫每个打印机和浏览器每次都使它们相同。
忘了像素,而忘了DPI,您唯一可以使用像素的方法是设置一个表格宽度,该表格宽度模拟打印机上可打印区域的宽度。在那种情况下,我发现640px的宽度接近。
<link rel="stylesheet" href="/css/style.css" type="text/css">
<link rel="stylesheet" href="/css/print.css" type="text/css" media="print">
在您的正常情况下style.css
:
table.tableclassname {
width: 400px;
}
在您的print.css
:
table.tableclassname {
width: 16 cm;
}
我使用HTML生成报告,这些报告可以在实际纸张上以实际尺寸正确打印。
如果您小心地将mm用作CSS文件中的单位,则应该可以,至少对于单页而言。但是,人们可以通过在浏览器中更改打印缩放来搞砸您。
我似乎记得我所做的一切都是单页的,所以我不必担心分页-这可能要困难得多。
在每个页面上创建一个部分,并使用以下代码调整边距,高度和宽度。
如果要打印A4尺寸。
然后使用者
Size : 8.27in and 11.69 inches
@page Section1 {
size: 8.27in 11.69in;
margin: .5in .5in .5in .5in;
mso-header-margin: .5in;
mso-footer-margin: .5in;
mso-paper-source: 0;
}
div.Section1 {
page: Section1;
}
然后创建一个包含所有内容的div。
<div class="Section1">
type your content here...
</div>
要么
@media print {
.page-break {
height: 0;
page-break-before: always;
margin: 0;
border-top: none;
}
}
body, p, a,
span, td {
font-size: 9pt;
font-family: Arial, Helvetica, sans-serif;
}
body {
margin-left: 2em;
margin-right: 2em;
}
.page {
height: 947px;
padding-top: 5px;
page-break-after: always;
font-family: Arial, Helvetica, sans-serif;
position: relative;
border-bottom: 1px solid #000;
}
A4尺寸为210x297mm
因此,您可以设置HTML页面以使其适合CSS尺寸:
html,body{
height:297mm;
width:210mm;
}
我在Google搜索后看到了此解决方案,搜索了“ A4 CSS页面模板”(codepen.io)。使用<page>标签在浏览器中显示A4(A3,A5,也为纵向)大小的区域。在此标签内显示了内容,但相对于浏览器区域仍然是绝对位置。
body {
background: rgb(204,204,204);
}
page {
background: white;
display: block;
margin: 0 auto;
margin-bottom: 0.5cm;
box-shadow: 0 0 0.5cm rgba(0,0,0,0.5);
}
page[size="A4"] {
width: 21cm;
height: 29.7cm;
}
page[size="A4"][layout="portrait"] {
width: 29.7cm;
height: 21cm;
}
@media print {
body, page {
margin: 0;
box-shadow: 0;
}
}
<page size="A4">A4</page>
<page size="A4" layout="portrait">A4 portrait</page>
这对我来说是有效的,没有包含任何其他的CSS / JS库。适用于当前的浏览器(IE,FF,Chrome)。
强制Web浏览器以与A4相同的像素尺寸显示页面非常容易。但是,渲染事物时可能会有一些怪癖。
假设监视器显示72 dpi,则可以添加以下内容:
<!DOCTYPE html>
<html>
<head>
<style>
body {
height: 842px;
width: 595px;
/* to centre page on screen*/
margin-left: auto;
margin-right: auto;
}
</style>
</head>
<body>
</body>
</html>
完全有可能将布局设置为假设a4页面的比例。你只需要设置宽度和高度相应(可能与检查
window.innerHeight
和window.innerWidth
虽然我不知道这是可靠的)。棘手的部分是打印A4。例如,JavaScript仅使用该
window.print
方法仅支持基本打印页面 。正如@Prutswonder建议的那样,从网页创建PDF可能是最复杂的方法(除了首先提供PDF文档之外)。但是,这并不像人们想象的那么简单。这是一个链接,其中描述了用于从HTML创建PDF的所有开源Java类:http : //www.javaworld.com/javaworld/jw-04-2006/jw-0410-html.html。显然,一旦创建了具有A4比例打印的PDF,它将为您的页面提供清晰的A4打印。这是否值得花时间进行投资是另一个问题。