如何批量处理 HTML 文件以准备打印?

z40*_*403 1 html batch

我有一个包含一千个 HTML 文件的集合,需要清理以进行打印。我需要删除<body></body>该区域内的所有标签,除了一个,<div.pg>。多余的是导航链接,它使打印件变得凌乱并耗尽纸张。标签的内容不一样,所以我无法找到和替换代码摘录,但标签是相同的,因为<table>要删除三个标签,每个标签都有特定的类。是否有任何批处理技术或软件来完成这项工作?我正在使用 Windows

Red*_*ick 9

一千个 HTML 文件……使它们干净,便于打印。

打印时抑制部分的简单解决方案是使用 CSS 样式表

将这样的head内容添加到元素中

<link rel="stylesheet" 
   type="text/css"
   media="print" href="print.css" />
Run Code Online (Sandbox Code Playgroud)

请注意media="print"- 此样式表仅适用于打印时,而不适用于查看时。

如果您的 HTML 都以类似的方式格式化,您可以使用简单的模式匹配编辑在单个命令中为数千个 html 文件执行此操作

perl -i -ne "print; print '<link … />' if /<head>/" dir1/*.html dir2/*.html
Run Code Online (Sandbox Code Playgroud)

在print.css 中,为您不想打印的元素(例如整个div)设置display:none。例如

#menu { display: none; }
Run Code Online (Sandbox Code Playgroud)

参见A List Apart 文章


更新:如果你的一千个 html 文件已经在使用一个通用的 CSS 样式表文件,那么解决方案就更简单了,不需要在 html 文件中更改或添加任何内容,只需在现有样式表中添加一个部分来处理打印。例如:

@media screen
  {
  #menu {font-family:verdana,sans-serif;font-size:14px;}
  }
@media print
  {
  #menu {display:none;}
  }
Run Code Online (Sandbox Code Playgroud)

  • +1 用于解决真正的问题,而不是给他们他们认为的解决方案! (3认同)