首页 > 其他分享 >JS之打印导出PDF

JS之打印导出PDF

时间:2024-05-20 16:42:55浏览次数:31  
标签:prnhtml 打印 导出 innerHTML JS window router PDF 页面

我们可以直接调用浏览器的打印功能来实现。

1.直接打印

直接调用浏览器的打印功能,打印整个页面

function preview () {
     window.print();
}

2.打印指定区域

通过开始标记、结束标记来打印,打印局部页面

<!--startprint-->
    <div>
        打印的内容
    </div>
 <!--endprint-->

打印函数

const preview = () => {
  let bdhtml = window.document.body.innerHTML;
  let sprnstr = "<!--startprint-->"; //开始打印标识字符串有17个字符
  let eprnstr = "<!--endprint-->"; //结束打印标识字符串
  let prnhtml = bdhtml.substr(bdhtml.indexOf(sprnstr) + 17); //从开始打印标识之后的内容
  prnhtml = prnhtml.substring(0, prnhtml.indexOf(eprnstr)); //截取开始标识和结束标识之间的内容
  window.document.body.innerHTML = prnhtml; //把需要打印的指定内容赋给body.innerHTML
  window.print(); //调用浏览器的打印功能打印指定区域
  window.document.body.innerHTML = bdhtml; //重新给页面内容赋值;
  return false;
};

3.去掉打印时的页眉和页脚

@page {
  size: auto; /* auto是初始值 */
  margin: 0mm; /* 这会影响打印机设置中的边距 */
}

4.由于设置区域进行打印会导致原来的Vue相关功能(包括Vue的点击事件)失效,无法使用router.back返回上一级页面和进行再次打印。

<van-sticky>
    <van-nav-bar
        title="打印流程"
        left-text="返回"
        left-arrow
        right-text="打印"
        @click-left="onClickLeft"
        @click-right="onClickRight"
    >
    </van-nav-bar>
</van-sticky>

我采用以下方式返回上一级页面和进行再次打印。

首先,点击打印按钮打印后重新加载页面,从而可以再次打印。

const onClickRight = () => {
  preview();
  location.reload();
};

其次,使用router.replace跳转回上一页面。

const onClickLeft = () => {
  router.replace("myDoneDetail");
};

最后,上一页面使用router.replace进行跳转。

router.replace({
  path: "PrintProcess",
})

即可。

 

标签:prnhtml,打印,导出,innerHTML,JS,window,router,PDF,页面
From: https://www.cnblogs.com/luoyihao/p/18202299

相关文章

  • 如何将pdf转成cad?试试这三个方法
    掌握将pdf转cad的方法可以帮助我们修改CAD中的内容。你知道pdf如何转cad吗?接下来分享三种常用的CAD转换方法,看完你就知道如何实现pdf转cad。方法一、使用AutoCAD软件自带的PDF导入工具AutoCAD是一款专业的CAD设计软件,可以将PDF文件转换为DWG或DXF格式。如果你已经安装了AutoCAD......
  • Ement-Plus框架的列表table导出excel数据表
    1.页面预览2.搜索条件区域code <!--查询--><divclass="table-container"><el-form:inline="true":model="queryForm"class="query-form"ref="queryFormRef"><el-form-itemlabe......
  • pdf 转 png
     参考:https://blog.csdn.net/lai124793549/article/details/53392281      https://www.cnblogs.com/xiewei123/p/10902578.html百度云链接:https://pan.baidu.com/s/1oiMEZl9xJWVAzf_JZaw3Ww 提取码:8dna 方法1:添加引用 O2S.Components.PDFRender4NET ......
  • Springboot Data Jdbc实体类json格式存储
    日常需求中有些需求需要在某字段存储json格式数据,例如日志审计接口传参数据等1.首先我们得保证数据库字段为text或者json2.设置读转换和写转换器importcom.fasterxml.jackson.databind.ObjectMapper;importorg.springframework.core.convert.converter.Converter;importo......
  • 如何免费将PDF转成HTML网页?
    HTML是网页的标准格式,具有良好的可读性和可访问性以及更强的可编辑性。与PDF相比,HTML文档更容易进行修改和更新。将PDF转换为HTML后,文档内容可以在各种浏览器和设备上自由查看,为用户提供更便捷的访问体验。另外将PDF转成HTML网页后也有助于提升信息的传播和分享效率,由于HTML文档......
  • 无法加载文件 C:\Program Files\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。有关
    无法加载文件C:\ProgramFiles\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅https:/go.micros  原因:现用执行策略是Restricted(默认设置)解决方法:1、使用管理员的身份打开powershell, win+x2、输入set-executionpolicyremotesigned后按y,问题得......
  • Java常用的JSON序列化与反序列化工具实践
    JSON简介:JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,通常用于在不同系统之间传输数据。它基于JavaScript对象语法,但已成为一种独立于语言的格式。JSON数据以键值对的形式组织,易于阅读和编写。为什么要使用JSON?1.简单易用:JSON的语法简单,易于理解和编写,可以......
  • 基于vis.js实现网络拓扑图等关系图谱
    vis.js是一个动态的、基于浏览器的可视化库。该库被设计为易于使用,可以处理大量动态数据,并支持对数据的操作和与数据的交互。该库由组件DataSet,Timeline,Network,Graph2d和Graph3d组成。现在使用vis.js实现一个简单的网络类似网络拓扑的关系图谱,效果如下图所示:实现的示例代......
  • Next.js + Mongodb CURD
    环境Next.js14React18Mongodb前言花了两周时间学习了Next.js,自己做了个demo,尝试了下服务器端渲染,客户端渲染,给人的感觉就是又像回到了asp.netMVC时代,需要在页面初次加载时显示的数据可以使用ViewModel来解决,需要在页面上有交互、异步刷新的业务可以使用ajax来解决。......
  • clickhouse表结构导出为
     查看代码#!/bin/bashOUTDIR=/opt/backup/#获取所有数据库并保存到文件中clickhouse-client--userdefault--password123456-q"SHOWDATABASES">/opt/backup/db.txt#读取数据库文件whileread-rdb;do#排除system和INFORMATION_SCHEMA数据库de......