本文将重点介绍iTextSharp的使用方法和易踩的一些坑,顺便介绍了json转DataTable的简单快捷高效的方法及二进制流转换文件在线即时下载的方法。经测试生成40页的pdf仅需要1秒,大小不超过200k。性能与压缩率比较好。
最近接到个需求,就是把前端的表格数据用PDF的形式导出。用到的插件:
以上插件可在nuget中下载引用
前端的表如下:
前端的json数据结构如下:
说明:Hearder是数组,里面放的是每个列的参数,比如列宽,是否隐藏列(隐藏列不导出)等;DataList是数组,里面存放的是表格数据;Title存的表格名字
这步我用到了iTextSharp,这个插件对应的是Java版本的iText,它是开源免费的。事实上,在本人实测的过程中,iTextSharp拥有强大的PDF操作能力,对于一些复杂的排版也能胜任,其排版语句类似于css方式排版,我使用iTextSharp版本为5.5的版本。有几点需要注意的是:
大多数pdf文件都是有页眉和页脚的,iTextSharp默认生成的pdf是没有页眉和页脚的,我们可以重写PdfPageEventHelper进行自定义设置,在重写OnStartPage方法设置页眉,重写OnEndPage方法设置页脚,代码如下:
生成的pdf效果如下:页眉和页脚
当我们输出一个表格的时候,当表格超出一页时,iTextSharp默认是只在第一页显示表头而其他页不显示标题只显示数据,如果我们需要在每一页都显示表头就可以设置如下语句:
我们可以在创建文件时用MemoryStream的形式,然后把MemoryStream文件流转为base64字符编码,返回给前端直接下载。详见三。
从后端获取base64字符串,转换Uint8Array类型,再转为blob类型,最后进行下载。
OPENJSON 要求兼容性级别 130,即SQLSERVER2016以上版本1、默认输出的 OPENJSON在不提供结果的显式架构的情况下使用 OPENJSON 函数时(在 OPENJSON 之后不使用 WITH 子句),该函数将返回包含以下三列的表:输入对象中属性的名称(或输入数组中元素的索引)。属性或数组元素的值。类型(例如,字符串、数字、布尔值、数组或对象)。OPENJSON 以单独的行返
在绝大多数业务场景中,分布式数据库并非必需。事实上,约80%的应用程序都可以在单机环境下高效运行。对于绝大多数企业而言,数据库的数据量通常不会达到 TB 级别。在现代应用开发中,json 已成为数据交换和存储的常见格式。尽管 MongoDB 因其天然支持 json 而备受推崇,但 MySQL 也提供了强大的 json 数据类型支持,能够高效地处理 json 数据。在本指南中,我们将探讨如何使用My
Json Assistant —— 基于 IntelliJ IDEs 的 JSON 工具插件,支持 IntelliJ IDEA、DataGrip、PyCharm Professional、WebStorm 等常用的 IDE 工具!
# MySQL查询结果转换成JSON格式在开发中,我们经常需要将MySQL数据库查询结果转换成JSON格式进行传输和处理。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,并且在各种编程语言中都有良好的支持。本文将介绍如何使用MySQL函数和编程语言来实现将查询结果转换成JSON格式的方法,并提供相应的代码示例。## 1. MySQ
# 使用Spark SQL将结果转换为JSON格式在大数据处理过程中,Spark SQL作为一个强大的模块,允许用户使用SQL查询来操作数据集。本文将介绍如何将Spark SQL查询的结果转换为JSON格式,并通过示例代码进行说明。同时,我们还将使用Mermaid语法来展示关系图和甘特图,以帮助更好地理解整个过程。## 一、Spark SQL简介Spark SQL允许用户通过SQL查询
# 如何将数据转换为JSON格式并写入Redis在实际开发中,我们经常需要将数据转换为JSON格式并存储在Redis中。这样可以方便在不同应用之间共享数据,并能够更好地处理复杂的数据结构。下面我们将介绍如何使用Python将数据转换为JSON格式,并写入Redis中。## 解决问题我们有一个用户信息表,需要将用户信息转换为JSON格式,并存储在Redis中。为了方便管理和查询用户信息,
# 如何使用Java实现JSON转换成XML格式## 1. 简介在Java开发中,有时候需要将JSON格式的数据转换成XML格式,这在数据交换和存储过程中非常常见。本文将教你如何实现这一功能。## 2. 流程展示下面是将JSON转换成XML的整体流程:```mermaiderDiagram JSON -->|Convert| XML```## 3. 步骤说明首先我
//1.这段代码是将字典封装数据。 NSMutableDictionary *dict = [[NSMutableDictionary alloc]init]; y:@"email"]; [dict setVa
## Python读取图片并转换成JSON格式### 1. 概述在本文中,我将教会你如何使用Python读取图片并将其转换为JSON格式。这个过程涉及到几个步骤,包括读取图片、处理图片数据,并将其转换为JSON格式。### 2. 流程图下面是整个过程的流程图,展示了每个步骤的顺序和依赖关系。```mermaidstateDiagram [*] --> 读取图片
如何将xml代码转成json格式的代码? 在这里,我才用的是引入xmltodict依赖包,用xmltodict来解决这个问题。 首先,安装xmltodict:pip install xmltodict==0.12.0其次,样例xml解析成json演示:# -*- coding: utf-8 -*-import xmltodictimport jsona = '''<LogonRequ
JavaScript对象表示法(适合于服务器与JavaScript的客户端交互)可以用来表示String number boollean 数组 对象 等数据类型。 JSON文本格式数据解析成对象JS中的应用:一、JSON字符串转换为JSON对象要使用上面的str1,必须使用下面的方法先转化为JSON对象://由JSON字符串转换为JSON对象var obj = ev
1、安装过程和其他视频格式转换器软件一样,只需一路点击“下一步”(图1)(图1)2、软件运行后先有一个提示 要进入“标准模式”还是“引导模式”,这是艾奇视频格式转换器的一个独创特色。我们先进入默认的“标准模式”看看(图2)(图2)3、黑色的界面给人的第一感觉还是非常酷的,主界面上在突出的位置提示了软件的使用方法,只需按图索骥完成4个步骤,就能获得所需格式的视频文件了。(图3)(图3)4、按照提示点
看文章标题就知道,本文的主题就是关于JSON,JSON转换器(JsonConverter)具有将C#定义的类源代码直接转换成对应的JSON字符串,以及将JSON字符串转换成对应的C#定义的类源代码,而JSON操作技巧则说明如何通过JPath来快速的定位JSON的属性节点从而达到灵活读写JSON目的。一、JSON转换器(JsonConverter)使用及原理介绍篇 现在都流行微服务
在《Hive内置数据类型》文 章中,我们提到了Hive内置数据类型由基本数据类型和复杂数据类型组成。今天的话题是Hive数据类型之间的转换。同Java语言一样,Hive也包括 隐式转换(implicit conversions)和显式转换(explicitly conversions)。 Hive在需要的时候将会对numeric类型的数据进行隐式转换。比如我们对两个不同数据类型的数字进行比较,
JSON1. json是什么 * 它是js提供的一种数据交换格式,现在只是出现在js 中,例如把xml 转化为java对象2. json的语法 * {}:是对象! > 属性名必须使用双引号括起来!单引不行!!! > 属性值:  
前言json是javascript object notation的缩写,是一种轻量级的数据交换形式,是一种xml的替代方案,而且比xml更小,更快而且更易于解析。因为json描述对象的时候使用的是javascript语法,它是语言和平台独立的,并且这些年许多json的解析器和类库被开发出来。json具有以下这些形式:对象是一个无序的“‘名称/值'对”集合。一个对象以“{”(左括号)开始,“}”(
JSON是JavaScript Object Notation的缩写。JSON是个轻量级的用于服务器端和客户端交换数据的数据格式。它经常会用在ajax应用上,是因为它是基于ajax对象的格式定义出来的。 这里我们会从javascript的语法引申出json,并在此基础上引出如何在ajax应用程序上使用JSON。 在javascript大家知道有个Arrays:数组。它的格式如下: 复制代
EMF指导 1.模型和EMF 1.1 数据模型数据模型,有时也叫做“域模型(domain model)”,意思就是代表了你想要针对于业务的数据。比如说,如果你要开发一个在线的机票预订应用,你可能建立的模型有“Person”,“Flight”,“Booking”等。一般建议你建立的数据模型要独立于应用程序的逻辑。这种方法会导致这些类几乎没有逻辑性和大量的属性。比如:“Person
目录一:本节目标二: 简介2.1 为什么要使⽤联合查询2.2 多表联合查询时MYSQL内部是如何进⾏计算的2.3 构造练习案例数据2.4 案例:⼀个完整的联合查询的过程三:内连接3.1 语法3.2实例四: 外连接4.1 语法4.2 ⽰例五:⾃连接5.1 应⽤场景5.2 ⽰例5.3 表连接联系六:⼦查 ...
[技术博客]几种网站压力测试工具调研与使用我们在beta阶段对于网站访问做了不少优化工作,因此打算在本阶段尾声时对网站做了一个简单的压力测试,进而估算一下网站现在的并发量及处理能力。因此,我们对现有较流行的几种网络压力测试工具进行了简单调研并尝试部署使用。[技术博客]几种网站压力测试工具调研与使用1. 在线网站1.1. 优势1.2. 缺陷1.3. 测试结果样例2. 测试工具2.1. ab2.1.1
文章目录一.概要二.通用定时器内部结构1.时基单元2.时钟源3.输入捕获4.输出比较三.通用定时器内部特色四.CubeMX配置一个TIME1定时1ms中断例程1.硬件准备2.创建CubeMX工程3.添加代码4.首要代码五.小结一.概要定时器的简介定时器就是计数器,应用在我们生活的方方面面,比如有闹钟 ...
> 开场 那是一个非同寻常的夜晚,第二天即将考试,我一改往日悠闲刷手机的习惯,转而焦虑地刷着手机,突然传来通知 我仔细一看,我去!这不就是我闲的没事做的实验题吗?!,为了检验自己的水平,顺便help my classmate,我毅然决然地接下了这份任务。 > 一. 在我通过了那位同学的好友申请后 ...