在 c# 中比较两个 pdf 文件的最佳方法是啥?

     2023-02-22     295

关键词:

【中文标题】在 c# 中比较两个 pdf 文件的最佳方法是啥?【英文标题】:What is the best way of comparing two pdf file in c#?在 c# 中比较两个 pdf 文件的最佳方法是什么? 【发布时间】:2011-05-21 14:36:37 【问题描述】:

我想在 C# 中检查两个 PDF 文件的文本内容。

【问题讨论】:

如何比较它们?看他们是一样的吗?找出差异?还有什么? 【参考方案1】:

如果它们相同,您可以进行二进制比较。如果要进行上下文比较,您可能需要一个 PDF 库。 Here 是一些库。

【讨论】:

【参考方案2】:

这并不容易,但我想第一步是获得一个可以从 PDF 中提取文本的体面的 PDF 库。我使用的一个是 ITextSharp,可从http://itextpdf.com/(开源)获得。然后尝试一个差异库,例如DIffer: a reusable C# diffing utility and class library。祝你好运!

【讨论】:

【参考方案3】:

已经有一段时间了,但这个功能对我有用(但不能保证......我不记得我是否在带有嵌入图像或任何东西的 PDF 上尝试过)。文件中嵌入了 GUID 或某种 ID,您只需将其删除并比较其他所有内容。代码如下:

    static bool ComparePDFs(string file1, string file2)
    
        if (!File.Exists(file2))
            return false;

        int i;
        string f1 = File.ReadAllText(file1);
        string f2 = File.ReadAllText(file2);

        if (f1.Length != f2.Length)
            return false;

        // Remove PDF ID from file1
        i = f1.LastIndexOf("/ID [<");
        if (i < 0)
            Console.WriteLine("Error: File is not a valid PDF file: " + file1);
        else
            f1 = f1.Substring(0, i) + f1.Substring(i + 75);

        // Remove PDF ID from file2
        i = f2.LastIndexOf("/ID [<");
        if (i < 0)
            Console.WriteLine("Error: File is not a valid PDF file: " + file2);
        else
            f2 = f2.Substring(0, i) + f2.Substring(i + 75);

        return f1 == f2;
    

【讨论】:

【参考方案4】:

免责声明:我为 Atalasoft 工作。

Atalasoft 的DotImage SDK 可用于从 C# 中的 PDF 中提取文本。如果 PDF 已经可以搜索,您可以轻松找到文本:

public String GetText(Stream s, int pageNum, int charIndex, int count)

   using (PdfTextDocument doc = new PdfTextDocument(s))
   
       PdfTextPage textPage = doc.GetPage(pageNum);                    
       return textPage.GetText(charIndex, count);
   

否则,您可以使用 OCR 工具来检测图像上的文字。

【讨论】:

在 C# 中解析 html 的最佳方法是啥? [关闭]

.../方法来解析具有比通用xml解析库更多的html特定功能的html文件。【问题讨论】:【参考方案1】:HtmlAgilityPack这是一个敏捷的HTML解析器,它构建一个读 查看详情

在 C# 中解析 html 的最佳方法是啥? [关闭]

.../方法来解析具有比通用xml解析库更多的html特定功能的html文件。【问题讨论】:【参考方案1】:您可以使用HTMLDTD和通用XML解析库。【讨论】:很少有真实世界的H 查看详情

在 c# 中处理全局热键的最佳方法是啥? [复制]

】在c#中处理全局热键的最佳方法是啥?[复制]【英文标题】:Bestwaytotackleglobalhotkeyprocessinginc#?[duplicate]在c#中处理全局热键的最佳方法是什么?[复制]【发布时间】:2010-09-1000:24:33【问题描述】:可能重复:HowcanIregisteraglobalhotkeyt... 查看详情

在 C# 中解析大型 XML(大小为 1GB)的最佳方法是啥?

...布时间】:2010-10-0221:47:23【问题描述】:我有一个1GB的XML文件并且想要解析它。如果我使用XMLTextreader或XMLDocument,结果会很慢,有时会挂起...【问题讨论】:那个无耻插 查看详情

c# 在 c# 应用程序中保存配置数据的最佳方法是啥。 [复制]

】c#在c#应用程序中保存配置数据的最佳方法是啥。[复制]【英文标题】:c#whatisthebestwaytosaveconfigurationdatainc#application.[duplicate]c#在c#应用程序中保存配置数据的最佳方法是什么。[复制]【发布时间】:2016-03-1806:09:25【问题描述】:... 查看详情

在 C# 中比较两个图像的算法

】在C#中比较两个图像的算法【英文标题】:AlgorithmtocomparetwoimagesinC#【发布时间】:2016-05-1102:47:30【问题描述】:我正在用C#编写一个工具来查找重复图像。目前我创建文件的MD5校验和并比较它们。不幸的是,图像可能是:旋转... 查看详情

比较两个 NSArray 并检测更改的最佳方法是啥

】比较两个NSArray并检测更改的最佳方法是啥【英文标题】:WhatisthebestwaytocomparetwoNSArraysanddetectchanges比较两个NSArray并检测更改的最佳方法是什么【发布时间】:2015-09-1903:46:44【问题描述】:我的要求是确定地址簿中的更改(自上... 查看详情

使用 C# 从 ASP.Net MVC 中的视频文件中获取视频元数据的最佳方法是啥?

】使用C#从ASP.NetMVC中的视频文件中获取视频元数据的最佳方法是啥?【英文标题】:What\'sthebestwaytogetvideometadatafromavideofileinASP.NetMVCusingC#?使用C#从ASP.NetMVC中的视频文件中获取视频元数据的最佳方法是什么?【发布时间】:2014-11-2... 查看详情

在 Visual Studio 中为 C# 更新 App.Config 文件的最佳方法是啥? [复制]

】在VisualStudio中为C#更新App.Config文件的最佳方法是啥?[复制]【英文标题】:WhatisthebestwaytoupdateanApp.ConfigfileforC#inVisualStudio?[duplicate]在VisualStudio中为C#更新App.Config文件的最佳方法是什么?[复制]【发布时间】:2020-03-1719:42:03【问题... 查看详情

在 C# 代码中解析(大)XML 的最佳方法是啥?

】在C#代码中解析(大)XML的最佳方法是啥?【英文标题】:Whatisthebestwaytoparse(big)XMLinC#Code?在C#代码中解析(大)XML的最佳方法是什么?【发布时间】:2010-10-1503:30:05【问题描述】:我正在用C#编写一个GIS客户端工具,以从服务... 查看详情

从 pdf 文件导入/读取数据的最佳方法是啥?

】从pdf文件导入/读取数据的最佳方法是啥?【英文标题】:What\'sthebestwaytoimport/readdatafrompdffiles?从pdf文件导入/读取数据的最佳方法是什么?【发布时间】:2010-09-0617:38:33【问题描述】:我们从客户那里以不同格式[布局方式]的pdf... 查看详情

比较具有相同数据但标记不同的两个 HTML 页面的最佳方法是啥

】比较具有相同数据但标记不同的两个HTML页面的最佳方法是啥【英文标题】:WhatisthebestwaytocomparetwoHTMLpageswithsamedatabutdifferentmarkup比较具有相同数据但标记不同的两个HTML页面的最佳方法是什么【发布时间】:2020-08-0500:38:07【问题... 查看详情

从 .CSV 文件比较/插入/更新 MySQL 数据库中的产品的最佳方法是啥

】从.CSV文件比较/插入/更新MySQL数据库中的产品的最佳方法是啥【英文标题】:What\'sthebestwaytocompare/insert/updateproductsinaMySQLdbfroma.CSVfile从.CSV文件比较/插入/更新MySQL数据库中的产品的最佳方法是什么【发布时间】:2015-06-2708:33:38【... 查看详情

在 Delphi 中播放视频文件的最佳方法是啥?

...oLab组件,您应该接受Serge的回答。嗯,我想我应该接受这两个答案(因为 查看详情

比较两个 CultureInfo 实例的最佳方法是啥?

】比较两个CultureInfo实例的最佳方法是啥?【英文标题】:WhatisthebestwaytocomparetwoCultureInfoinstances?比较两个CultureInfo实例的最佳方法是什么?【发布时间】:2014-06-2515:41:07【问题描述】:背景:我有一个组件的问题,每次调用它的... 查看详情

在 C# 字符串中的 HTML 中搜索特定文本并标记文本的最佳方法是啥?

】在C#字符串中的HTML中搜索特定文本并标记文本的最佳方法是啥?【英文标题】:WhatisthebestwaytosearchthroughHTMLinaC#stringforspecifictextandmarkthetext?在C#字符串中的HTML中搜索特定文本并标记文本的最佳方法是什么?【发布时间】:2010-10-... 查看详情

使用 C# 和 SQL 解决 datagridview 中重复条目的最佳方法是啥?

】使用C#和SQL解决datagridview中重复条目的最佳方法是啥?【英文标题】:WhatisthebestwaytoaccountforduplicateentriesindatagridviewwithC#andSQL?使用C#和SQL解决datagridview中重复条目的最佳方法是什么?【发布时间】:2021-05-0412:46:34【问题描述】:... 查看详情

客户端应用程序在 C# 中查找本地网络上的服务器的最佳方法是啥?

】客户端应用程序在C#中查找本地网络上的服务器的最佳方法是啥?【英文标题】:WhatisthebestwayforaclientapptofindaserveronalocalnetworkinC#?客户端应用程序在C#中查找本地网络上的服务器的最佳方法是什么?【发布时间】:2010-09-1715:34:42... 查看详情