获取PDF流;打印报告

这篇具有很好参考价值的文章主要介绍了获取PDF流;打印报告。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

思路:触发打印报告事件时,第一步需要先获取PDF流;第二部需要走打印接口。

(1)获取PDF流,拿到流先判断下;

(2)成功获取到正确的pdf流后,再走打印接口,流作为打印接口的参数

        因为我们会在打印成功后再做一些其他的业务操作,所以这里将打印功能封装为一个函数并且返回promise。

import { nodePrintFile, printPDFCustom } from "xxx.js";  
 
//触发打印报告函数
    async printSingleReport({ row }) {
      //获取pdf流
      let arrayBuffer = await docReportGainReportPdf({
        registrationFormSoid: row.registerInfoDto.registrationFormSoid,
        requestSoid: row.requestInfoDto.requestSoid,
        operatorSoid: row.examInfoDto.operatorSoid,
      });
       
      //这里的arrayBuffer流要使用Blob转换
      let bob = new Blob([arrayBuffer]);
      // 文件大小太小说明没有获取的pdf流
      if (bob.size < 20) {
        this.$message({
          message: `报告未出!`,
          type: "warning",
        });
      } else {
        this.node2Print(bob).then((res) => {
          if (res.code === 200) {
            this.$message.success("打印成功");
          }
        });
      }
    }

     // 封装好的node打印函数,内部返回promise,(其中printPDFCustom是node打印接口)
    node2Print(blob) {
      return new Promise((resolve, reject) => {
        const formData = new FormData();
        formData.append("file", blob);
        formData.append("fileType", "pdf");
        formData.append(
          "printName",
          this.$parent.printReportDevice.printDeviceName
        );
        formData.append("type", "server");
        printPDFCustom(formData).then(
          (res) => {
            resolve(res);
          },
          (error) => {
            reject(error);
          }
        );
      });
    },



XXX.js
// node上传PDF文件流打印文件
export function printPDFCustom(data) {
  return request({
    baseURL: "http://localhost:3080/printPDFCustom",
    data,
    method: "post"
  });
}

如果此时有另一个需求:查看报告,这个时候也需要获取PDF流,那么此时我们就可以把获取pdf流封装为一个函数A,返回bob(注意:bob是new Blob生成的实例,本质也是promise; 所以我们在调用A时要注意,A是一个异步函数。那么为了让代码从上到下同步顺序执行的话,那么在使用时就要使用await来调用,将A变为一个同步函数,即:等A执行完毕,再执行下面的代码)封装代码如下:文章来源地址https://www.toymoban.com/news/detail-547589.html

import { nodePrintFile, printPDFCustom } from "xxx.js";  
 
    // 获取PDF文件流
    async getPdfBlob(row) {
      let arrayBuffer = await docReportGainReportPdf({
        registrationFormSoid: row.registerInfoDto.registrationFormSoid,
        requestSoid: row.requestInfoDto.requestSoid,
        operatorSoid: row.examInfoDto.operatorSoid,
      });
      
      //这里的arrayBuffer流要使用Blob转换
      let bob = new Blob([arrayBuffer]); ---------->注意这里bob是promise
      return bob;
    },

    //触发打印报告函数
    async printSingleReport({ row }) {
      //获取pdf流
      let bob = await getPdfBlob(row)---------->注意这里使用了await
      // 文件大小太小说明没有获取的pdf流
      if (bob.size < 20) {
        this.$message({
          message: `报告未出!`,
          type: "warning",
        });
      } else {
        this.node2Print(bob).then((res) => {
          if (res.code === 200) {
            this.$message.success("打印成功");
          }
        });
      }
    }

     // 封装好的node打印函数,内部返回promise,(其中printPDFCustom是node打印接口)
    node2Print(blob) {
      return new Promise((resolve, reject) => {
        const formData = new FormData();
        formData.append("file", blob);
        formData.append("fileType", "pdf");
        formData.append(
          "printName",
          this.$parent.printReportDevice.printDeviceName
        );
        formData.append("type", "server");
        printPDFCustom(formData).then(
          (res) => {
            resolve(res);
          },
          (error) => {
            reject(error);
          }
        );
      });
    },



XXX.js
// node上传PDF文件流打印文件
export function printPDFCustom(data) {
  return request({
    baseURL: "http://localhost:3080/printPDFCustom",
    data,
    method: "post"
  });
}

到了这里,关于获取PDF流;打印报告的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【pdf技巧】PDF文件设置打印限制

    想要限制PDF文件的打印功能,想要限制PDF文件打印清晰度,都可以通过设置限制编辑来达到目的。 打开PDF编辑器,找到设置限制编辑的界面,切换到加密状态,然后我们就看到 有印刷许可。勾选【权限密码】输入一个PDF密码,在印刷许可中选择禁止打印或者设置分辨率就可

    2024年01月19日
    浏览(58)
  • vue 项目中实现pdf预览 pdf打印 pdf下载

    在Vue项目中实现PDF预览、打印和下载可以通过以下步骤来实现: 安装pdf.js pdf.js是一个JavaScript库,可以用于在Web上渲染PDF文件。 可以使用npm安装pdf.js,命令如下: npm install pdfjs-dist --save 创建一个PDF组件 在Vue项目中,可以创建一个PDF组件,用于显示PDF文件。 可以使用pdf.js提供

    2024年02月13日
    浏览(73)
  • 【PDF密码】PDF文件不能打印,为什么?

    正常的PDF文件是可以打印的,如果PDF文件打开之后发现文件不能打印,我们需要先查看一下自己的打印机是否能够正常运行,如果打印机是正常的,我们再查看一下,文件中的打印功能按钮是否是灰色的状态。 如果PDF中的大多数功能按钮以及打印按钮都是灰色的状态,那就证

    2024年02月13日
    浏览(63)
  • 批量打印-----jsPDF将图片转为pdf,并合并pdf

    安装依赖并引入 注意一、 使用jspdf将图片(jpg/jpeg/png/bmp)转pdf(记为pdfA),得到的pdf(pdfA)和需要合并的pdf(记为pdfB)类型不一致,需要将pdfA转为pdfB类型,才能合并,使用arraybuffer转,具体如下 注意二、 jspdf 可转pdf的图片类型有jpg、jpeg、png、bpm, 不支持 tif 和 tiff 图片类

    2024年02月13日
    浏览(49)
  • java静默打印PDF(可实现生产环境下服务器写入PDF模板,然后调用客户端打印机打印)

    需求 写这个的原因主要是因为当时项目中的打印功能是用户打印标签时,每次点击打印是通过把PDF文件下载到客户端浏览器,然后需要通过浏览器去点击打印机实现打印,就非常麻烦,每次都步骤非常复杂,而且每次参数都要重新设置。于是就想着怎么通过java实现自己调用

    2024年02月13日
    浏览(48)
  • JS打印、导出PDF

    这种方式打印的pdf比较高清,且分页不会截断文字和图片,背景图片是会被截断的 1.直接打印 直接调用浏览器的打印功能,打印整个页面 2.打印指定区域 通过开始标记、结束标记来打印,打印局部页面 注意 :1.如果你要打印的区域中包含vue赋值对象,那你的开始结束标志符

    2024年02月15日
    浏览(47)
  • 使用VBA打印PDF文件

    使用VBA打印工作表和工作簿文件都很容易实现,但是有时需要使用VBA打印已经保存在本机的其他文件,例如PDF文件格式的账单,如果这个PDF并非由Excel生成的那么就无法使用前述方法实现。 调用Windows的Shell命令可以实现打印PDF文件。 示例代码如下。 【代码解析】 第1~9行代码

    2024年02月05日
    浏览(57)
  • vue局部打印多页面pdf

    html打印程pdf,使用的官方提供的window.print() 打印的样式 @media print {} 缺点: 只能打一个页面 有点:不会刷新 缺点: 替换时页面会刷新,保存不了状态 有点:可以打印多页面 缺点: 安排多余的页面 有点:可以打印多页面 全选复制 另存为print.js main.js内挂载(注意引入路径是你刚刚保存

    2024年02月12日
    浏览(37)
  • 通过Dynamo批量打印PDF图纸

    最近有小伙伴留言,希望写一篇关于批量打印PDF图纸的教程,于是呢,这次就简单介绍一下批量打印pdf。   首先我在我的Dynamo节点库里简单搜了一下,发现打印pdf的节点挺多的,方式大同小异,我继续选Orchid节点包里的来介绍吧,用着比较习惯。   于是我们定位到Orchid→C

    2024年02月22日
    浏览(36)
  • JasperReport定义变量后打印PDF变量为null以及整个pdf文件为空白

    问题1: JasperReport打印出来的整个pdf文件为空白文件; 问题2:JasperReport定义变量后打印PDF变量为null; 问题1原因是因为缺少数据源JRDataSource 如果你打印的jrxml文件单纯是一些文本,没有数据,那么你需要在 fillReport 函数传入一个空的数据源,如果没有数据源生成的PDF就是空白

    2024年02月10日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包