svg矢量二维码加盖在PDF文件中
正常行驶的bitmap类型的二维码格式,加载到PDF中,将会导致二维码失真,无法扫描。
矢量图可根据尺寸大小进行调节,不会出现失真模糊情况
所用依赖
<PackageReference Include="FreeSpire.PDF" Version="8.6.0" />//操作PDF依赖
<PackageReference Include="QRCoder" Version="1.4.3" />//生成二维码SVG依赖
//以下为代码说明
#region 生成svg格式的矢量二维码
public static string GetSvgQRCode(string plainText, int pixel)
{
var generator = new QRCodeGenerator();
var qrCodeData = generator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q);
var qrcode = new SvgQRCode(qrCodeData);
return qrcode.GetGraphic(pixel);
}
#endregion
#region
public IActionResult GetSvgQRPic()
{
var svgText = QRCodeService.GetSvgQRCode("http://www.baidu.com", 15); string svgName = $"{Guid.NewGuid().ToString()}.svg";
string filePath = "E:\\ZGQM\\QRCODE\\"+ svgName;
System.IO.File.WriteAllText(filePath, svgText);
byte[] byts = System.IO.File.ReadAllBytes(filePath);
return File(byts, "image/svg", svgName);
}
public IActionResult SvgTOPdf()
{
string pdfname = "shuangcengSingle.pdf";
string rootPath = "E:\\ZGQM\\QRCODE\\";
//加载示例SVG图片
PdfDocument doc1 = new PdfDocument();
doc1.LoadFromSvg(rootPath + "a2.svg");
//加载示例PDF文档
PdfDocument doc2 = new PdfDocument();
doc2.LoadFromFile(rootPath + pdfname);
//设置图片在文档中的位置和大小59
var pdfwidth = doc2.Pages[0].Size.Width;
var pdfheight = doc2.Pages[0].Size.Height;
//计算两厘米二维码的磅值
double zb = 0;
if(pdfwidth<=pdfheight)
zb = 20 / (pdfwidth * 25.4 / 72);
else
zb = 20/ (pdfheight * 25.4 / 72);
double twocodezb = zb * (pdfwidth<= pdfheight?pdfwidth:pdfheight);
int twotruecode = Convert.ToInt32(Math.Round(twocodezb));
var doctemp = doc1.Pages[0].CreateTemplate();
var p2 = new System.Drawing.PointF(0, 0);
var di = new System.Drawing.SizeF(twotruecode, twotruecode);
PdfCanvas d2z = doc2.Pages[0].Canvas;
d2z.DrawTemplate(doctemp, p2, di);
//保存PDF文档
doc2.SaveToFile(rootPath + "AddSVGImagetoPDF-"+pdfname+".pdf", FileFormat.PDF);
doc1.Close();
doc2.Close();
return null;
}
#endregion
以上可实现将矢量图进行绑定到PDF中,并且保证不失真。
参考部分连接
https://www.e-iceblue.cn/pdf_java_conversion/convert-svg-to-pdf-and-add-a-svg-image-to-pdf-in-java.html
https://cloud.tencent.com/developer/article/1518580?from=15425&areaSource=102001.24&traceId=X5ThA0l7o2dpqbZKzQB2_
svg矢量二维码加盖在PDF文件中的更多相关文章
- 微信长按识别二维码,在 vue 项目中的实现
微信长按识别二维码是 QQ 浏览器的内置功能,该功能的基础一定要使用 img 标签引入图片,其他方式的二维码无法识别. 在 vue 中使用 QrcodeVue 插件 demo1 在 template ...
- 钉钉登录二维码嵌套在vue页面中
转自 https://www.csdn.net/tags/OtDacg3sMjQ2NTgtYmxvZwO0O0OO0O0O.html 钉钉登录二维码嵌套在vue页面中 2021-09-04 14:42 ...
- C#生成二维码,把二维码图片放入Excel中
/// <summary> /// 把图片保存到excel中 /// </summary> /// <param name="excelFilePath&quo ...
- 基于nginx实现二维码下载安装apk文件
将apk文件置于nginx目录下 <!--进入nginx安装路径--> /usr/local/nginx <!--新建放apk的目录--> mkdir -p resources ...
- Java 添加条码、二维码到PDF文档
本文介绍如何通过Java程序在PDF文档中添加条码和二维码.创建条码时,可创建多种不同类型的条码,包括Codebar.Code11.Code128A.Code128B.Code32.Code39.Co ...
- Asp.Net Core 生成二维码(NuGet使用QRCoder)
前言 功能:调用web api 接口 1.获取 jpeg 格式的二维码 2.获取中间带有logo 的二维码 3. 下载 jpeg,svg 格式的二维码 需要的NuGet 包: > QRCoder ...
- 【C#】发票助手二维码生成
之前一起吃饭听说了发票助手这个东西,可以生成发票抬头的二维码,扫码就可以开票了. 官方也有个小程序的 [税务发票助手],微信中搜这个名字就可以了. 我准备在自己的小程序中也尝试一下,本来觉得只要拼接一 ...
- C#/VB.NET 在Word中添加条码、二维码
本文介绍如何通过C# 和VB.NET代码实现在Word文档中添加条码和二维码.代码中将分为在Word正文段落中.页眉页脚中等情况来添加. 使用工具:Free Spire.Office for .NET ...
- C#运用GmaQrCode生成二维码
项目中需要生成二维码,方法比较多,可以采用JS插件,也可以采用第三方插件后台生成二维码,在后台方法中可以采用QRCode或者GmaQrCode,现在介绍一种C#在后台生成二维码的方法: /// < ...
- phpqrcode 生成二维码
这个项目需要根据信息来自动生成二维码,到网上搜了下,发现php有生成二维码的类库phpqrcode,所以打算就用这个来生成二维码 从官网下载类库源码http://sourceforge.net/pro ...
随机推荐
- Mac 启动转换助理 安装 win10
Mac 启动转换助理 安装 win10 Mac的处理器 是Inter芯 才有该功能 打开启动转换助理/Bootcamp 设置分区大小 win10安装完成后 在左侧的此电脑中找到咱们的Boot Camp ...
- 尝试在virtualbox虚拟机中fedora30中实现文件夹共享
$ sudo dnf install gcc kernel-devel kernel-headers dkms make bzip2 perl $ rpm -qa|grep kernel|sort 确 ...
- 实验1task1
<实验结论> #include <stdio.h> #include <stdlib.h> int main() { printf(" O \n&qu ...
- C++快速求解最大公因数 | gcd库函数
1.介绍 gcd全称 :greatest common divisor 使用 __gcd( int x1, int x2 ) 函数可以高效.迅速得到x1, x2两个数的最大公因数.省去手写底层代码,专 ...
- jmeter中监听器及测试结果分析
- Mac上安装Python并配置环境变量
1.下载安装包. 官网下载地址: Download Python | Python.org 2.安装 直接双击安装包,按照默认提示步骤进行安装就行. 3.配置 python 和 pip 命令环境变量 ...
- js 浮点数加、减、乘、除。
1.浮点数加法运算 function numAdd(arg1, arg2) { var r1, r2, m; try { r1 = arg1.toString().split("." ...
- docker nginx 配置
1.下载镜像 docker pull nginx2宿主机器建立目录/docker/nginx/conf.d 这个目录下面新建 default.conf upstream tomcat77{ serve ...
- h5项目
h5项目,用vue3,用vite搭建就好,是一个新的项目. 接口还在开发,可以用mock模拟. 现有信息:接口url,ui-url,原型url(各部分的交互关系)
- HDLbits——Rotate100
verilog代码: // Build a 100-bit left/right rotator, with synchronous load and left/right enable. //A r ...