Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何制作A4纸张大小的HTML页面?_Html_Css_Printing - Fatal编程技术网

如何制作A4纸张大小的HTML页面?

如何制作A4纸张大小的HTML页面?,html,css,printing,Html,Css,Printing,是否可以使HTML页面的行为类似于MS Word中A4大小的页面 基本上,我希望能够在浏览器中显示HTML页面,并以A4大小页面的尺寸概括内容 为了简单起见,我假设HTML页面只包含文本(没有图像等),例如没有标记 此外,当HTML页面打印出来时,它将显示为A4大小的纸张。从技术上讲,您可以这样做,但要让所有浏览器按照屏幕上显示的内容打印页面,需要做大量工作。此外,大多数浏览器在打印输出上强制输入URL、打印日期和页面编号,这并不总是需要的。这不能更改或禁用 相反,我建议根据屏幕上的内容创建一个

是否可以使HTML页面的行为类似于MS Word中A4大小的页面

基本上,我希望能够在浏览器中显示HTML页面,并以A4大小页面的尺寸概括内容

为了简单起见,我假设HTML页面只包含文本(没有图像等),例如没有

标记


此外,当HTML页面打印出来时,它将显示为A4大小的纸张。

从技术上讲,您可以这样做,但要让所有浏览器按照屏幕上显示的内容打印页面,需要做大量工作。此外,大多数浏览器在打印输出上强制输入URL、打印日期和页面编号,这并不总是需要的。这不能更改或禁用


相反,我建议根据屏幕上的内容创建一个PDF,并提供PDF供下载和/或打印。虽然是付费的,但也有一些可用于创建基本PDF。

强制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>

身体{
高度:842px;
宽度:595px;
/*在屏幕上居中显示页面*/
左边距:自动;
右边距:自动;
}

我使用HTML生成报告,这些报告在真实纸张上以真实大小正确打印

如果您在CSS文件中小心地使用mm作为单位,您应该可以,至少对于单个页面是这样。不过,人们可能会通过更改浏览器中的打印缩放来搞糟你


我似乎记得我做的每件事都是单页的,所以我不必担心分页——这可能会困难得多。

完全可以将布局设置为a4页的比例。您只需相应地设置宽度和高度(可能需要使用
window.innerHeight
window.innerWidth
进行检查,尽管我不确定这是否可靠)

棘手的部分是打印A4。例如,Javascript只支持使用
window.print
方法基本打印页面。 正如@Prutswonder建议的那样,从网页创建一个PDF可能是最复杂的方法(而不是首先提供PDF文档)。然而,这并不像人们想象的那么琐碎。这里有一个链接,它描述了从HTML创建PDF的全开源Java类:


显然,一旦你创建了一个A4比例打印的PDF文件,你的页面就会得到一个干净的A4打印。这是否值得投入时间是另一个问题。

PPI和DPI对文档在浏览器上的打印方式没有任何影响。打印机不记录屏幕点距或图像的DPI等信息。如果您打印图像,它们将以与屏幕上显示的大小相似的比例打印。浏览器的打印处理器会将图像的DPI从相当低的72 DPI增加到文档其余部分的任何DPI。假设图像显示为半页宽,则其物理宽度约为4英寸。图像的像素宽度约为300px,以便在浏览器中正确显示。当它以标称300DPI打印时,处理器已添加像素,图像将增长到1200px左右,300DPI时为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">
在您的
print.css
中:

table.tableclassname{
宽度:16厘米;
}

在查找类似问题时,我发现如下-

A4是一种文档格式,作为取决于图像分辨率的屏幕图像,例如A4文档大小调整为:

  • 72 dpi(网络)=595 X 842像素
  • 300 dpi(打印)=2480 X 3508像素 (据我所知,这是“A4”,即“300 dpi时210mm X 297mm”)
  • 600 dpi (打印)=4960 X 7016像素

为每页创建一节,并使用下面的代码调整页边距、高度和宽度

如果您打印的是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>

我知道这个话题已经很老了,但我想分享一下我在这个话题上的经验。实际上,我正在搜索一个模块,它可以帮助我完成每日报告。我正在用HTML+CSS(而不是Word、Latex、OO等)编写一些文档和报告。目标是将它们打印在A4纸上,与朋友分享。。。我决定用一个有趣的编码会话来实现一个简单的库,它可以处理“页面”、页码、摘要、页眉、页脚等等,而不是搜索。。。。最后,我在~~ 2h中完成了它,我知道这不是最好的工具,但对于我的目的来说,它几乎没问题。你
@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;
}
html,body{
    height:297mm;
    width:210mm;
}
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=windows-1252"/>
    <title>DIN A4 Page</title>
    <style type="text/css">
        @page { size: 21cm 29.7cm; margin: 2cm }
        p { line-height: 120%; text-align: justify; background: transparent }
    </style>
</head>
<body>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat. 
</p>
</body>
</html>