目录

1、运行主界面

2、标签生成界面

3、需要引入的依赖包

4、解决方案目录

5、主要代码

1、新建PdfUtils工具类

2、Form1.cs 窗体主要代码


IT技术分享社区 / Itext Sharp Demo · GitCode

今天给大家分享小编基于ItextSharp制作的一款标签生成小工具,可供大家学习或者二次开发满足实际的需求使用。

使用技术:C#+ItextSharp+Winfrom+Net4.0

1、运行主界面

运行主界面根据窗体输入相应的内容,点击生成pdf按钮会生成对应的pdf文件。

2、标签生成界面

生成的标签pdf文件效果,直接运行

3、需要引入的依赖包

开发的时候需要导入以下两个包

iTextSharp 版本为5.5.13.13

QRCoder 版本为1.4.3

4、解决方案目录

5、主要代码

1、新建PdfUtils工具类

class PdfUtils{const stringITextExamplesFolder= "iTextExamples";const stringResourcesFolder= "resources";public static stringAuthor=> "haogm";public static string GetBaseDir()        {returnEnvironment.CurrentDirectory; }    /// <summary>/// 创建列 插入文本内容/// </summary>/// <param name="table"></param>/// <param name="content"></param>/// <param name="font"></param>/// <param name="minimumHeight"></param>/// <param name="colspan"></param>/// <param name="rowspan"></param>public static void CreateCell(PdfPTabletable, stringcontent, Fontfont, intminimumHeight= 20, intcolspan= 0, introwspan= 0){varcell= new PdfPCell(new Phrase(content,font));
cell.UseAscender= true;// 设置可以居中
cell.MinimumHeight=minimumHeight;// 设置单元格高度
cell.HorizontalAlignment=PdfPCell.ALIGN_CENTER;// 设置水平居中
cell.VerticalAlignment=PdfPCell.ALIGN_MIDDLE;// 设置垂直居中if (rowspan!= 0){
cell.Rowspan=rowspan; //行合并}if (colspan!= 0){
cell.Colspan=colspan; //列合并}
table.AddCell(cell);}/// <summary>/// 创建列 插入图片/// </summary>/// <param name="table"></param>/// <param name="image"></param>/// <param name="minimumHeight"></param>/// <param name="colspan"></param>/// <param name="rowspan"></param>public static void CreateCell(PdfPTabletable, Imageimage, intminimumHeight= 3, intcolspan= 0, introwspan= 0){           varcell= new PdfPCell(image,true);// 是否填充
cell.Padding= 5.5f; // 设置二维码在单元格中的边距
cell.UseAscender= true;// 设置可以居中
cell.MinimumHeight=minimumHeight;// 设置单元格高度
cell.HorizontalAlignment=Element.ALIGN_CENTER;// 设置水平居中
cell.VerticalAlignment=Element.ALIGN_MIDDLE;// 设置垂直居中if (rowspan!= 0){
cell.Rowspan=rowspan; //行合并}if (colspan!= 0){
cell.Colspan=colspan; //列合并}
table.AddCell(cell);}    //生成二维码的路径public static string GetQRFileName(){returnPath.Combine(GetOutputFolder(), $"Qr.jpg");}   public static string GetOutputFolder(){vardir=Path.Combine(GetBaseDir(), "bin", "out");if (!Directory.Exists(dir)){
Directory.CreateDirectory(dir);}returndir;}public static string GetOutputFolderPdf(){vardir=Path.Combine(GetBaseDir(), "bin", "outpdf\\");if (!Directory.Exists(dir)){
Directory.CreateDirectory(dir);}returndir;}/// <summary>/// 验证pdf文件/// </summary>/// <param name="file"></param>public static void VerifyPdfFileIsReadable(byte[]file){PdfReaderreader= null;try{
reader= new PdfReader(file);varauthor=reader.Info["Author"] as string;if (string.IsNullOrWhiteSpace(author) || !author.Equals(Author)){throw new InvalidPdfException("This is not a valid PDF file.");}}finally{
reader?.Close();}}public static void VerifyPdfFileIsReadable(stringfilePath){VerifyPdfFileIsReadable(File.ReadAllBytes(filePath));}}

2、Form1.cs 窗体主要代码

/// <summary>
/// 导出生成标签
/// </summary>
/// <returns></returns>
public bool ExportReceipt()
{
try
{// 生成二维码的内容
string strCode = "";
StringBuilder sb = new StringBuilder();
sb.Append(txtName.Text);
sb.Append("$");
sb.Append(txtName.Text);
sb.Append("$");
sb.Append(txtAge.Text);
sb.Append("$");
sb.Append(txtAddress.Text);
sb.Append("$");
sb.Append(txtNation.Text);
sb.Append("$$");
sb.Append(txtQQ.Text);
sb.Append("$");
strCode = sb.ToString();
QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(strCode, QRCodeGenerator.ECCLevel.Q);
QRCode qrcode = new QRCode(qrCodeData);// GetGraphic 第一个参数设置图形的大小
Bitmap qrCodeImage = qrcode.GetGraphic(3, Color.Black, Color.White, null, 15, 1, false);MemoryStream ms = new MemoryStream();
qrCodeImage.Save(ms, ImageFormat.Jpeg);// 保存图片
var ImgPath = PdfUtils.GetQRFileName();
qrCodeImage.Save(ImgPath);// 保存pdf文件
var pdfFilePath = PdfUtils.GetOutputFolderPdf() + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
if (File.Exists(Path.GetFullPath(pdfFilePath)))
{
File.Delete(Path.GetFullPath(pdfFilePath));
}
var fileStream = new FileStream(pdfFilePath, FileMode.Create);
//var pdfDoc = new Document(PageSize.A4);
var pdfDoc = new Document(new iTextSharp.text.Rectangle(226.4f, 169.8f)); // 80*60 mm
var pdfWriter = PdfWriter.GetInstance(pdfDoc, fileStream);
pdfDoc.SetMargins(0.2f, 0.2f, 3.2f, 0.2f);
pdfDoc.AddAuthor(PdfUtils.Author);
pdfDoc.Open();// 中文字体,解决中文不能显示问题
BaseFont bfChinese = BaseFont.CreateFont("C:\\WINDOWS\\FONTS\\SIMSUN.TTC,0", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
// 五号
iTextSharp.text.Font fiveFont = new iTextSharp.text.Font(bfChinese, 8f);   // 五号 10.5f 小三号 15
iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(ImgPath);
// 新建表格 3列.
PdfPTable table0 = new PdfPTable(3)
{
WidthPercentage = 98,// 宽度100%填充,
};
table0.DefaultCell.VerticalAlignment = Element.ALIGN_CENTER;// 设置列宽
float[] columnWidths0 = { 0.4f, 0.8f, 0.8f };
table0.SetWidths(columnWidths0);
//正文第1行
PdfUtils.CreateCell(table0, "姓名", fiveFont);
PdfUtils.CreateCell(table0, txtName.Text, fiveFont);
PdfUtils.CreateCell(table0, image, 30, 0, 5);
PdfUtils.CreateCell(table0, "学历", fiveFont);
PdfUtils.CreateCell(table0, txtEducation.Text, fiveFont);PdfUtils.CreateCell(table0, "年龄", fiveFont);
PdfUtils.CreateCell(table0, txtAge.Text, fiveFont);PdfUtils.CreateCell(table0, "地址", fiveFont);
PdfUtils.CreateCell(table0, txtAddress.Text, fiveFont);PdfUtils.CreateCell(table0, "民族", fiveFont);
PdfUtils.CreateCell(table0, txtNation.Text, fiveFont);PdfUtils.CreateCell(table0, "QQ号", fiveFont);
PdfUtils.CreateCell(table0, txtQQ.Text, fiveFont,0,2);
pdfDoc.Add(table0);
pdfDoc.Close();
fileStream.Dispose();PdfUtils.VerifyPdfFileIsReadable(pdfFilePath);
//直接打开pdf文件System.Diagnostics.Process.Start(pdfFilePath);
return true;
}
catch (Exception ex)
{
return false;
}
}

C#实战:基于ItextSharp技术标签生成小工具相关推荐

  1. 发布一个实体类属性生成小工具,给开发加点料

    做了很久的代码生成工具,基本上都是基于表生成实体类属性的,把数据库表的信息拿出来,然后之乎者也后生成一个标准的实体类,包含字段.属性.描述等东西. 是基于整个数据库生成整个框架代码的工具,如我的代码生 ...

  2. C#:图标生成小工具

    制作APP时经常要制作不同尺寸的图标,制作了一个C#小工具实现一键生成不同尺寸的图标和对应的文件目录 先上图 1.点击生成后弹出目录 2.android端目录结构 3.ios端目录结构 4.下载地址 ...

  3. WordPress标签云小工具详解

    WordPress标签云小工具是WordPress程序自带的一个小工具,它可以在我们的博客侧边栏展示网站的标签列表.今天WordPress小工具详解系列就从WordPress标签云小工具开始.带大家熟 ...

  4. 小程序源码:炫酷手持滚动弹幕生成小工具微信小程序-多玩法安装简单

    这是一款滚动弹幕生成微信小程序源码 让弹幕文字在手机屏幕上跑起来,LED弹幕 手机弹幕,告白神奇,等 支持多种模板,每一种模板都支持自定义颜色等等 字体跳动,字体表白等等 另外用户也可以支持自定义文字 ...

  5. 小程序源码:炫酷手持滚动弹幕生成小工具

    这是一款滚动弹幕生成微信小程序源码 让弹幕文字在手机屏幕上跑起来,LED弹幕 手机弹幕,告白神奇,等 支持多种模板,每一种模板都支持自定义颜色等等 字体跳动,字体表白等等 另外用户也可以支持自定义文字 ...

  6. 微信小程序-炫酷手持滚动弹幕生成小工具

    微信小程序-炫酷手持滚动弹幕生成小工具 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇 ...

  7. 【小程序源码】手持滚动弹幕生成小工具多样化模板

    这是一款滚动弹幕生成微信小程序源码 让弹幕文字在手机屏幕上跑起来,LED弹幕 手机弹幕,告白神奇,等 支持多种模板,每一种模板都支持自定义颜色等等 字体跳动,字体表白等等 另外用户也可以支持自定义文字 ...

  8. 微信小程序:炫酷手持滚动弹幕生成小工具

    这是一款滚动弹幕生成微信小程序源码 让弹幕文字在手机屏幕上跑起来,LED弹幕 手机弹幕,告白神奇,等 支持多种模板,每一种模板都支持自定义颜色等等 字体跳动,字体表白等等 另外用户也可以支持自定义文字 ...

  9. PyTorch 深度学习实战 | 基于生成式对抗网络生成动漫人物

    生成式对抗网络(Generative Adversarial Network, GAN)是近些年计算机视觉领域非常常见的一类方法,其强大的从已有数据集中生成新数据的能力令人惊叹,甚至连人眼都无法进行分 ...

最新文章

  1. 回车的ascii码_ASCII码表
  2. pep8 python 编码规范_Python合集之Python语法特点(三)
  3. listen()和accept()函数:让套接字进入监听状态并响应客户端请求
  4. JS-copy到剪贴板
  5. 通过Serverless技术降低微服务应用资源成本
  6. centos 编译nginx php mariadb,centos7安装nginx+mariadb+php-fpm
  7. nexttick使用场景_Vue -- nextTick
  8. 大神演示win10系统语音识别应用的详细教程
  9. 传智播客 C/C++学习笔记 二级指针作为输出参数以及空间的释放
  10. struts2 传递json对象时的延迟加载异常处理方法
  11. 计算机应用基础试题及答案电大百度云,电大计算机应用基础试题及答案
  12. HTML跳转到QQ聊天界面
  13. SpringBoot项目中注解的含义
  14. 学籍管理系统制作教程第一天
  15. mysql修改时区为utc
  16. 文件和文件夹的操作——文件夹的操作
  17. Spring解析加密配置文件
  18. github东西无法下载_下载GitHub上文件的两种方法
  19. 硬件知识 网线传输原理
  20. 如何让arduino中的loop和Processing中的draw停下来

热门文章

  1. 捧起同声传译圣杯的AI:向人类偷师、与人类共事
  2. 备战金九银十!【Java 面试小抄】涵盖当下最时新热门技术点,学完 offer 得拿到手软~
  3. 人工智能和人类智能的本质区别是什么?
  4. 2020自行车哪些品牌好全世界十大顶级碳纤维自行车品牌排行榜
  5. 服务器如何解压zip文件,ECS Linux 服务器解压zip格式文件操作方法
  6. 基于STM32的正弦波上下变频
  7. 服务器s4系列固态,Cloudxy
  8. mysql动态传参实例
  9. 在DJango中session的使用方法
  10. signature=e260e08d0d5973d18c37cc596c51cae8,女性の橈骨遠位端骨折に対する手術成績