UiPath Documentation
activities
latest
false
重要 :
请注意,此内容已使用机器翻译进行了部分本地化。 新发布内容的本地化可能需要 1-2 周的时间才能完成。
UiPath logo, featuring letters U and I in white

工作流活动

上次更新日期 2026年4月16日

比较 PDF 文档

使用多个比较选项(包括以下比较类型)验证两个文档是否等效:

  • 比较字词。
  • 比较行。
  • 将字符作为char变量进行比较。
    备注:

    支持的文档类型为PDF

定义

命名空间: UiPath.Testing.API

程序集: UiPath.Testing.Activities.Api(在 UiPath.Testing.Activities.Api.dll 中)

ComparePdfDocuments(string, string, ComparisonType, CompareDocumentsOptions)

ComparisonResult ComparePdfDocuments(
    string baselinePath,
    string targetPath,
    [ComparisonType comparisonType],
    [CompareDocumentsOptions opts])
ComparisonResult ComparePdfDocuments(
    string baselinePath,
    string targetPath,
    [ComparisonType comparisonType],
    [CompareDocumentsOptions opts])

baselinePath String :用作比较参考的基本文档的路径。

targetPath String :与基本文档进行比较的文档路径。

comparisonType ComparisonType (可选):比较文档时使用的比较类型。可选择以下选项:

  • ComparisonType.Char:比较文档中的每个字符 (char)。
  • ComparisonType.Line:比较文档中的每一行。
  • ComparisonType.Word:比较文档中的每个单词。

opts比较文档选项:应用于此操作的特定比较选项。要创建CompareDocumentsOptions类型的对象,请使用TestingOptions.CompareDocuments 类

返回值

ComparisonResult

比较操作的结果,存储在 ComparisonResult 变量中。

示例

1. 按字符比较 PDF :

在此示例中,我们将比较两个 PDF 文件,即电费单和水费单。比较在字符级别完成。firstBillsecondBill变量表示这些 PDF 文件的路径。与WithIgnoreWildcardRuleWithIgnoreRegexRule方法一起提供的通配符规则和正则表达式规则用于忽略比较中的特定模式。例如,通配符规则2022和正则表达式规则\d{1,2}/\d{1,2}/\d{4}会忽略日期,假设在比较中它们采用 MM/DD/YYYY 格式,因为它们在两个单独的账单中可能有所不同,并且与结构无关的账单。

完成比较后, WithGenerateHtml方法将创建比较的 HTML 报告,并使用Log方法将找到的任何差异记录在日志中。

var firstBill = @"C:\bills\2024.10\pdfs for compare\electricity_bill.pdf";
var secondBill = @"C:\bills\2024.10\pdfs for compare\water_bill.pdf";

var identicalCharCompareResult = testing.VerifyDocumentsEquivalence(
    firstBill, secondBill, 
    ComparisonType.Character, 
    TestingOptions.CompareDocuments()
        .WithGenerateHtml(@".\HtmlCompareResults\PDFCharCompare.html")
        .WithIgnoreWildcardRule("WildcardRule", "*2022*", true)
        .WithIgnoreRegexRule("RegexRule", @"\d{1,2}/\d{1,2}/\d{4}", true)
);

Log("pdf compare by char " + identicalCharCompareResult.AreEquivalent.ToString(),LogLevel.Error);
var firstBill = @"C:\bills\2024.10\pdfs for compare\electricity_bill.pdf";
var secondBill = @"C:\bills\2024.10\pdfs for compare\water_bill.pdf";

var identicalCharCompareResult = testing.VerifyDocumentsEquivalence(
    firstBill, secondBill, 
    ComparisonType.Character, 
    TestingOptions.CompareDocuments()
        .WithGenerateHtml(@".\HtmlCompareResults\PDFCharCompare.html")
        .WithIgnoreWildcardRule("WildcardRule", "*2022*", true)
        .WithIgnoreRegexRule("RegexRule", @"\d{1,2}/\d{1,2}/\d{4}", true)
);

Log("pdf compare by char " + identicalCharCompareResult.AreEquivalent.ToString(),LogLevel.Error);

2. 按单词比较 PDF :

在本示例中,我们将比较与上一个示例中相同的 PDF 文件:电费账单和水费账单。比较在词级别完成。firstBillsecondBill变量表示这些 PDF 文件的路径。与WithIgnoreWildcardRuleWithIgnoreRegexRule方法一起提供的通配符规则和正则表达式规则用于忽略比较中的特定模式。例如,通配符规则2022会假设日期在比较中采用 MM/DD/YYYY 格式,因为它们可能在两个单独的账单中有所不同,并且与账单的结构无关。正则表达式规则[$]\d+\.\d{2}会忽略货币值,假设货币值的格式类似于$XX.XX

完成比较后, WithGenerateHtml方法将创建比较的 HTML 报告,并使用Log方法将找到的任何差异记录在日志中。

var firstBill = @"C:\bills\2024.10\pdfs for compare\electricity_bill.pdf";
var secondBill = @"C:\bills\2024.10\pdfs for compare\water_bill.pdf";

var differentWordCompareResult = testing.VerifyDocumentsEquivalence(
    firstBill, secondBill, 
    ComparisonType.Word, 
    TestingOptions.CompareDocuments()
        .WithGenerateHtml(@".\HtmlCompareResults\PDFWordCompareDiff.html")
        .WithIgnoreWildcardRule("WildcardRule", "*2022*", true)
        .WithIgnoreRegexRule("RegexRule", @"[$]\d+\.\d{2}", true)
);

Log("pdf compare by Word " + differentWordCompareResult.AreEquivalent.ToString(), LogLevel.Error);
var firstBill = @"C:\bills\2024.10\pdfs for compare\electricity_bill.pdf";
var secondBill = @"C:\bills\2024.10\pdfs for compare\water_bill.pdf";

var differentWordCompareResult = testing.VerifyDocumentsEquivalence(
    firstBill, secondBill, 
    ComparisonType.Word, 
    TestingOptions.CompareDocuments()
        .WithGenerateHtml(@".\HtmlCompareResults\PDFWordCompareDiff.html")
        .WithIgnoreWildcardRule("WildcardRule", "*2022*", true)
        .WithIgnoreRegexRule("RegexRule", @"[$]\d+\.\d{2}", true)
);

Log("pdf compare by Word " + differentWordCompareResult.AreEquivalent.ToString(), LogLevel.Error);

3. 按行比较 PDF

在此示例中,与上一个示例类似,我们将比较两个 PDF 文件,即电费单和水费单。在这种情况下,比较是在行级别完成的。firstBillsecondBill变量表示这些 PDF 文件的路径。与WithIgnoreWildcardRuleWithIgnoreRegexRule方法一起提供的通配符规则和正则表达式规则用于忽略比较中的特定模式。

例如,通配符规则 2022 会在比较中忽略日期(假设其格式为 MM/DD/YYYY),因为它们在两个单独的账单中可能有所不同,并且与账单的结构无关。正则表达式规则 [$]\d+\.\d{2} 假定货币值的格式类似于 $XX.XX,会忽略货币值。

完成比较后, WithGenerateHtml方法将创建比较的 HTML 报告,并使用Log方法将找到的任何差异记录在日志中。

var firstBill = @"C:\bills\2024.10\pdfs for compare\electricity_bill.pdf";
var secondBill = @"C:\bills\2024.10\pdfs for compare\water_bill.pdf";

var largeLineCompareResult = testing.VerifyDocumentsEquivalence(
    firstBill, secondBill, 
    ComparisonType.Line, 
    TestingOptions.CompareDocuments()
        .WithGeneratePdf(@".\PDFCompareResults",@".\PDFCompareResults")
        .WithIgnoreWildcardRule("WildcardRule", "*2022*", true)
        .WithIgnoreRegexRule("RegexRule", @"[$]\d+\.\d{2}", true)
);

Log("Pdf compare by line " + largeLineCompareResult.AreEquivalent.ToString(), LogLevel.Error);
var firstBill = @"C:\bills\2024.10\pdfs for compare\electricity_bill.pdf";
var secondBill = @"C:\bills\2024.10\pdfs for compare\water_bill.pdf";

var largeLineCompareResult = testing.VerifyDocumentsEquivalence(
    firstBill, secondBill, 
    ComparisonType.Line, 
    TestingOptions.CompareDocuments()
        .WithGeneratePdf(@".\PDFCompareResults",@".\PDFCompareResults")
        .WithIgnoreWildcardRule("WildcardRule", "*2022*", true)
        .WithIgnoreRegexRule("RegexRule", @"[$]\d+\.\d{2}", true)
);

Log("Pdf compare by line " + largeLineCompareResult.AreEquivalent.ToString(), LogLevel.Error);

在所有示例中,AreEquivalent 属性都会返回文档是否相等的信息。

此页面有帮助吗?

连接

需要帮助? 支持

想要了解详细内容? UiPath Academy

有问题? UiPath 论坛

保持更新