当前位置: 首页 > news >正文

aspose-pdf 修改pdf文件备忘录

public class PatchedLicense
{public static DateTime NewParseExact(string s, string format, IFormatProvider provider){return new DateTime(2099, 12, 30);}public static void Run(){MethodHookManager.Instance.AddHook(new MethodHook(typeof(DateTime).GetMethod(nameof(DateTime.ParseExact), BindingFlags.Static | BindingFlags.Public, null, new[] { typeof(string), typeof(string), typeof(IFormatProvider) }, null),typeof(PatchedLicense).GetMethod(nameof(NewParseExact), BindingFlags.Static | BindingFlags.Public, null, new[] { typeof(string), typeof(string), typeof(IFormatProvider) }, null)));MethodHookManager.Instance.StartHook();ActiveAspose();MethodHookManager.Instance.StopHook();}private static void ActiveAspose(){var licenseText = @"<License><Data><LicensedTo>KMD A/S</LicensedTo><EmailTo>iit-software@kmd.dk</EmailTo><LicenseType>Site OEM</LicenseType><LicenseNote>Up To 10 Developers And Unlimited Deployment Locations</LicenseNote><OrderID>220815085749</OrderID><UserID>324045</UserID><OEM>This is a redistributable license</OEM><Products><Product>Aspose.Total for .NET</Product></Products><EditionType>Enterprise</EditionType><SerialNumber>acea5afd-3c7d-4052-8991-f1e8522f63b4</SerialNumber><SubscriptionExpiry>20230818</SubscriptionExpiry><LicenseVersion>3.0</LicenseVersion><LicenseInstructions>https://purchase.aspose.com/policies/use-license</LicenseInstructions></Data><Signature>d6CNxPzdmeo0I8EJmarUMRizSisbxluOwz5BdYKprWEyJbqjvs93//lCgP0tNzxIzvniD9T7PefYeEtlkQoVKV9fo3pdjfh2QrWFxJZuRby9yzfTqK7Ahghj81URDTpneve+RAL3Z63bwkCNH0anWR0Z1I6Bdug5L8QZpduoS5k=</Signature></License>";var stream = new MemoryStream(Encoding.UTF8.GetBytes(licenseText));var license = new Aspose.Pdf.License();license.SetLicense(stream);}
}

  

public class PdfTools
{public static void Resolve(){// 输入与输出路径string inputPath = @"E:\zhaxg.pdf";string outputPath = @"E:\zhaxg_out.pdf";// 打开 PDF 文档using (var document = new Document(inputPath)){// 创建文本吸收器,查找目标文字var oldText = "河北99贸易有限公司";var absorber = new TextFragmentAbsorber(oldText);// 设置搜索选项(不区分大小写、全局搜索)absorber.TextSearchOptions = new TextSearchOptions(true);// 扫描所有页面document.Pages.Accept(absorber);// 获取搜索到的文字片段集合var fragments = absorber.TextFragments;Console.WriteLine($"找到 {fragments.Count} 个匹配项。");// 遍历每个匹配片段并替换foreach (TextFragment fragment in fragments){fragment.Text = "北京99软件技术有限公司";}// 搜索图片var img_absorber = new Aspose.Pdf.ImagePlacementAbsorber();document.Pages.Accept(img_absorber);var image = img_absorber.ImagePlacements.FirstOrDefault(x => x.Image.Height == 250);// 删除原来的二维码document.Pages[1].Resources.Images.Delete(((Aspose.Pdf.Operators.Do)image.Operator).Name);// 生成新的二维码var qrText = "https://www.baidu.com/";var qrGenerator = new QRCodeGenerator();var qrCodeData = qrGenerator.CreateQrCode(qrText, QRCodeGenerator.ECCLevel.Q);// 使用 PngByteQRCode 生成 PNG 字节数组var qrCode = new PngByteQRCode(qrCodeData);var qrBytes = qrCode.GetGraphic(pixelsPerModule: 2,darkColor: System.Drawing.Color.Black,lightColor: System.Drawing.Color.White);File.WriteAllBytes(@"E:\zhaxg.png", qrBytes);using var qrStream = new MemoryStream(qrBytes);document.Pages[1].AddImage(qrStream, image.Rectangle, 250, 250, true);// 保存结果document.Save(outputPath);Console.WriteLine("替换完成,文件已保存到: " + outputPath);}}
}

  

http://www.jsqmd.com/news/33518/

相关文章:

  • 函数名与函数地址的关系(函数指针)
  • 第28节:网络同步与多人在线3D场景 - 详解
  • 别再选错!5分钟掌握AI Agent框架选型的方法
  • 完整教程:【Qt MOC预处理器解读与使用指南】
  • Linux - 7 磁盘管理篇
  • java word转 pdf
  • 11-05 题
  • Markdown之Typora语法
  • 运维审计/堡垒机选型 2025:从 SSH 直连|堡垒机绕行的可见性到“命令+返回文本”的内容级证据
  • [题解]P12025 [USACO25OPEN] Sequence Construction S
  • 【日记】我居然解决了三家运营商都没解决的问题(539 字)
  • 深入解析:Jackson 入门:为什么它是 Java JSON 处理的首选?
  • 大模型在流行性乙型脑炎极重型预测及个体化诊疗专业的方案中的应用研究
  • markdown入门(复盘)
  • 卡尔算法哈希表
  • Rust 之二 各组件工具的源码、构建、配置、使用 - 教程
  • java第三天
  • 新东方听力day2
  • P9596 [JOI Open 2018] 冒泡排序 2 做题记录
  • 超级管理员目录索引的Google搜索技巧
  • 被称作永恒之物 在交替更迭中徒劳地缝补 被称作易逝之物 书写了十四行啼哭
  • 无限欢愉 深入推进 我沦陷在那片故地 我渴饮着 你的呼吸 却得不到 你的心
  • 【学术】数论分块保姆级教程
  • 基础架构
  • 2025数据库审计产品选型指南:十大厂商综合评测与趋势解析
  • Word表格1.5倍行距居中问题
  • 详细介绍:后端_Redis 分布式锁实现指南
  • 构建AI智能体:五十七、LangGraph + Gradio:构建可视化AI工作流的趣味指南 - 教程
  • 日总结 23
  • 详细介绍:基于Echarts+HTML5可视化数据大屏展示-车辆综合管控平台