In this step-by-step guide, we’ll briefly see steps on how to parse invoice files using Document Parser in Salesforce Apex using PDF.co. Initially, we’ll go through all the basic steps of Salesforce integration. Later we’ll also see the code and demo video. Let’s get started!
- Create Remote Site Settings
- Create an Apex Class in Salesforce
- Enter API Key
- Verify Code
- Check the Output
- Source Code Files
- Demo Video: Parse Invoice
Step 1: Create Remote Site Settings
Create one remote site settings in the Salesforce Org like below.
Note that the URL is “https://api.pdf.co”.
Step 2: Create an Apex Class in Salesforce
2. Create an apex class in Salesforce like below and paste the code there.
Once you login to the Salesforce org, you will see the screen like below and click on “Developer Console”
Create an apex class. For this, click on “Files” then “New” then “Apex Class”.
Write the class name “DocumentParserOutputAsJSON” and click “Ok”. Now copy the DocumentParserOutputAsJSON code in this file.
Similarly, create a new file with the name “DocumentParserOutputAsJSONTest” and copy the code.
Step 3: Enter API Key
In the DocumentParserOutputAsJSON file, please add the PDF.co API key by replacing the ‘******************************************’.
Step 4: Verify Code
To Verify the code, please open the execute Anonymous window and call the method like below.
Then Click on “Execute”.
Step 5: Check the Output
5. Now, You will see the output in the debug log.
Source Code Files:
DocumentParserOutputAsJSON.cls
public class DocumentParserOutputAsJSON { // The authentication key (API Key). // Get your own by registering at https://app.pdf.co/documentation/api static String API_KEY = '***********************'; // Direct URL of source PDF file. static string SourceFileUrl = 'https://bytescout-com.s3-us-west-2.amazonaws.com/files/demo-files/cloud-api/document-parser/sample-invoice.pdf'; // PDF document password. Leave empty for unprotected documents. static string Password = ''; @TestVisible String jsonOutput; public void parseDocumentAsJSON() { try { // Create HTTP client instance Http http = new Http(); HttpRequest request = new HttpRequest(); // Set API Key request.setHeader('x-api-key', API_KEY); Boolean async = false; String inline = 'true'; String profiles = ''; Boolean encrypt = false; Boolean storeResult = false; // Prepare requests params as JSON // See documentation: https://apidocs.pdf.co // Create JSON payload JSONGenerator gen = JSON.createGenerator(true); gen.writeStartObject(); gen.writeStringField('url', SourceFileUrl); gen.writeStringField('outputFormat', 'JSON'); gen.writeStringField('templateId', '1'); gen.writeBooleanField('async', async); gen.writeBooleanField('encrypt', encrypt); gen.writeStringField('inline', inline); gen.writeStringField('password', password); gen.writeStringField('profiles', profiles); gen.writeBooleanField('storeResult', false); gen.writeEndObject(); // Convert dictionary of params to JSON String jsonPayload = gen.getAsString(); // URL of 'PDF Edit' endpoint string url = 'https://api.pdf.co/v1/pdf/documentparser'; request.setEndpoint(url); request.setHeader('Content-Type', 'application/json;charset=UTF-8'); request.setMethod('POST'); request.setBody(jsonPayload); // Execute request HttpResponse response = http.send(request); if(response.getStatusCode() == 200) { // Parse JSON response Map<String, Object> json = (Map<String, Object>)JSON.deserializeUntyped(response.getBody()); if ((Boolean)json.get('error') == false) { jsonOutput = response.getBody(); System.debug('JSON '+ jsonOutput); } } else { System.debug('Error Response ' + response.getBody()); System.Debug(' Status ' + response.getStatus()); System.Debug(' Status Code' + response.getStatusCode()); System.Debug(' Response String' + response.toString()); } } catch (Exception ex) { String errorBody = 'Message: ' + ex.getMessage() + ' -- Cause: ' + ex.getCause() + ' -- Stacktrace: ' + ex.getStackTraceString(); System.Debug(errorBody); } } }
DocumentParserOutputAsJSONTest.cls
@isTest public class DocumentParserOutputAsJSONTest { private testmethod static void testparseDocumentAsJSON() { Test.setMock(HttpCalloutMock.class, new DocumentParserOutputAsJSONTest.DocumentCreationMock()); DocumentParserOutputAsJSON docParse = new DocumentParserOutputAsJSON(); docParse.parseDocumentAsJSON(); System.assert(docParse.jsonOutput.contains('John A. Doe')); } private testmethod static void testparseDocumentAsJSONException() { DocumentParserOutputAsJSON docParse = new DocumentParserOutputAsJSON(); docParse.parseDocumentAsJSON(); System.assert(null == docParse.jsonOutput); } public class DocumentCreationMock implements HttpCalloutMock { public HTTPResponse respond(HTTPRequest req) { HttpResponse res = new HttpResponse(); String testBody = '{"hash":"John A. Doe","url":"https://pdf-temp-files.s3-us-west-2.amazonaws.com/0c336bfcef1a473d98492bda25d8da03/newDocument.pdf?X-Amz-Expires=3600&x-amz-security-token=FwoGZXIvYXdzEO7%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDHWK1dY4d4lOgsheliKBATwE%2FZewASPTEnPxTn%2BOdYhP4h3gljAJfqbRvQptDX7wdWLmrBS7Tg4qTU6pAbxIdXChGPjBWpSbtiADJKmqkmyhkUmE8GSM1%2FGtJO6bga2pgzvFLXmzxjTf3%2BFNqwYOvbyApIZdVLoPpEKY6PlCflQtLTd30dhelm6xpB8pitbdhSjdz8KCBjIobVy%2Fjwybwp6OQgB%2FT6QkIo2dU07gtFREdn5jhRyvnS5lkccweBV1%2Bw%3D%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA4NRRSZPHMV5P3JOS/20210316/us-west-2/s3/aws4_request&X-Amz-Date=20210316T124309Z&X-Amz-SignedHeaders=host;x-amz-security-token&X-Amz-Signature=95287bf3c007fed4c2c5aeea1ce75c846cc6c68b22aaf35175ebe41a105f54e1","pageCount":1,"error":false,"status":200,"name":"newDocument","remainingCredits":9913694,"credits":3}'; res.setHeader('Content-Type', 'application/json'); res.setBody(testBody); res.setStatusCode(200); return res; } } }
Parse Invoice – Demo Video
Learn how you can extract data from PDF invoices using PDF.co API and Salesforce integration.
Similar Pages
- How to Convert Invoice to CSV using PHP
- How to Convert Invoice to XLS using Zapier
- Parse Invoices Automatically using Zapier
- Parsing PDF Invoices from Dropbox via PDF.co Document Parser for Make
- How to Extract Text From PDF Invoices and Bulk Save to Spreadsheet
- Convert PDF Invoices to Google Sheets using Zapier
- Convert PDF Invoices to Google Sheets using Integromat
- Convert PDF Invoice to Google Sheet using PDF.co and Google Apps Script
- Extract Text from Scanned PDF in PHP using PDF.co Web API
- Extract Text from Scanned PDF in JavaScript using PDF.co Web API
- How to Extract Text from PDF and Paste in Excel using Python and PDF.co Web API
- How to Read PDF Invoices in Python using PDF.co Web API
- Google Invoice Parser to Read PDF Invoices and Orders with Google Script and PDF.co
- How to Extract Invoice Data from Image in Python using PDF.co Web API
- Parse Invoice and Send Data to Airtable with PDF.co using Zapier
- Parse Invoice and Send Data to Airtable using PDF.co and Make
- Extract Invoice Data from PDF using PDF.co and UiPath
- Parse Invoice using Salesforce Apex using PDF.co
- Extract Invoice Information with SharePoint and PDF.co
- Extract Data from Invoices to Avoid Fraud using PDF.co Document Parser