Description
The File
object for which you call this method corresponds to an item in the Stores > Files collection of your project. You use this method to compare the file with another PDF file or to update the stored file with data of the specified PDF file. The mode, in which the method functions, depends on TestComplete’s settings:
-
Comparison mode (default)
This mode is used by default. The
File
object corresponds to a file stored in the Stores > Files collection of your project. The method compares the file with textual data of another PDF file, which you specify in the method parameter.To recognize the text, the method first sends the PDF file to the ocr.api.dev.smartbear.com web service running on the SmartBear website. This service forwards the file to Google Vision API and transfers the recognized text back to TestComplete.
After that, the method compares the two files byte by byte and reports the result. You can use the AllowedDifference parameter to specify acceptable variations between the compared files, if needed. See the parameter description below.
Note that you can use a third-party Diff utility for comparison. You set it in the Tools > Options > Engines > Stores dialog:
In this case, the method will extract text data from the specified PDF file and then pass it for comparison to the specified utility.
-
In this mode, the
ConvertToText(…)
method replaces the contents of the Stores > Files item with the text of the specified PDF file.To enable this mode, do the following:
-
Open the Tools > Options dialog box and select the Engines > Stores > Update files check box there,
– and –
-
Open the Stores > Files collection for editing and select the Update check box for the item that matches the
File
object.
-
Requirements
-
Your TestComplete version must be 14.20 or later.
-
Your computer must have access to the ocr.api.dev.smartbear.com web service.
If you have firewalls or proxies running in your network, they should allow your computer to access the web service. This web service is used to recognize the text content of PDF files.
-
Your firewall must allow traffic through port 443.
-
You need an active license for the TestComplete Intelligent Quality add-on.
-
The Intelligent Quality add-on must be enabled in TestComplete.
You can enable the add-on during TestComplete installation. If you did not enable the add-on during the installation, you can do this at any moment later via the File > Install Extensions dialog. Select File > Install Extensions from the TestComplete main menu and enable the Intelligent Quality > Intelligent Quality Core plugin in the resulting dialog.
-
PDF to Text support must be enabled in TestComplete.
By default, it is enabled automatically if you enable the Intelligent Quality add-on during TestComplete installation.
If you experience issues with PDF support in your tests, select File > Install Extensions from the TestComplete main menu and make sure the PDF to Text plugin is enabled (you can find it in the Intelligent Quality group). If the plugin is disabled, enable it. In the confirmation message, click the link to read a third-party license agreement. If you agree to the license terms, click Enable OCR.
Declaration
FileObj.CheckPDFText(FileName, AllowedDifference)
FileObj | An expression, variable or parameter that specifies a reference to a File object | |||
FileName | [in] | Required | String | |
AllowedDifference | [in] | Optional | Integer | Default value: 0 |
Result | Boolean |
Applies To
The method is applied to the following object:
Parameters
The method has the following parameters:
FileName
Specifies the fully-qualified name of the PDF file to be used for comparison or for update.
AllowedDifference
Specifies the allowed difference, in bytes, between the text contents of the compared PDF files. You can use this parameter to hide minor differences between the files. If the number of bytes that differ is less than or equal to the parameter value, the method will report the files as equal. 0
means the files must be identical. See also File Checkpoints and How File Verification Works.
Do not obtain the difference value every time you are going to perform file comparison. You should calculate the difference once, and then use this value for future comparison. Otherwise, if you calculate the difference value right before performing comparison and then use it in the CheckPDFText
method, the comparison will always be successful even if the compared files are different.
If the method works in the update mode, or if you use a third-party Diff utility for comparison, the parameter is ignored.
Result Value
In the update mode, the method always returns True.
In the comparison mode, if the method determines the files are equal, it returns True and posts a checkpoint message () to the test log.
Otherwise, the method returns False and posts an error message (). It also posts the "checkpoint failed" message and a detailed comparison report. The Details panel of the message shows the comparison summary. You can also click the Details link in the Link column of the message to open the File Comparison Result report that shows the difference between the baseline and the compared text content.
If you use a third-party Diff utility for file comparison, the method will also post a reference to the comparison report generated by the utility.
Remarks
By default, if the CheckPDFText
method cannot find or access the PDF file to be compared, or the PDF file does not match its baseline copy, the method will wait for the PDF file to become accessible and for the comparison to complete successfully for the period the Tools > Current Project Properties > Playback > Auto-wait timeout setting specifies. If the method fails to access the PDF file, or if the PDF file does not match its baseline copy within this period, the comparison will fail.
Example
The following example shows how you can compare the text content of an actual PDF file and the contents of the Stores > Files item.
Note: | In order for the code to run successfully, your project must have the Stores > Files collection. |
JavaScript, JScript
{
// Create a baseline text file
var textFilePath = Project.Path + "baseline.txt";
var expectedContents = "PDF file";
f = aqFile.OpenTextFile(textFilePath, aqFile.faWrite, aqFile.ctANSI, true);
f.Write(expectedContents);
f.Close();
// Check if the collection already contains an item
// If it doesn't, add the created file to the collection
if ((!Files.Contains("baseline")))
{
Files.Add(textFilePath, "baseline", false);
}
// Get the item containing the baseline text
var item = Files.Items("baseline");
// Get the PDF file to compare
var pdfUrl = "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf";
var pdfFilePath = Project.Path + "sample.pdf";
var request = aqHttp.CreateGetRequest(pdfUrl);
var responsePDF = request.Send();
if (responsePDF != null && responsePDF.StatusCode == 200)
{
responsePDF.SaveToFile(pdfFilePath);
// Check the PDF text content against the stored text file
item.CheckPDFText(pdfFilePath);
}
}
Python
def CheckPDFTextContents():
# Create a baseline text file
textFilePath = Project.Path + "baseline.txt"
expectedContents = "PDF file"
f = aqFile.OpenTextFile(textFilePath, aqFile.faWrite, aqFile.ctANSI, True)
f.Write(expectedContents)
f.Close()
# Check if the colleciton already contains an item
# If not, add the created file to the collection
if not Files.Contains("baseline"):
Files.Add(textFilePath, "baseline", False)
# Get the item containing the baseline text
item = Files.Items("baseline")
# Get a PDF file to compare
pdfUrl = "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
pdfFilePath = Project.Path + "sample.pdf"
request = aqHttp.CreateGetRequest(pdfUrl)
responsePDF = request.Send()
if (responsePDF != None and responsePDF.StatusCode == 200):
responsePDF.SaveToFile(pdfFilePath)
# Check the PDF text contents against the stored text file
item.CheckPDFText(pdfFilePath)
VBScript
' Create a baseline text file
textFilePath = Project.Path + "baseline.txt"
expectedContents = "PDF file"
Set f = aqFile.OpenTextFile(textFilePath, aqFile.faWrite, aqFile.ctANSI, True)
f.Write(expectedContents)
f.Close
' Check if the collection already contains an item
' If it doesn't, add the created file to the collection
If Not Files.Contains("baseline") Then
Call Files.Add(textFilePath, "baseline", False)
End If
' Get the item containing the baseline text
Set item = Files.Items("baseline")
' Get the PDF file to compare
pdfUrl = "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
pdfFilePath = Project.Path + "sample.pdf"
Set request = aqHttp.CreateGetRequest(pdfUrl)
Set responsePDF = request.Send
If Not responsePDF Is Nothing And responsePDF.StatusCode = 200 Then
Call responsePDF.SaveToFile(pdfFilePath)
' Check the PDF text content against the stored text file
item.CheckPDFText(pdfFilePath)
End If
End Sub
DelphiScript
var textFilePath, expectedContents, f, item;
var pdfUrl, pdfFilePath, request, responsePDF;
begin
// Create a baseline text file
textFilePath := Project.Path + 'baseline.txt';
expectedContents := 'PDF file';
f := aqFile.OpenTextFile(textFilePath, aqFile.faWrite, aqFile.ctANSI, true);
f.Write(expectedContents);
f.Close;
// Check if the collection already contains an item
// If it doesn't, add the created file to the collection
if not Files.Contains('baseline') then
Files.Add(textFilePath, 'baseline', false);
// Get the item containing the baseline text
item := Files.Items('baseline');
// Get the PDF file to compare
pdfUrl := 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf';
pdfFilePath := Project.Path + 'sample.pdf';
request := aqHttp.CreateGetRequest(pdfUrl);
responsePDF := request.Send();
if ((responsePDF <> nil) and (responsePDF.StatusCode = 200)) then
begin
responsePDF.SaveToFile(pdfFilePath);
// Check the PDF text content against the stored text file
item.CheckPDFText(pdfFilePath);
end;
end;
C++Script, C#Script
{
// Create a baseline text file
var textFilePath = Project["Path"] + "baseline.txt";
var expectedContents = "PDF file";
f = aqFile["OpenTextFile"](textFilePath, aqFile["faWrite"], aqFile["ctANSI"], true);
f["Write"](expectedContents);
f["Close"]();
// Check if the collection already contains an item
// If it doesn't, add the created file to the collection
if ((!Files["Contains"]("baseline")))
{
Files["Add"](textFilePath, "baseline", false);
}
// Get the item containing the baseline text
var item = Files["Items"]("baseline");
// Get the PDF file to compare
var pdfUrl = "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf";
var pdfFilePath = Project["Path"] + "sample.pdf";
var request = aqHttp["CreateGetRequest"](pdfUrl);
var responsePDF = request["Send"]();
if (responsePDF != null && responsePDF["StatusCode"] == 200)
{
responsePDF["SaveToFile"](pdfFilePath);
// Check the PDF text content against the stored text file
item["CheckPDFText"](pdfFilePath);
}
}
See Also
About File Checkpoints
How File Verification Works
Files.Compare Method