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);
        }
    }
}

  

posted @ 2025-11-06 20:31  blog_momo  阅读(9)  评论(0)    收藏  举报