NetCore itext7 创建、编辑PDF插入表格、图片、文字(三)
NetCore 创建、编辑PDF插入表格、图片、文字
NetCore 创建、编辑PDF插入表格、图片、文字(二)
NetCore 创建、编辑PDF插入表格、图片、文字(三)
直接上代码
nuget引入 itext7
using System;
using System.IO;using iText.IO.Image;
using iText.Kernel.Colors; // 导入颜色类库
using iText.Kernel.Geom;
using iText.Kernel.Pdf; // 导入PDF操作类库
using iText.Layout;
using iText.Layout.Borders; // 导入布局类库
using iText.Layout.Element; // 导入元素类库
using iText.Layout.Properties;
using iText.Pdfa;
using TextAlignment = iText.Layout.Properties.TextAlignment; // 导入属性类库
private void PDF(){string textsss ="ssssssssssssssssssssssdddddddddddddddddddddddddddddddddddddddffffffffffffffffffffffffffffffffffffffffffffffffffff";string filePath = "path/to/yourDocument.pdf";// 检查目录是否存在,如果不存在则创建string directory = System.IO.Path.GetDirectoryName(filePath);if (!Directory.Exists(directory)){Directory.CreateDirectory(directory);}// 创建PDF文档var writer = new PdfWriter(filePath); // 创建PDF写入器,指定文件路径var pdf = new PdfDocument(writer); // 创建PDF文档var document = new Document(pdf, PageSize.A4); // 创建文档对象// 设置分页尺寸//PageSize customPageSize = new PageSize(500, 500); // 设置自定义的分页尺寸,单位为点(1英寸=72点)//pdf.SetDefaultPageSize(customPageSize);float x = PageSize.A3.GetWidth() / 2;float y = PageSize.A3.GetTop() - 20;#region 文本写入string ss ="Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1Text 1";// 文字自定义坐标var wb = new Paragraph(ss).SetWidth(200).SetFontSize(12).SetFixedPosition(1, 50, 750, 800);document.Add(wb); // 第1页,X=50,Y=750document.Add(new Paragraph($"Text 2{textsss}").SetFixedPosition(1, 50, 700, 800)); // 第1页,X=50,Y=700document.Add(new Paragraph($"Text 3{textsss}").SetFixedPosition(1, 50, 650, 500)); // 第1页,X=50,Y=650//从上到下document.Add(new Paragraph($"居左{textsss}").SetTextAlignment(TextAlignment.LEFT));document.Add(new Paragraph($"居中{textsss}").SetTextAlignment(TextAlignment.CENTER));document.Add(new Paragraph($"局右{textsss}").SetTextAlignment(TextAlignment.RIGHT));#endregion// 表格设置Table table = new Table(5) // 创建表格,5列.SetMarginTop(10) // 设置上边距.SetFixedPosition(1, 36, 600, 200) // 设置固定位置.SetBorder(Border.NO_BORDER); // 设置无边框// 单元格设置Cell cell1 = new Cell(1, 5).Add(new Paragraph("Merged Row 1")) // 创建合并单元格,跨5列.SetBackgroundColor(ColorConstants.LIGHT_GRAY) // 设置背景色为浅灰色.SetFontColor(ColorConstants.BLUE) // 设置字体颜色为蓝色.SetFontSize(10) // 设置字体大小为10.SetTextAlignment(TextAlignment.CENTER); // 设置文本居中对齐Cell cell2 = new Cell(1, 2).Add(new Paragraph("Merged Row 2")) // 创建合并单元格,跨2列.SetBackgroundColor(ColorConstants.YELLOW) // 设置背景色为黄色.SetFontColor(ColorConstants.GREEN) // 设置字体颜色为绿色.SetFontSize(10) // 设置字体大小为10.SetTextAlignment(TextAlignment.CENTER); // 设置文本居中对齐Cell cell3 = new Cell(1, 3).Add(new Paragraph("Merged Row 3")) // 创建合并单元格,跨3列.SetBackgroundColor(ColorConstants.ORANGE) // 设置背景色为橙色.SetFontColor(ColorConstants.MAGENTA) // 设置字体颜色为品红色.SetFontSize(10) // 设置字体大小为10.SetTextAlignment(TextAlignment.CENTER); // 设置文本居中对齐// 创建单元格并设置背景颜色for (int i = 0; i < 5; i++) // 遍历5列{Cell cell = new Cell().Add(new Paragraph($"Cell {i + 1}")) // 创建单元格,添加文本.SetFontSize(10) // 设置字体大小为10.SetTextAlignment(TextAlignment.CENTER); // 设置文本居中对齐// 设置不同的背景色switch (i){case 0:cell.SetBackgroundColor(ColorConstants.LIGHT_GRAY); // 第一列背景色为浅灰色break;case 1:cell.SetBackgroundColor(ColorConstants.YELLOW); // 第二列背景色为黄色break;case 2:cell.SetBackgroundColor(ColorConstants.ORANGE); // 第三列背景色为橙色break;case 3:cell.SetBackgroundColor(ColorConstants.CYAN); // 第四列背景色为青色break;case 4:cell.SetBackgroundColor(ColorConstants.PINK); // 第五列背景色为粉色break;}table.AddCell(cell); // 将单元格添加到表格}// 将合并单元格添加到表格table.AddCell(cell1);table.AddCell(cell2);table.AddCell(cell3);// 将表格添加到文档document.Add(table);ImageData imageData = ImageDataFactory.Create("path/to/123222.jpg");Image image1 = new Image(imageData).SetFixedPosition(2, 50, 300, 200) // 指定坐标 第2页,X=50,Y=300,宽度200;Image image2 = new Image(imageData);image2.SetHorizontalAlignment(iText.Layout.Properties.HorizontalAlignment.CENTER); //居中image2.SetWidth(200);;document.Add(image1);document.Add(image2);// 关闭文档document.Close();}相关文章:
NetCore itext7 创建、编辑PDF插入表格、图片、文字(三)
NetCore 创建、编辑PDF插入表格、图片、文字 NetCore 创建、编辑PDF插入表格、图片、文字(二) NetCore 创建、编辑PDF插入表格、图片、文字(三) 直接上代码 nuget引入 itext7 using System; using System.IO;using iText.IO.Image; using iText.Kernel.Colors; // 导入颜色…...
数据结构奇妙旅程之深入解析冒泡排序
冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成…...
解决 sudo apt update E: The repository is not signed.
一段时间没有用ubuntu系统,出现了很多这样的报错 解决方法 cd /etc/apt/sources.list.d ls然后把报错的项目从里面移除,例如 sudo rm cudnn-local-ubuntu2004-8.7.0.84.list全部移除后,再sudo apt-get update就能成功...
SCT2A26STER5.5V-100V Vin,4A峰值限流,高效异步降压DCDC转换器,替代LM5012、LM5013、LM5017、LM5164
• 5.5V-100V 输入电压 • 最大输出电压:30V • 2A 连续输出电流 • 4A峰值电流限制 • 1.2V 1% 反馈电压 • 集成500mΩ 高侧功率 MOSFETs • 140uA静态电流 • 恒定导通时间控制模式 • 4ms 内置软启动时间 • 300KHz 固定开关频率 • 可编程输入电压欠…...
前端学习资源整合
整合优质前端学习资源和文章,不定期更新。 JavaScript 现代 JavaScript 教程 官网:https://zh.javascript.info/GitHub:https://github.com/javascript-tutorial/zh.javascript.info 优秀的JS代码规范 官方英文版:https://gi…...
第16篇:奇偶校验器
Q:本期我们将实现4位奇偶校验逻辑电路,即校验4位二进制代码中 “1” 的个数是奇数或偶数。 A:奇偶校验器的基本原理:采用异或运算对“1”的奇偶个数进行校验,从最高位依次往最低位进行连续异或运算。如果最后的异或运…...
Obsidian+PicGo+Gitee搭建免费图床
之前使用PicGoGitee配合Typora,后来因为换电脑Typora管理笔记不方便,换到Obsidian笔记,此处记录重新搭建图床的坑与经验。 主要参考# picGogitee搭建Obsidian图床,实现高效写作! 1 下载安装PicGo 下载链接https://mo…...
计算机网络复试总结(五)
可能会问: 基础知识问题: 请简述TCP/IP协议栈的层次结构及其功能。 TCP/IP协议栈的层次结构及其功能可以简要概述如下: 层次结构: TCP/IP协议栈通常被划分为四个主要层次,从底层到高层分别是网络接口层(也…...
设计模式 --4:工厂方法模式
总结 : 个人理解: 工厂方法模式就是在简单工程模式的基础下将工厂类抽象出来。如果不抽象工厂类 ,每一次创建一个新的算法,都要修改原来的工厂类,这不符合 开放–封闭原则 将工厂类给抽象出来,让具体的算法…...
Linux系统centos7.6更换yum源以及下载安装包到指定目录
一、Linux系统centos7.6更换yum源 [rootlocalhost sofware]# cd /etc/yum.repos.d/ [rootlocalhost yum.repos.d]# mkdir back [rootlocalhost yum.repos.d]# mv * back [rootlocalhost yum.repos.d]# cp -a /root/software/CentOS7-Base-163.repo . #将准备好的yum源拷贝到指…...
蓝桥杯-子矩阵
""" 题目来源 https://www.lanqiao.cn/problems/3521/learning/?page1&first_category_id1&name%E5%AD%90%E7%9F%A9%E9%98%B5 """ import os import sys from collections import deque# 请在此输入您的代码 n, m, a, b map(int, inpu…...
Nginx 故障排查之斜杠(/) --(附 Nginx 常用命令)
问题场景: 项目中用到了多个子域名,测试环境通过子域名进行接口访问的时候返回 404 NOT_FOUND,经过排查测试后确定是 Nginx 配置问题,而导致事故的根本原因是运维在Nginx配置的时候少配置了一个斜杠(/)&am…...
【超全详解一文搞懂】Scala基础
目录 Scala 01 —— Scala基础一、搭建Scala开发环境安装Scala编译器在IDEA中进行scala编码 二、Scala简介与概述Scala简介Scala概述Scala代码规范 三、理解Scala变量与数据类型Scala的变量与常量Scala和Java变量的区别 Scala的数据类型 四、Scala的程序逻辑1.表达式2.运算符3.…...
16:00面试,16:06就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...
【CTFshow 】web 通关 1.0
🍬 博主介绍👨🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…...
babel起手式
Babel7 以下是各个 ECMAScript 版本引入的一些主要新语法和功能的汇总 ES5 / ECMAScript 5(2009年) 严格模式 "use strict"。JSON 对象。Array.prototype.forEach()、Array.prototype.map()、Array.prototype.filter()、Array.prototype.redu…...
AI大模型在医疗领域的应用案例:自然语言处理与医疗文本分析
随着人工智能技术的快速发展,AI大模型在自然语言处理、图像识别、语音识别等领域的应用越来越广泛。在医疗领域,AI大模型的应用正在深刻改变着医疗实践,为患者和医生带来前所未有的便利。近期AI医疗的概念也比较火热,本文将聚焦于…...
c语言常见错误
1.运算符“=”和“==”的误用 在if (“变量”==”常量”)表达式中最好写成 “常量”==“变量”的形式,否则容易造成逻辑判断不正确或者变量被错误赋值。 2.不要使用默认优先级,使用括号来保证自己的运算优先级! 3.网络序:所有设备和系统都是按照设备接收、发送数据的顺序…...
分别使用TCP/UDP实现互相实时发送消息,接收消息功能
什么是TCP? TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议。它是互联网协议套件中的一部分,用于在网络上可靠地传输数据。TCP协议的主要特点包括: 面向连接:在TCP通信中,通信双方在通信之前必须先建立连接。连接建立后,数据传输完成后还需要显式…...
使用阿里CICD流水线打包Vue项目到阿里的docker镜像私仓,并自动部署到服务器启动服务
文章目录 使用阿里CICD流水线打包Vue项目到阿里的docker镜像私仓,并自动部署到服务器启动服务1、功能实现原理大家可以看我之前的两篇文章2、打包vue项目和打包咱们的Java项目过程差不多相同,大家可以看着上面的Java打包过程进行实验,下面是v…...
构建Pixel Couplet Gen的微信小程序:让AI春联触手可及
构建Pixel Couplet Gen的微信小程序:让AI春联触手可及 1. 项目背景与价值 春节贴春联是中国传统文化的重要组成部分,但现代人往往缺乏时间和书法技能来创作个性化春联。Pixel Couplet Gen作为一款AI春联生成模型,能够根据用户输入自动生成像…...
如何用QtScrcpy实现低延迟Android投屏?5个技巧带你解锁高效多设备控制体验
如何用QtScrcpy实现低延迟Android投屏?5个技巧带你解锁高效多设备控制体验 【免费下载链接】QtScrcpy Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/…...
MAVLink垂直扩展:Emaxx导航板专用协议库设计与实践
1. 项目概述 mavlink_emaxx 是一个面向 Emaxx 导航板(Emaxx Nav Board)定制的 MAVLink 协议消息扩展库。该库并非独立协议栈,而是基于标准 MAVLink v2 协议规范构建的一组专用消息定义(message definitions)与配套 C…...
自指宇宙学形式化验证套件 (Coq‑SRU v1.2.0)
自指宇宙学形式化验证套件 (Coq‑SRU v1.2.0)技术摘要 正式整编版 项目标识:Coq Formalization of Self‑Referential Universe (Coq‑SRU) 版本:v1.2.0(对齐《世毫九自指宇宙学》理论第三部分) 代码仓库:https://git…...
Seelen-UI终极指南:5分钟打造你的专属Windows桌面环境
Seelen-UI终极指南:5分钟打造你的专属Windows桌面环境 【免费下载链接】Seelen-UI The Fully Customizable Desktop Environment for Windows 10/11. 项目地址: https://gitcode.com/GitHub_Trending/se/Seelen-UI 想要彻底改造Windows 10/11的桌面体验吗&am…...
从ONNX到TPU:跨框架模型部署的编译器避坑指南(2023最新版)
从ONNX到TPU:跨框架模型部署的编译器避坑指南(2023最新版) 当ResNet模型在PyTorch中达到99%的测试准确率时,真正的挑战才刚刚开始——如何让这个模型在边缘设备的TPU芯片上高效运行?这个问题困扰着85%的AI工程师。本文…...
系统托盘管理效率革命:让你的Windows桌面空间重获自由
系统托盘管理效率革命:让你的Windows桌面空间重获自由 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 当你的任务栏堆叠着12个窗口图标,每点击一次…...
AI辅助开发:利用快马构建openclaw强化学习抓取训练环境
最近在研究机械爪的抓取策略优化,发现手动调参效率太低,于是尝试用AI辅助开发来构建一个强化学习训练环境。这个项目主要围绕openclaw机械爪的启动和控制策略展开,通过快马平台的AI能力快速搭建实验环境,效果出乎意料地好。 环境搭…...
批量加密RAR文件超简单!WinRAR自动加密技巧
Rar压缩包是大家经常使用的文件,并且可以进行加密,也是一种文件加密方式,那么当你有很多文件都需要压缩加密,按照正常加密方法来说,我们需要重复操作多次才能实现。其实我们可以使用自动加密功能来完成批量加密。 不过…...
利用快马平台AI快速构建游戏cc switch功能原型,十分钟实现创意验证
利用快马平台AI快速构建游戏cc switch功能原型 最近在开发一个小型游戏项目时,遇到了一个常见需求:需要快速测试和切换各种游戏功能。比如在调试阶段,可能需要临时开启无敌模式、无限弹药等功能。传统做法是为每个功能单独写调试代码&#x…...
