您的位置:

优化网站内容以供打印的完整指南

网站是适应不同设备展示内容的,但我们经常会遇到需要将网站内容打印出来的情况。这时候,如果网站结构和样式不正确,最终打印出的内容将非常糟糕。本文将针对优化网站内容以供打印做一个完整的指南。

一、减少不必要内容

打印页面时,我们应该只打印必要的内容。一些元素,例如菜单、地图等没有必要打印出来,他们只会消耗纸张和墨水。我们可以使用CSS的“print”属性选择器和媒体查询来隐藏这些元素,只保留必要的内容打印。

@media print {
  .no-print {
    display:none;
  }
}

上述代码将不含有“no-print”类名的元素在打印时隐藏。

二、分页

在打印结构化的内容,例如文章或表格时,我们需要避免内容跨页打印。(通常情况下,浏览器在打印时会自动分页。)我们可以使用CSS的“page-break-before”和“page-break-inside”属性来强制分页。

@media print {
  .page-break {
    page-break-before: always;
  }
  .avoid-page-break {
    page-break-inside: avoid;
  }
}

上述代码将含有“page-break”类名的元素强制分页,并将含有“avoid-page-break”类名的元素设置为不允许在内部分页。

三、优化排版

为了使打印的页面更加易于阅读,我们需要调整排版和CSS样式。例如,在打印时可以设置行高和字体大小等。使用CSS自定义打印样式。

@media print {
  body {
    font-size: 14px;
    line-height: 1.5;
  }
  h1, h2, h3 {
    page-break-after: avoid;
  }
}

上述代码将打印时的字体大小设置为14px,行高设置为1.5倍。同样,在标题前不允许分页。

四、添加打印样式表

为了更好的控制打印输出,我们可以单独为打印样式定义CSS文件。通过在文档头部添加“media="print"”,浏览器只会在打印时加载该样式。

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

上述代码将文档头部的CSS文件链接到打印样式表以控制打印输出效果。

五、使用富文本编辑器

使用富文本编辑器,我们可以更容易地创建适合打印的格式,样式和结构。例如,使用富文本编辑器创建的文本,可以使用CSS样式表在打印时自动添加页眉和页脚、调整段落和行距,甚至自动插入二维码等。所有这些都可以通过富文本编辑器来实现。

综上所述,我们可以通过优化内容结构、样式和排版,使网站内容更适合打印。在完成了这些优化后,我们可以预览打印效果,进一步优化和完善页面的打印效果。

优化网站内容以供打印的完整指南

2023-05-12
印象笔记记录java学习(Java成长笔记)

2022-11-12
CSS Print参考:优化Web页面以进行打印

2023-05-12
jsp程序开发学习笔记2,jsp程序设计题库

本文目录一览: 1、《JSP&Servlet学习笔记》pdf下载在线阅读,求百度网盘云资源 2、林信良编著jsp&servlet学习笔记第2版课后答案吗 3、jsp有没有快速掌握的办法呀? 4、要学J

2023-12-08
如何优化网页内容以提高搜索引擎流量

2023-05-12
达内web前端js笔记(达内jsd)

本文目录一览: 1、web前端里的js技术 2、《web前端笔记7》js字符—获取、查找、遍历、提取、替换方法总结 3、达内web前端开发讲的什么内容 4、2020年自学Web前端要掌握的知识点有哪些

2023-12-08
网站极限优化之php优化(php优化网站性能)

2022-11-15
如何优化打印页面的CSS样式

2023-05-12
如何优化CSS样式以提高网站可访问性

2023-05-12
Python开发网站的完整指南

一、Web框架 Python开发网站的第一步是选择一个Web框架。Python提供了许多Web框架,包括Django、Flask和Pyramid等。其中,Django是最受欢迎的Web框架,提供了一个

2023-12-08
Python开发网站的完整指南

一、Web框架 Python开发网站的第一步是选择一个Web框架。Python提供了许多Web框架,包括Django、Flask和Pyramid等。其中,Django是最受欢迎的Web框架,提供了一个

2023-12-08
CSS媒体查询优化网站视觉体验

2023-05-12
如何优化打印页面的样式

2023-05-12
CSS打印媒体的示例

2023-05-12
通过CSS分页优化页面内容呈现

2023-05-12
优化你的网站的排名和可见度的CSS技巧

2023-05-12
when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${item.id} [in template "article/detail/index.ftl" at line 48, column 106] ---- Java stack trace (for programmers): ---- freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...] at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134) at freemarker.core.EvalUtil.coerceModelToTextualCommon(EvalUtil.java:481) at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:401) at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:370) at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:104) at freemarker.core.DollarVariable.accept(DollarVariable.java:63) at freemarker.core.Environment.visit(Environment.java:371) at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:321) at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271) at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244) at freemarker.core.Environment.visitIteratorBlock(Environment.java:645) at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108) at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94) at freemarker.core.Environment.visit(Environment.java:335) at freemarker.core.Environment.visit(Environment.java:341) at freemarker.core.Environment.visit(Environment.java:341) at freemarker.core.Environment.process(Environment.java:314) at freemarker.template.Template.process(Template.java:383) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:332) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:266) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:220) at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:181) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1431) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1167) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1106) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at com.software.filter.HttpSpiderIdentifyFilter.doFilter(HttpSpiderIdentifyFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at java.base/java.lang.VirtualThread.run(VirtualThread.java:309)