7

我正在从 HTML 生成一个文档。有什么方法可以强制将 HTML 页面呈现为一个打印页面吗?

<table>我已经用和<div>标签完成了大部分页面。

4

7 回答 7

9

不完全是,但您可以使用打印样式表:

<link rel="stylesheet" type="text/css" media="print" href="print.css" />

将字体大小、填充等设置为诸如“pt”之类的物理单位(绝不应该在屏幕样式表中使用!),以便在典型浏览器中呈现时,它最终或多或少是一个 A4 页面,具有典型的字体,带有跟随风。没有任何保证,但您可以针对常见情况进行优化。

在打印中您不必太担心字体大小偏好或 dpi 设置,但您仍然无法控制浏览器使用的边距或实际页面大小(US Letter 小于 A4),因此请留出大量回旋余地并在主要浏览器上进行测试。

于 2009-01-21T14:11:21.990 回答
7

不可以。您无法控制用户的缩放级别、打印机设置、纸张大小(他在欧洲使用 A4 纸还是在美国合法?)以及影响使用 HTML 的打印机输出的所有其他各种因素。

使用 HTML 可以做的最好的事情是制作一个非常简单的“打印机友好”页面并保持内容简短。或者,您可以构建 PDF,该 PDF 旨在让您控制其打印方式。

于 2009-01-21T14:01:41.823 回答
2

您可以使用 CSS 设置页面样式并将其设置为特定的高度/宽度......这里有一个很好的教程

于 2009-01-21T14:01:39.717 回答
2

使用 PDF。您可以强制执行许多事情,例如字体大小、字体类型和许多其他参数,但任何浏览器都可以决定他们不在乎并使用他们想要的任何东西,因此违反了您的先决条件或决定。HTML 不是(在我之后重复:不是)一种表示语言。

在许多情况下,它大部分都会起作用,但没有什么是确定的。

于 2009-01-21T14:06:01.110 回答
2

不可以,但是您可以通过使用打印媒体的专用 CSS 文件来使打印视图更加流畅,就像上面建议的那样。

然后,您至少可以通过使用“page-break-before:always;”来防止表格跨越 2 页 。.

最后你也可以使用 “display:none;” 在广告、导航栏等不必要的元素上,以保持页面本身更短(希望对于单个页面来说足够短)。

不过,没有保证。

于 2009-01-21T14:18:18.013 回答
1

当然。你有几种可能性:

  • 将您的页面转换为大图像。
  • 将您的页面转换为 PDF。
  • 用一个左右滚动的固定尺寸页面惹恼所有用户,因为它太宽并且很难传输信息。
于 2009-01-21T14:01:52.023 回答
0

不,没有办法,因为在呈现 HTML 时您不可能知道打印机类型或纸张尺寸。

我唯一的建议是设置打印机属性以在打印时缩放内容以适合一页。

于 2009-01-21T14:03:04.033 回答