如何快速又高质量的输出PDF实验报告?

news2025/2/5 12:10:39

摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。

PDF文档的打印在很多应用场景中都会被使用到,最为常见的就是实验室信息管理的应用场景,期间涉及到大量的报告呈现及打印的需求。

LIMS背景介绍

实验室信息管理系统(Laboratory Information Management System 英文缩写LIMS)是将以数据库为核心的信息化技术与实验室管理需求相结合的信息化管理工具。以ISO/IEC17025:2017 CNAS-CL01《检测和校准实验室能力的通用要求》(国标为GB/T 27025:2008)规范为基础,结合网络化技术,将实验室的业务流程和一切资源以及行政管理等以合理方式进行管理。

LIMS系统需求及解决思路

在LIMS系统构建的过程中,实验模板设计、实验数据填报、导出完整的PDF实验报告并且实现检测过程无纸化、系统化,检测报告电子化是LIMS系统的主要需求。那么如何快速又高质量的输出PDF实验报告呢?

借助SpreadJS表格技术及GcExcel仅仅需要三步就可以完成整个功能的开发:

  1. 将SpreadJS集成到系统中,快速实现数据的在线录入
  2. 在系统中配置导出PDF文档所需要的参数
  3. 通过GcExcel将实验报告导出为PDF文件

具体的操作步骤

  1. 用SpreadJS完成实现模板设计和实验数据填报

利用SpreadJS的在线表格编辑器,实验人员就可以通过类Excel的操作完成实验报告的设计。

通过以下代码就可以将SpreadJS快速集成到现有的系统中:

创建一个JavaScript应用程序:

注意 SpreadJS是无依赖的,仅仅需要以下文件: gc.spread.sheets.xx.x.x.css, gc.spread.sheets.all.xx.x.x.min.js即可.

<!DOCTYPE html><html lang="zh"><head>

<meta charset="utf-8" \>

<script src="gc.spread.sheets.all.xx.x.x.min.js"><link rel="stylesheet" href="gc.spread.sheets.xx.x.x.css"type="text/css"\><head\>

<body\><body\></html\>

添加SpreadJS容器元素 - 在页面的body元素中添加一个DOM元素作为它的容器。

<div id="ss">\</div\>

//初始化SpreadJS JavaScript控件。 - SpreadJS控件通过使用new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 })来进行初始化。

window.onload = function () {// Initialize a workbookvar workbook = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 });// get workbook object// var workbook = GC.Spread.Sheets.findControl(document.getElementById('ss'));

};

在完成嵌入之后,通过SpreadJS的数据绑定的功能,某些默认数据可以从数据库加载,显示到实验模板中,实验人员填报的实验数据也可以通过数据绑定轻松获取到

  1. 用SpreadJS完成导出PDF(打印)的配置

使用SpreadJS的在线表格编辑器可以完成导出PDF的配置,可配置导出区域,重复区域,页眉,页脚,水印等,对导出PDF报告进行自定义。

  1. 用GCExcel将实验报告导出

在SpreadJS中完成模板设计,实验数据填报,以及各种打印配置后,可以将整个实验模板文件导出为一个json,发给后端,后端就可以用GCExcel加载,GCExcel可以完美兼容SpreadJS的特性,在SpreadJS中对模板的配置,以及对导出的PDF的配置,在GCExcel中都完美兼容,当然也可以在GCExcel完成对模板的配置以及PDF导出的配置。

Java Workbook workbook = new Workbook(); //打开SpreadJS导出的模板 workbook.open("template.ssjson");  // 导出PDF配置  PdfSaveOptions pdfSaveOptions = new PdfSaveOptions(); // 配置支持换行缩小  pdfSaveOptions.getShrinkToFitSettings().setCanShrinkToFitWrappedText(true);  // 导出PDF  workbook.save("ExportPdf.pdf");


至此,就完成PDF文档的打印。

如果各位有想要试用Lims系统的用户可以访问这个在线的Demo链接:
https://demo.grapecity.com.cn/spreadjs/demos/cases/#/preview?template=limsData

使用SpreadJS和GCExcel搭建LIMS系统的优势

  1. SpreadJS能够帮助LIMS系统快速实现数据的绑定功能,实现数据自动提取,如委托单位信息、例行监测任务等首次录入后可直接调用,且支持调用历史任务时对监测项目进行修改并生成新的任务单,无须重复录入,大大减少了人工成本和降低出错率。
  2. 使用 SpreadJS 设计模板,系统获取仪器测试数据后填入原始记录单(预置计算公式、修约等)可直接生成 Excel 记录表,通过选择报告模板生成完整的监测报告,全过程无需手写原始记录,无需反复录入监测数据,方便快捷,准确率高。
  3. SpreadJS 提供权限控制的方法,可以规范修改流程,严格控制报告修改。
  4. 使用Spread可以对导出的PDF进行精确配置。
  5. GCExcel完美兼容SpreadJS特性,在后端批量导出完整的PDF实验报告,既美观又高效。

扩展链接

用C1PDF控件从应用程序创建支持AcroForm的PDF文件

使用LEADTOOLS将图像转换为包含文本、元数据的可检索PDF文件:25天25个项目

项目实战:在线报价采购系统(React +SpreadJS+Echarts)

Spring Boot框架下实现Excel服务端导入导出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/761589.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rockchip linux Vendor storage 及SN添加

前言 在产品开发过程中,最后都会为产品编辑一个产品编号方便于管理和维护,而SN(Series Number)就是用于产品的生产编号。但是在linux中,并没有专门管理串码的驱动。 Vendor storage 是rockchip 被设计用来存储 SN,MAC,LAN,BT 等 vendor data。特征如下: 唯一的访问…

一些有意思的SCI

Gardner J K, Knopoff L. Is the sequence of earthquakes in Southern California, with aftershocks removed, Poissonian?[J]. Bulletin of the seismological society of America, 1974, 64(5): 1363-1367. [原文] 该论文的abstract只有一个单词&#xff1a;Yes。 目前该论…

MySQL索引使用原则,什么是覆盖索引、索引下堆、离散度……这些概念你弄明白了吗

文章目录 一、索引失效的场景二、列的离散度三、联合索引最左匹配1、什么时候用联合索引2、什么是覆盖索引 四、索引条件下推&#xff08;ICP&#xff09; 一、索引失效的场景 MySQL索引失效的场景&#xff0c;什么情况下会造成MySQL索引失效 二、列的离散度 什么是列的离散…

【Nacos】实战之配置中心加载多个配置文件

目录 复习未拆分前的yaml文件拆分配置文件dataSource.yamlmybatis.yamlother.yaml 微服务同时加载多个远程配置文件修改配置文件 复习 导入依赖在子模块里面创建 bootstrap.yaml 文件bootstrap.yaml 文件 添加需要的远程配置信息开始拆分以前的配置信息 未拆分前的yaml文件 拆…

服务器数据库被360后缀勒索病毒攻击怎么解决,勒索病毒解密

随着网络攻击日益猖獗&#xff0c;数据库遭遇勒索病毒的攻击已成为常见现象。而360后缀勒索病毒是一种恶意软件&#xff0c;它将加密数据库中的文件&#xff0c;并要求受害者支付赎金才能获得解密密钥。近日&#xff0c;我们收到很多企业的求助&#xff0c;企业的服务器被360后…

基于STM32CubeMX与keil采用按键外部中断方式控制LED与蜂鸣器

文章目录 前言1. 电路原理图理解1.1 LED与KEY原理图理解1.2 BEEP蜂鸣器 2. 外部中断配置阐述3. STM32CubeMX配置4. 代码编写4.1 代码编写思路4.2 重写回调函数 TIPS总结 前言 这篇文章详细记录外部中断方式控制LED的亮灭以及蜂鸣器的开关&#xff1b;本文从原理图开始到最后实…

工作日记20230714

1、报文id定义对&#xff0c;类库中和tracking中的报文长度定义一致&#xff0c;但是和一级那边的报文长度定义不一致&#xff0c;对方有可能会收到报文&#xff0c;但是发送方在发出数据后程序会自动中止。 2、结构体 如果定义结构体List的话&#xff0c;不用在()加初始值&a…

分享一下使用finalshell连接虚拟机失败的经历

今天在使用finalshell连接安装的Ubuntu的时候遇到了一点问题&#xff0c;通过root用户连接的时候一直连接失败。 然后照着网上的解决方式一个个试 一、安装oppenssh -server sudo apt-get install openssh-server 然后重启ssh sudo service ssh restart 二、设置密码 最后发…

【架构设计】谈谈防腐层的妙用

文章目录 前言一、一个简单的例子二、防腐层介绍总结 前言 最近在学习了解领域驱动模型DDD相关的内容&#xff0c;但是由于没有实际的项目支撑&#xff0c;所以大都是停留在一些理论层面。我发现这里面的一些设计思想还是非常有实用价值的&#xff0c;可以直接应用于你目前的项…

基于ssm+mybatis+mysql+jsp机票预定系统

基于ssmmybatismysqljsp机票预定系统 一、系统介绍二、功能展示1.主页2.个人中心3.用户管理(管理员)4.客机管理&#xff08;管理员&#xff09;5.航班管理&#xff08;管理员&#xff09;6.机票管理&#xff08;管理员&#xff09; 三、其它系统四、获取源码 一、系统介绍 系统…

nacos设置服务权重

nacos设置服务权重

飞行动力学 - 第8节-着陆性能 之 基础点摘要

飞行动力学 - 第8节-着陆性能 之 基础点摘要 1. 着陆性能1.1 空中直线段S11.2 拉平段S21.3 地面滑跑段S3 2. 着陆性能改善方法3. 起飞性能列举4. 参考资料 1. 着陆性能 总体距离S S1 S2 S3&#xff0c;越短性能越佳。 1.1 空中直线段S1 1.2 拉平段S2 1.3 地面滑跑段S3 2. 着…

三分钟了解Redis HyperLogLog 数据结构

文章目录 0. 前言1. 原理1.2 原理解析 2.实战案例3. Redis从入门到精通系列文章4. 常见问题4.1. 什么是Redis HyperLogLog&#xff1f;4.2. HyperLogLog算法的核心思想是什么&#xff1f;4.3. HyperLogLog算法的误差率如何控制&#xff1f;4.4. HyperLogLog算法的存储空间大小与…

超图数据集概念学习1

以前写过一些数据源数据集有关的博文&#xff1b;从头学习一下&#xff1b; 数据集是同种类型数据的集合&#xff0c;比如&#xff1a;点数据集、线数据集。根据数据类型的不同&#xff0c;分为矢量数据集、格网数据集和影像数据集&#xff0c;以及为了处理特定问题而设计的如路…

​CentOS防火墙操作命令 ​

CentOS防火墙操作命令 1、查看防火墙服务状态 systemctl status firewalld.service 或者查看防火墙的状态&#xff1a; 1 firewall-cmd --state 2、开启、重启防火墙 启动firewall&#xff1a; 1 systemctl start firewalld.service 设置开机自启或禁用&#xff1a; …

【Ceph】基于ceph-deploy部署Ceph集群详解

基于ceph-deploy部署Ceph集群详解 1. 存储基础1.1 单机存储设备1.1.1 单机存储的问题1.1.2 商业存储解决方案 1.2 分布式存储&#xff08;软件定义的存储SDS&#xff09;1.2.1 分布式存储的类型 2. Ceph简介2.1 Ceph优势2.2 Ceph架构2.2.1 高层应用接口 2.3 Ceph核心组件2.3.1 …

CTFShow-WEB入门篇文件上传详细Wp(151-170)

WEB入门篇--命令执行详细Wp 文件上传&#xff1a;Web151&#xff1a;Web152&#xff1a;Web153&#xff1a;Web154&#xff1a;Web155&#xff1a;Web156&#xff1a;Web157&#xff1a;Web158&#xff1a;Web159&#xff1a;Web160&#xff1a;Web161&#xff1a;Web162&#…

Java:基本数据类型 和 所占大小

目录 java基本程序结构命名注释数据类型 和 大小整数类型浮点char编码boolean 变量常量final 的作用 java基本程序结构 命名 小驼峰&#xff1a;第一个单词小写&#xff0c;后面的单词大写。 大驼峰&#xff1a;每个单词都大写。 变量&#xff0c;方法&#xff1a;小驼峰。 j…

046、TiDB特性_内存悲观锁(了解)

悲观锁 传统悲观锁有两个性能问题&#xff1a; 磁盘io 需要将lock 的信息持久化到 lock CF中&#xff0c;这个时候产生磁盘io网络io 因为每个Region都是多副本&#xff0c;需要将信息通过网络 发送到Follower的lock CF中。 内存悲观锁 为了解决上面两个问题。 就有个内存悲观…

RPC学习笔记

1、Remote Procedure Call RPC的主要目标是让构建分布式更容易&#xff0c;在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标&#xff0c;RPC框架需要提供一种透明的调用机制&#xff0c;让使用者不必显示的区别本地调用和远程调用。RPC不是一个协议或者方…