From e9a6c644fb6b532fd3ff1a9f4ff99dd52c2d6a00 Mon Sep 17 00:00:00 2001 From: estar73 Date: Mon, 20 Feb 2023 06:41:16 +0000 Subject: [PATCH 1/3] = regular update --- Index.txt | 4 + .../SplitPDFByBarcode.cls | 85 +++++++++++++++++++ .../SplitPDFByBarcodeTest.cls | 31 +++++++ .../SplitPDFByPageNumber.cls | 85 +++++++++++++++++++ .../SplitPDFByPageNumberTest.cls | 31 +++++++ .../SplitPDFByTextSearch.cls | 85 +++++++++++++++++++ .../SplitPDFByTextSearchTest.cls | 31 +++++++ 7 files changed, 352 insertions(+) create mode 100644 PDF Splitting API/Salesforce/Split PDF By Barcode/SplitPDFByBarcode.cls create mode 100644 PDF Splitting API/Salesforce/Split PDF By Barcode/SplitPDFByBarcodeTest.cls create mode 100644 PDF Splitting API/Salesforce/Split PDF By Page Number/SplitPDFByPageNumber.cls create mode 100644 PDF Splitting API/Salesforce/Split PDF By Page Number/SplitPDFByPageNumberTest.cls create mode 100644 PDF Splitting API/Salesforce/Split PDF By Text Search/SplitPDFByTextSearch.cls create mode 100644 PDF Splitting API/Salesforce/Split PDF By Text Search/SplitPDFByTextSearchTest.cls diff --git a/Index.txt b/Index.txt index 4aac50f5..7465c379 100644 --- a/Index.txt +++ b/Index.txt @@ -1185,6 +1185,7 @@ \PDF Splitting API\PHP \PDF Splitting API\PowerShell \PDF Splitting API\Python +\PDF Splitting API\Salesforce \PDF Splitting API\VB.NET \PDF Splitting API\AWS Lambda\Split PDF By Barcode From URL (Node.js) \PDF Splitting API\AWS Lambda\Split PDF By Text From URL (Node.js) @@ -1243,6 +1244,9 @@ \PDF Splitting API\Python\Split PDF By Text From Uploaded File Asynchronously \PDF Splitting API\Python\Split PDF From Uploaded File \PDF Splitting API\Python\Split PDF From Uploaded File Asynchronously +\PDF Splitting API\Salesforce\Split PDF By Barcode +\PDF Splitting API\Salesforce\Split PDF By Page Number +\PDF Splitting API\Salesforce\Split PDF By Text Search \PDF Splitting API\VB.NET\Async file upload and async Split PDF \PDF Splitting API\VB.NET\Async file upload and async Split PDF By Barcode \PDF Splitting API\VB.NET\Async file upload and async Split PDF By Text diff --git a/PDF Splitting API/Salesforce/Split PDF By Barcode/SplitPDFByBarcode.cls b/PDF Splitting API/Salesforce/Split PDF By Barcode/SplitPDFByBarcode.cls new file mode 100644 index 00000000..beb51926 --- /dev/null +++ b/PDF Splitting API/Salesforce/Split PDF By Barcode/SplitPDFByBarcode.cls @@ -0,0 +1,85 @@ +public class SplitPDFByBarcode { + + String API_KEY = '****************'; + string DestinationFile = 'SplitPDFByBarcode_Result'; + string endPointUrl = 'https://api.pdf.co/v1/pdf/split2'; + + public void splitPdfByBarcode() + { + List toBeInserted = new List(); + try + { + String jsonBody = '{ "url": "https://pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-split/split_by_barcode.pdf", "searchString": "[[barcode:qrcode,datamatrix /bytescout\\.com/]]", "excludeKeyPages": true, "regexSearch": false, "caseSensitive": false, "inline": true, "name": "output-split-by-barcode", "async": false }'; + Http http = new Http(); + HttpRequest request = new HttpRequest(); + request.setHeader('x-api-key', API_KEY); + request.setEndpoint(endPointUrl); + request.setHeader('Content-Type', 'application/json'); + request.setMethod('POST'); + request.setBody(jsonBody); + HttpResponse response = http.send(request); + Map json = (Map)JSON.deserializeUntyped(response.getBody()); + if(response.getStatusCode() == 200) + { + if ((Boolean)json.get('error') == false) + { + System.debug('response.getBody() :: '+response.getBody()); + List resultFileUrl =(List)json.get('urls'); + Integer count=1; + for(Object fileUrl : resultFileUrl) + { + downloadFile(String.valueOf(fileUrl), DestinationFile+'_'+count, toBeInserted); + count++; + } + System.debug('Generated PDF file saved as \'{0}\' file.'+ DestinationFile); + } + } + else + { + System.debug('Error Response ' + response.getBody()); + System.Debug(' Status ' + response.getStatus()); + System.Debug(' Status Code' + response.getStatusCode()); + System.Debug(' Response String' + response.toString()); + } + if(toBeInserted.size() > 0) + insert toBeInserted; + } + catch(Exception ex) + { + String errorBody = 'Message: ' + ex.getMessage() + ' -- Cause: ' + ex.getCause() + ' -- Stacktrace: ' + ex.getStackTraceString(); + System.Debug(errorBody); + } + } + + @TestVisible + private static void downloadFile(String extFileUrl, String DestinationFile, List toBeInserted) + { + Http h = new Http(); + HttpRequest req = new HttpRequest(); + extFileUrl = extFileUrl.replace(' ', '%20'); + req.setEndpoint(extFileUrl); + req.setMethod('GET'); + req.setHeader('Content-Type', 'application/pdf'); + req.setCompressed(true); + req.setTimeout(60000); + HttpResponse res = h.send(req); + if(res.getStatusCode() == 200) + { + blob fileContent = res.getBodyAsBlob(); + ContentVersion conVer = new ContentVersion(); + conVer.ContentLocation = 'S'; + conVer.PathOnClient = DestinationFile + '.pdf'; // The files name, extension is very important here which will help the file in preview. + conVer.Title = DestinationFile; // Display name of the files + conVer.VersionData = fileContent; + toBeInserted.add(conVer); + System.Debug('Success'); + } + else + { + System.debug('Error Response ' + res.getBody()); + System.Debug(' Status ' + res.getStatus()); + System.Debug(' Status Code' + res.getStatusCode()); + System.Debug(' Response String' + res.toString()); + } + } +} \ No newline at end of file diff --git a/PDF Splitting API/Salesforce/Split PDF By Barcode/SplitPDFByBarcodeTest.cls b/PDF Splitting API/Salesforce/Split PDF By Barcode/SplitPDFByBarcodeTest.cls new file mode 100644 index 00000000..a5b57364 --- /dev/null +++ b/PDF Splitting API/Salesforce/Split PDF By Barcode/SplitPDFByBarcodeTest.cls @@ -0,0 +1,31 @@ +@isTest +private class SplitPDFByBarcodeTest { + + static testmethod void testSplitPDFbyBarcode() + { + Test.startTest(); + Test.setMock(HttpCalloutMock.class, new SplitPDFByBarcodeTest.SplitPDFByBarcodeMock()); + SplitPDFByBarcode splitPdf = new SplitPDFByBarcode(); + splitPdf.splitPdfByBarcode(); + Test.stopTest(); + } + + static testmethod void testSplitPDFbyBarcodeForCatch() + { + Test.startTest(); + SplitPDFByBarcode splitPdf = new SplitPDFByBarcode(); + splitPdf.splitPdfByBarcode(); + Test.stopTest(); + } + + public class SplitPDFByBarcodeMock implements HttpCalloutMock { + public HttpResponse respond(HTTPRequest req) { + HttpResponse res = new HttpResponse(); + String testBody = '{ "urls": [ "https://pdf-temp-files.s3.us-west-2.amazonaws.com/FAMAJC25DIDJ69FMLTVOWJ7IL8IZVA6E/output-split-by-barcode_page1.pdf?X-Amz-Expires=3600&X-Amz-Security-Token=FwoGZXIvYXdzEG8aDNkg0DYoVoCyvF88aSKCAYgbOizJoYULBIgYUdfJgJG5Tw7PlcNavOD6q4JNwLz5wT89pkTBS%2FPbnykQjNrJeh%2B6njlDmjcLqAjt2RApVDtXFJrb%2F%2B67T43qQZJXCj83zIugG2oTGsA1tK2q7KmD8YV%2FWM%2FUEXEhiiKYXtae2GQAsMPowLTWCrw6%2BUhX8AQQjPIor42nnwYyKDAWzJatWBqURnasvqtS10U2A4EaRxD%2BrpU5dwOqWN47Dkqzq9TBfug%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA4NRRSZPHCRJF34GF/20230213/us-west-2/s3/aws4_request&X-Amz-Date=20230213T054645Z&X-Amz-SignedHeaders=host&X-Amz-Signature=d342a4a232fe62f83bd3965335128428347dbb6b9f97c71f1f17e3e42d80edcd" ], "pageCount": 10, "error": false, "status": 200, "name": "output-split-by-barcode.pdf", "credits": 350, "duration": 4809, "remainingCredits": 1165920 }'; + res.setHeader('Content-Type', 'application/json'); + res.setBody(testBody); + res.setStatusCode(200); + return res; + } + } +} \ No newline at end of file diff --git a/PDF Splitting API/Salesforce/Split PDF By Page Number/SplitPDFByPageNumber.cls b/PDF Splitting API/Salesforce/Split PDF By Page Number/SplitPDFByPageNumber.cls new file mode 100644 index 00000000..b95209f0 --- /dev/null +++ b/PDF Splitting API/Salesforce/Split PDF By Page Number/SplitPDFByPageNumber.cls @@ -0,0 +1,85 @@ +public class SplitPDFByPageNumber { + + String API_KEY = '***********************'; + string DestinationFile = 'SplitPDFByPageNo_Result'; + string endPointUrl = 'https://api.pdf.co/v1/pdf/split'; + + public void splitPdfUsingPage() + { + List toBeInserted = new List(); + try + { + String jsonBody = '{"url": "https://pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-split/sample.pdf", "pages": "1-2,3-", "inline": true, "name": "result.pdf", "async": false }'; + Http http = new Http(); + HttpRequest request = new HttpRequest(); + request.setHeader('x-api-key', API_KEY); + request.setEndpoint(endPointUrl); + request.setHeader('Content-Type', 'application/json'); + request.setMethod('POST'); + request.setBody(jsonBody); + HttpResponse response = http.send(request); + Map json = (Map)JSON.deserializeUntyped(response.getBody()); + if(response.getStatusCode() == 200) + { + if ((Boolean)json.get('error') == false) + { + System.debug('response.getBody() :: '+response.getBody()); + List resultFileUrl =(List)json.get('urls'); + Integer count=1; + for(Object fileUrl : resultFileUrl) + { + downloadFile(String.valueOf(fileUrl), DestinationFile+'_'+count, toBeInserted); + count++; + } + System.debug('Generated PDF file saved as \'{0}\' file.'+ DestinationFile); + } + } + else + { + System.debug('Error Response ' + response.getBody()); + System.Debug(' Status ' + response.getStatus()); + System.Debug(' Status Code' + response.getStatusCode()); + System.Debug(' Response String' + response.toString()); + } + if(toBeInserted.size() > 0) + insert toBeInserted; + } + catch(Exception ex) + { + String errorBody = 'Message: ' + ex.getMessage() + ' -- Cause: ' + ex.getCause() + ' -- Stacktrace: ' + ex.getStackTraceString(); + System.Debug(errorBody); + } + } + + @TestVisible + private static void downloadFile(String extFileUrl, String DestinationFile, List toBeInserted) + { + Http h = new Http(); + HttpRequest req = new HttpRequest(); + extFileUrl = extFileUrl.replace(' ', '%20'); + req.setEndpoint(extFileUrl); + req.setMethod('GET'); + req.setHeader('Content-Type', 'application/pdf'); + req.setCompressed(true); + req.setTimeout(60000); + HttpResponse res = h.send(req); + if(res.getStatusCode() == 200) + { + blob fileContent = res.getBodyAsBlob(); + ContentVersion conVer = new ContentVersion(); + conVer.ContentLocation = 'S'; + conVer.PathOnClient = DestinationFile + '.pdf'; // The files name, extension is very important here which will help the file in preview. + conVer.Title = DestinationFile; // Display name of the files + conVer.VersionData = fileContent; + toBeInserted.add(conVer); + System.Debug('Success'); + } + else + { + System.debug('Error Response ' + res.getBody()); + System.Debug(' Status ' + res.getStatus()); + System.Debug(' Status Code' + res.getStatusCode()); + System.Debug(' Response String' + res.toString()); + } + } +} \ No newline at end of file diff --git a/PDF Splitting API/Salesforce/Split PDF By Page Number/SplitPDFByPageNumberTest.cls b/PDF Splitting API/Salesforce/Split PDF By Page Number/SplitPDFByPageNumberTest.cls new file mode 100644 index 00000000..eb2acca7 --- /dev/null +++ b/PDF Splitting API/Salesforce/Split PDF By Page Number/SplitPDFByPageNumberTest.cls @@ -0,0 +1,31 @@ +@isTest +private class SplitPDFByPageNumberTest { + + static testMethod void testSplitPdfUsingPage() + { + Test.startTest(); + Test.setMock(HttpCalloutMock.class, new SplitPDFByPageNumberTest.SplitPDFByPageNoMock()); + SplitPDFByPageNumber splitPdf = new SplitPDFByPageNumber(); + splitPdf.splitPdfUsingPage(); + Test.stopTest(); + } + + static testMethod void testSplitPdfUsingPageforCatch() + { + Test.startTest(); + SplitPDFByPageNumber splitPdf = new SplitPDFByPageNumber(); + splitPdf.splitPdfUsingPage(); + Test.stopTest(); + } + + public class SplitPDFByPageNoMock implements HttpCalloutMock { + public HTTPResponse respond(HTTPRequest req) { + HttpResponse res = new HttpResponse(); + String testBody = '{ "urls": [ "https://pdf-temp-files.s3.us-west-2.amazonaws.com/YPG46FWTZPJA0XOYS4WW9REHCHLO659Y/result_page1-2.pdf?X-Amz-Expires=3600&X-Amz-Security-Token=FwoGZXIvYXdzEG8aDNkg0DYoVoCyvF88aSKCAYgbOizJoYULBIgYUdfJgJG5Tw7PlcNavOD6q4JNwLz5wT89pkTBS%2FPbnykQjNrJeh%2B6njlDmjcLqAjt2RApVDtXFJrb%2F%2B67T43qQZJXCj83zIugG2oTGsA1tK2q7KmD8YV%2FWM%2FUEXEhiiKYXtae2GQAsMPowLTWCrw6%2BUhX8AQQjPIor42nnwYyKDAWzJatWBqURnasvqtS10U2A4EaRxD%2BrpU5dwOqWN47Dkqzq9TBfug%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA4NRRSZPHCRJF34GF/20230213/us-west-2/s3/aws4_request&X-Amz-Date=20230213T054449Z&X-Amz-SignedHeaders=host&X-Amz-Signature=8f5a5c43ab6aecde4deef658d5f8d93deca1cca19487453cc9fc75a09f918b8b" ], "pageCount": 4, "error": false, "status": 200, "name": "result.pdf", "credits": 8, "duration": 359, "remainingCredits": 1166375 }'; + res.setHeader('Content-Type', 'application/json'); + res.setBody(testBody); + res.setStatusCode(200); + return res; + } + } +} \ No newline at end of file diff --git a/PDF Splitting API/Salesforce/Split PDF By Text Search/SplitPDFByTextSearch.cls b/PDF Splitting API/Salesforce/Split PDF By Text Search/SplitPDFByTextSearch.cls new file mode 100644 index 00000000..b3d8f814 --- /dev/null +++ b/PDF Splitting API/Salesforce/Split PDF By Text Search/SplitPDFByTextSearch.cls @@ -0,0 +1,85 @@ +public class SplitPDFByTextSearch { + + String API_KEY = '*****************'; + string DestinationFile = 'SplitPDFByTextSearch_Result'; + string endPointUrl = 'https://api.pdf.co/v1/pdf/split2'; + + public void splitPdfByText() + { + List toBeInserted = new List(); + try + { + String jsonBody = '{ "url": "https://pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-split/multiple-invoices.pdf", "searchString": "invoice number", "excludeKeyPages": false, "regexSearch": false, "caseSensitive": false, "inline": true, "name": "invoice-extracted", "async": false }'; + Http http = new Http(); + HttpRequest request = new HttpRequest(); + request.setHeader('x-api-key', API_KEY); + request.setEndpoint(endPointUrl); + request.setHeader('Content-Type', 'application/json'); + request.setMethod('POST'); + request.setBody(jsonBody); + HttpResponse response = http.send(request); + Map json = (Map)JSON.deserializeUntyped(response.getBody()); + if(response.getStatusCode() == 200) + { + if ((Boolean)json.get('error') == false) + { + System.debug('response.getBody() :: '+response.getBody()); + List resultFileUrl =(List)json.get('urls'); + Integer count=1; + for(Object fileUrl : resultFileUrl) + { + downloadFile(String.valueOf(fileUrl), DestinationFile+'_'+count, toBeInserted); + count++; + } + System.debug('Generated PDF file saved as \'{0}\' file.'+ DestinationFile); + } + } + else + { + System.debug('Error Response ' + response.getBody()); + System.Debug(' Status ' + response.getStatus()); + System.Debug(' Status Code' + response.getStatusCode()); + System.Debug(' Response String' + response.toString()); + } + if(toBeInserted.size() > 0) + insert toBeInserted; + } + catch(Exception ex) + { + String errorBody = 'Message: ' + ex.getMessage() + ' -- Cause: ' + ex.getCause() + ' -- Stacktrace: ' + ex.getStackTraceString(); + System.Debug(errorBody); + } + } + + @TestVisible + private static void downloadFile(String extFileUrl, String DestinationFile, List toBeInserted) + { + Http h = new Http(); + HttpRequest req = new HttpRequest(); + extFileUrl = extFileUrl.replace(' ', '%20'); + req.setEndpoint(extFileUrl); + req.setMethod('GET'); + req.setHeader('Content-Type', 'application/pdf'); + req.setCompressed(true); + req.setTimeout(60000); + HttpResponse res = h.send(req); + if(res.getStatusCode() == 200) + { + blob fileContent = res.getBodyAsBlob(); + ContentVersion conVer = new ContentVersion(); + conVer.ContentLocation = 'S'; + conVer.PathOnClient = DestinationFile + '.pdf'; // The files name, extension is very important here which will help the file in preview. + conVer.Title = DestinationFile; // Display name of the files + conVer.VersionData = fileContent; + toBeInserted.add(conVer); + System.Debug('Success'); + } + else + { + System.debug('Error Response ' + res.getBody()); + System.Debug(' Status ' + res.getStatus()); + System.Debug(' Status Code' + res.getStatusCode()); + System.Debug(' Response String' + res.toString()); + } + } +} \ No newline at end of file diff --git a/PDF Splitting API/Salesforce/Split PDF By Text Search/SplitPDFByTextSearchTest.cls b/PDF Splitting API/Salesforce/Split PDF By Text Search/SplitPDFByTextSearchTest.cls new file mode 100644 index 00000000..9ef923e1 --- /dev/null +++ b/PDF Splitting API/Salesforce/Split PDF By Text Search/SplitPDFByTextSearchTest.cls @@ -0,0 +1,31 @@ +@isTest +private class SplitPDFByTextSearchTest { + + static testMethod void testSplitPdfUsingPage() + { + Test.startTest(); + Test.setMock(HttpCalloutMock.class, new SplitPDFByTextSearchTest.SplitPDFByTextMock()); + SplitPDFByTextSearch splitPdf = new SplitPDFByTextSearch(); + splitPdf.splitPdfByText(); + Test.stopTest(); + } + + static testMethod void testSplitPdfUsingPageForCatch() + { + Test.startTest(); + SplitPDFByTextSearch splitPdf = new SplitPDFByTextSearch(); + splitPdf.splitPdfByText(); + Test.stopTest(); + } + + public class SplitPDFByTextMock implements HttpCalloutMock { + public HTTPResponse respond(HTTPRequest req) { + HttpResponse res = new HttpResponse(); + String testBody = '{ "urls": [ "https://pdf-temp-files.s3.us-west-2.amazonaws.com/BV5R88QIPOZPKVO0PE7GYKVBETULHN0Y/invoice-extracted_page1.pdf?X-Amz-Expires=3600&X-Amz-Security-Token=FwoGZXIvYXdzEG8aDKuBm3gDES1tmO7uSSKCATaP8OHW3vpxMhhGOh4utp7hCQzkW5aPbntexlu9TwfIMzceDB6zBv%2F5L4kWTEf8xwOqTckcDrAeDd0oL%2FbWpbPgP68r01OjXwSBbB0TMu3KftSf7VN%2B7NhOl4MXX1HIOSCrvcCUvLOql2DcpVhjFwPJ%2B1JMx6yorVx1zNMLwj98Kuco%2FI6nnwYyKBbvDvsM%2FQpG1PaeKq7jq7kfl4MIt7KkwPs8LyuEMIkaLznfkdpSMFw%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA4NRRSZPHFPQ3GI5S/20230213/us-west-2/s3/aws4_request&X-Amz-Date=20230213T054546Z&X-Amz-SignedHeaders=host&X-Amz-Signature=f3d62c0952b8bc772a77c3d146b7fb55a8e86129b5cb351500f73aead8c1dbfa", "https://pdf-temp-files.s3.us-west-2.amazonaws.com/98TZ8L6PIAX3QWHF4POX4Q9TN6BHPIIH/invoice-extracted_page2.pdf?X-Amz-Expires=3600&X-Amz-Security-Token=FwoGZXIvYXdzEG8aDKuBm3gDES1tmO7uSSKCATaP8OHW3vpxMhhGOh4utp7hCQzkW5aPbntexlu9TwfIMzceDB6zBv%2F5L4kWTEf8xwOqTckcDrAeDd0oL%2FbWpbPgP68r01OjXwSBbB0TMu3KftSf7VN%2B7NhOl4MXX1HIOSCrvcCUvLOql2DcpVhjFwPJ%2B1JMx6yorVx1zNMLwj98Kuco%2FI6nnwYyKBbvDvsM%2FQpG1PaeKq7jq7kfl4MIt7KkwPs8LyuEMIkaLznfkdpSMFw%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA4NRRSZPHFPQ3GI5S/20230213/us-west-2/s3/aws4_request&X-Amz-Date=20230213T054546Z&X-Amz-SignedHeaders=host&X-Amz-Signature=98d5bf380c9176f410178b1554dae798faad7158f52153bbe1dbe1b86cb91fe7" ], "pageCount": 3, "error": false, "status": 200, "name": "invoice-extracted.pdf", "credits": 105, "duration": 465, "remainingCredits": 1166270 }'; + res.setHeader('Content-Type', 'application/json'); + res.setBody(testBody); + res.setStatusCode(200); + return res; + } + } +} \ No newline at end of file From 6942f066974a609fd7ddfe2455952afdb7596b4f Mon Sep 17 00:00:00 2001 From: estar73 Date: Fri, 24 Feb 2023 12:04:28 +0000 Subject: [PATCH 2/3] = regular update --- .../ByteScoutWebApiExample.NETCore.csproj | 35 +++ .../ByteScoutWebApiExample.NETCore.sln | 25 ++ .../ByteScoutWebApiExample.csproj | 63 +++++ .../ByteScoutWebApiExample.sln | 22 ++ .../Program.cs | 233 ++++++++++++++++++ .../Properties/AssemblyInfo.cs | 49 ++++ .../packages.config | 4 + .../sample.pdf | Bin 0 -> 86828 bytes .../ByteScoutWebApiExample.NETCore.csproj | 35 +++ .../ByteScoutWebApiExample.NETCore.sln | 25 ++ .../ByteScoutWebApiExample.csproj | 63 +++++ .../ByteScoutWebApiExample.sln | 22 ++ .../Program.cs | 231 +++++++++++++++++ .../Properties/AssemblyInfo.cs | 49 ++++ .../packages.config | 4 + .../sample.pdf | Bin 0 -> 34365 bytes Index.txt | 2 + 17 files changed, 862 insertions(+) create mode 100644 Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.NETCore.csproj create mode 100644 Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.NETCore.sln create mode 100644 Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.csproj create mode 100644 Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.sln create mode 100644 Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/Program.cs create mode 100644 Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/Properties/AssemblyInfo.cs create mode 100644 Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/packages.config create mode 100644 Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/sample.pdf create mode 100644 Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.NETCore.csproj create mode 100644 Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.NETCore.sln create mode 100644 Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.csproj create mode 100644 Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.sln create mode 100644 Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/Program.cs create mode 100644 Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/Properties/AssemblyInfo.cs create mode 100644 Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/packages.config create mode 100644 Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/sample.pdf diff --git a/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.NETCore.csproj b/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.NETCore.csproj new file mode 100644 index 00000000..82e9705c --- /dev/null +++ b/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.NETCore.csproj @@ -0,0 +1,35 @@ + + + + Exe + netcoreapp2.0 + false + false + false + false + false + false + false + false + false + false + false + false + + + + + + + + + + + + + + + Always + + + \ No newline at end of file diff --git a/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.NETCore.sln b/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.NETCore.sln new file mode 100644 index 00000000..6527b80b --- /dev/null +++ b/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.NETCore.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.32126.317 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ByteScoutWebApiExample.NETCore", "ByteScoutWebApiExample.NETCore.csproj", "{6C67B480-C7E2-4AF7-AE7B-0E12A5799D9C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6C67B480-C7E2-4AF7-AE7B-0E12A5799D9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6C67B480-C7E2-4AF7-AE7B-0E12A5799D9C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6C67B480-C7E2-4AF7-AE7B-0E12A5799D9C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6C67B480-C7E2-4AF7-AE7B-0E12A5799D9C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {FBAE862B-1737-4E3F-96CF-5B8772A7AC09} + EndGlobalSection +EndGlobal diff --git a/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.csproj b/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.csproj new file mode 100644 index 00000000..c5130112 --- /dev/null +++ b/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.csproj @@ -0,0 +1,63 @@ + + + + + Debug + AnyCPU + {1E1C2C34-017E-4605-AE2B-55EA3313BE51} + Exe + Properties + ByteScoutWebApiExample + ByteScoutWebApiExample + v4.6 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + packages\Newtonsoft.Json.10.0.3\lib\net40\Newtonsoft.Json.dll + True + + + + + + + + + + + + + + + Always + + + + + \ No newline at end of file diff --git a/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.sln b/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.sln new file mode 100644 index 00000000..44721634 --- /dev/null +++ b/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/ByteScoutWebApiExample.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.40629.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ByteScoutWebApiExample", "ByteScoutWebApiExample.csproj", "{1E1C2C34-017E-4605-AE2B-55EA3313BE51}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1E1C2C34-017E-4605-AE2B-55EA3313BE51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1E1C2C34-017E-4605-AE2B-55EA3313BE51}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1E1C2C34-017E-4605-AE2B-55EA3313BE51}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1E1C2C34-017E-4605-AE2B-55EA3313BE51}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/Program.cs b/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/Program.cs new file mode 100644 index 00000000..9ebada1b --- /dev/null +++ b/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/Program.cs @@ -0,0 +1,233 @@ +//*******************************************************************************************// +// // +// Download Free Evaluation Version From: https://bytescout.com/download/web-installer // +// // +// Also available as Web API! Get Your Free API Key: https://app.pdf.co/signup // +// // +// Copyright © 2017-2020 ByteScout, Inc. All rights reserved. // +// https://www.bytescout.com // +// https://pdf.co // +// // +//*******************************************************************************************// + + +using System; +using System.IO; +using System.Net; +using Newtonsoft.Json.Linq; +using System.Threading; +using System.Collections.Generic; +using Newtonsoft.Json; + +// Cloud API asynchronous "Delete Text from PDF" job example. + +namespace ByteScoutWebApiExample +{ + class Program + { + // The authentication key (API Key). + // Get your own by registering at https://app.pdf.co + const String API_KEY = "YOUR_PDFco_API_KEY_HERE"; + + // Source PDF file + const string SourceFile = @".\sample.pdf"; + + // PDF document password. Leave empty for unprotected documents. + const string Password = ""; + + // Regex Enabled Search + const bool RegexEnabled = true; + + // Destination PDF file name + const string DestinationFile = @".\result.pdf"; + + + static void Main(string[] args) + { + // Upload file to the cloud + string uploadedFileUrl = UploadFile(SourceFile); + + if (string.IsNullOrEmpty(uploadedFileUrl)) + { + Console.WriteLine("File upload error."); + return; + } + + // Regular Expression for Credit Card + string regex_creditCard = @"[0-9]{4} [0-9]{4} [0-9]{4} [0-9]{4}"; + + // Regular expression CVV number + string regex_cvv = @"\b[0-9]{3}\b"; + + // Regular expression mm/year + string regex_month_year = @"[0-9]{2}(\/|-)[0-9]{4}"; + + // Create standard .NET web client instance + WebClient webClient = new WebClient(); + + // Set API Key + webClient.Headers.Add("x-api-key", API_KEY); + + // Prepare requests params as JSON + // See documentation: https://apidocs.pdf.co/#pdf-search-and-delete-text-from-pdf + Dictionary parameters = new Dictionary(); + parameters.Add("name", Path.GetFileName(DestinationFile)); + parameters.Add("password", Password); + parameters.Add("url", uploadedFileUrl); + parameters.Add("searchStrings", new string[] { regex_creditCard, regex_cvv, regex_month_year }); + parameters.Add("regex", RegexEnabled); + + // Important: Specify Blackout Color + parameters.Add("profiles", @"{'UsePatch': true, 'PatchColor': '#000000'}"); + + parameters.Add("async", true); // ! Making Async request + + // Convert dictionary of params to JSON + string jsonPayload = JsonConvert.SerializeObject(parameters); + + // URL of `Delete Text from PDF` API call + string url = "https://api.pdf.co/v1/pdf/edit/delete-text"; + + try + { + // Execute POST request with JSON payload + string response = webClient.UploadString(url, jsonPayload); + + // Parse JSON response + JObject json = JObject.Parse(response); + + if (json["error"].ToObject() == false) + { + // Asynchronous job ID + string jobId = json["jobId"].ToString(); + // URL of generated PDF file that will available after the job completion + string resultFileUrl = json["url"].ToString(); + + // Check the job status in a loop. + // If you don't want to pause the main thread you can rework the code + // to use a separate thread for the status checking and completion. + do + { + string status = CheckJobStatus(jobId); // Possible statuses: "working", "failed", "aborted", "success". + + // Display timestamp and status (for demo purposes) + Console.WriteLine(DateTime.Now.ToLongTimeString() + ": " + status); + + if (status == "success") + { + // Download PDF file + webClient.DownloadFile(resultFileUrl, DestinationFile); + + Console.WriteLine("Generated PDF file saved as \"{0}\" file.", DestinationFile); + break; + } + else if (status == "working") + { + // Pause for a few seconds + Thread.Sleep(3000); + } + else + { + Console.WriteLine(status); + break; + } + } + while (true); + } + else + { + Console.WriteLine(json["message"].ToString()); + } + } + catch (WebException e) + { + Console.WriteLine(e.ToString()); + } + + webClient.Dispose(); + + + Console.WriteLine(); + Console.WriteLine("Press any key..."); + Console.ReadKey(); + } + + /// + /// Uploads file to the cloud and return URL of uploaded file to use in further API calls. + /// + /// Source file name (path). + /// URL of uploaded file + static string UploadFile(string file) + { + // Create standard .NET web client instance + WebClient webClient = new WebClient(); + + // Set API Key + webClient.Headers.Add("x-api-key", API_KEY); + + try + { + // 1. RETRIEVE THE PRESIGNED URL TO UPLOAD THE FILE. + // * If you already have a direct file URL, skip to the step 3. + + // Prepare URL for `Get Presigned URL` API call + string query = Uri.EscapeUriString(string.Format( + "https://api.pdf.co/v1/file/upload/get-presigned-url?contenttype=application/octet-stream&name={0}", + Path.GetFileName(file))); + + // Execute request + string response = webClient.DownloadString(query); + + // Parse JSON response + JObject json = JObject.Parse(response); + + if (json["error"].ToObject() == false) + { + // Get URL to use for the file upload + string uploadUrl = json["presignedUrl"].ToString(); + // Get URL of uploaded file to use with later API calls + string uploadedFileUrl = json["url"].ToString(); + + // 2. UPLOAD THE FILE TO CLOUD. + + webClient.Headers.Add("content-type", "application/octet-stream"); + webClient.UploadFile(uploadUrl, "PUT", file); // You can use UploadData() instead if your file is in byte[] or Stream + + return uploadedFileUrl; + } + else + { + // Display service reported error + Console.WriteLine(json["message"].ToString()); + } + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + finally + { + webClient.Dispose(); + } + + return null; + } + + static string CheckJobStatus(string jobId) + { + using (WebClient webClient = new WebClient()) + { + // Set API Key + webClient.Headers.Add("x-api-key", API_KEY); + + string url = "https://api.pdf.co/v1/job/check?jobid=" + jobId; + + string response = webClient.DownloadString(url); + JObject json = JObject.Parse(response); + + return Convert.ToString(json["status"]); + } + } + } +} diff --git a/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/Properties/AssemblyInfo.cs b/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..9986fbb0 --- /dev/null +++ b/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/Properties/AssemblyInfo.cs @@ -0,0 +1,49 @@ +//*******************************************************************************************// +// // +// Download Free Evaluation Version From: https://bytescout.com/download/web-installer // +// // +// Also available as Web API! Get Your Free API Key: https://app.pdf.co/signup // +// // +// Copyright © 2017-2020 ByteScout, Inc. All rights reserved. // +// https://www.bytescout.com // +// https://pdf.co // +// // +//*******************************************************************************************// + + +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ByteScoutWebApiExample")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ByteScoutWebApiExample")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("872b5135-146b-4782-894d-7b6c3162308a")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/packages.config b/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/packages.config new file mode 100644 index 00000000..03c70925 --- /dev/null +++ b/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/sample.pdf b/Delete Text From PDF/C#/Remove And Blackout Credit Card Data From PDF/sample.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cadd1770efb4ae9844351f158a192ccfcd20d17f GIT binary patch literal 86828 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%0And`KHpa_ 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 literal 0 HcmV?d00001 diff --git a/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.NETCore.csproj b/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.NETCore.csproj new file mode 100644 index 00000000..82e9705c --- /dev/null +++ b/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.NETCore.csproj @@ -0,0 +1,35 @@ + + + + Exe + netcoreapp2.0 + false + false + false + false + false + false + false + false + false + false + false + false + + + + + + + + + + + + + + + Always + + + \ No newline at end of file diff --git a/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.NETCore.sln b/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.NETCore.sln new file mode 100644 index 00000000..6527b80b --- /dev/null +++ b/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.NETCore.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.32126.317 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ByteScoutWebApiExample.NETCore", "ByteScoutWebApiExample.NETCore.csproj", "{6C67B480-C7E2-4AF7-AE7B-0E12A5799D9C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6C67B480-C7E2-4AF7-AE7B-0E12A5799D9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6C67B480-C7E2-4AF7-AE7B-0E12A5799D9C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6C67B480-C7E2-4AF7-AE7B-0E12A5799D9C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6C67B480-C7E2-4AF7-AE7B-0E12A5799D9C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {FBAE862B-1737-4E3F-96CF-5B8772A7AC09} + EndGlobalSection +EndGlobal diff --git a/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.csproj b/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.csproj new file mode 100644 index 00000000..c5130112 --- /dev/null +++ b/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.csproj @@ -0,0 +1,63 @@ + + + + + Debug + AnyCPU + {1E1C2C34-017E-4605-AE2B-55EA3313BE51} + Exe + Properties + ByteScoutWebApiExample + ByteScoutWebApiExample + v4.6 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + packages\Newtonsoft.Json.10.0.3\lib\net40\Newtonsoft.Json.dll + True + + + + + + + + + + + + + + + Always + + + + + \ No newline at end of file diff --git a/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.sln b/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.sln new file mode 100644 index 00000000..44721634 --- /dev/null +++ b/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/ByteScoutWebApiExample.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.40629.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ByteScoutWebApiExample", "ByteScoutWebApiExample.csproj", "{1E1C2C34-017E-4605-AE2B-55EA3313BE51}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1E1C2C34-017E-4605-AE2B-55EA3313BE51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1E1C2C34-017E-4605-AE2B-55EA3313BE51}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1E1C2C34-017E-4605-AE2B-55EA3313BE51}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1E1C2C34-017E-4605-AE2B-55EA3313BE51}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/Program.cs b/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/Program.cs new file mode 100644 index 00000000..e1ab02fa --- /dev/null +++ b/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/Program.cs @@ -0,0 +1,231 @@ +//*******************************************************************************************// +// // +// Download Free Evaluation Version From: https://bytescout.com/download/web-installer // +// // +// Also available as Web API! Get Your Free API Key: https://app.pdf.co/signup // +// // +// Copyright © 2017-2020 ByteScout, Inc. All rights reserved. // +// https://www.bytescout.com // +// https://pdf.co // +// // +//*******************************************************************************************// + + +using System; +using System.IO; +using System.Net; +using Newtonsoft.Json.Linq; +using System.Threading; +using System.Collections.Generic; +using Newtonsoft.Json; + +// Cloud API asynchronous "Delete Text from PDF" job example. + +namespace ByteScoutWebApiExample +{ + class Program + { + // The authentication key (API Key). + // Get your own by registering at https://app.pdf.co + const String API_KEY = "YOUR_PDFco_API_KEY_HERE"; + + // Source PDF file + const string SourceFile = @".\sample.pdf"; + + // PDF document password. Leave empty for unprotected documents. + const string Password = ""; + + // Regex Enabled Search + const bool RegexEnabled = true; + + // Destination PDF file name + const string DestinationFile = @".\result.pdf"; + + + static void Main(string[] args) + { + // Upload file to the cloud + string uploadedFileUrl = UploadFile(SourceFile); + + if (string.IsNullOrEmpty(uploadedFileUrl)) + { + Console.WriteLine("File upload error."); + return; + } + + // Regular Expression to Search for SSN + string regex_ssn = @"[0-9]{3}-[0-9]{2}-[0-9]{4}"; + + // Regular Expression to Search Email Address + string regex_email = @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}"; + + + // Create standard .NET web client instance + WebClient webClient = new WebClient(); + + // Set API Key + webClient.Headers.Add("x-api-key", API_KEY); + + // Prepare requests params as JSON + // See documentation: https://apidocs.pdf.co/#pdf-search-and-delete-text-from-pdf + Dictionary parameters = new Dictionary(); + parameters.Add("name", Path.GetFileName(DestinationFile)); + parameters.Add("password", Password); + parameters.Add("url", uploadedFileUrl); + parameters.Add("searchStrings", new string[] { regex_ssn, regex_email }); + parameters.Add("regex", RegexEnabled); + + // Important: Specify Blackout Color + parameters.Add("profiles", @"{'UsePatch': true, 'PatchColor': '#000000'}"); + + parameters.Add("async", true); // ! Making Async request + + // Convert dictionary of params to JSON + string jsonPayload = JsonConvert.SerializeObject(parameters); + + // URL of `Delete Text from PDF` API call + string url = "https://api.pdf.co/v1/pdf/edit/delete-text"; + + try + { + // Execute POST request with JSON payload + string response = webClient.UploadString(url, jsonPayload); + + // Parse JSON response + JObject json = JObject.Parse(response); + + if (json["error"].ToObject() == false) + { + // Asynchronous job ID + string jobId = json["jobId"].ToString(); + // URL of generated PDF file that will available after the job completion + string resultFileUrl = json["url"].ToString(); + + // Check the job status in a loop. + // If you don't want to pause the main thread you can rework the code + // to use a separate thread for the status checking and completion. + do + { + string status = CheckJobStatus(jobId); // Possible statuses: "working", "failed", "aborted", "success". + + // Display timestamp and status (for demo purposes) + Console.WriteLine(DateTime.Now.ToLongTimeString() + ": " + status); + + if (status == "success") + { + // Download PDF file + webClient.DownloadFile(resultFileUrl, DestinationFile); + + Console.WriteLine("Generated PDF file saved as \"{0}\" file.", DestinationFile); + break; + } + else if (status == "working") + { + // Pause for a few seconds + Thread.Sleep(3000); + } + else + { + Console.WriteLine(status); + break; + } + } + while (true); + } + else + { + Console.WriteLine(json["message"].ToString()); + } + } + catch (WebException e) + { + Console.WriteLine(e.ToString()); + } + + webClient.Dispose(); + + + Console.WriteLine(); + Console.WriteLine("Press any key..."); + Console.ReadKey(); + } + + ///

+ /// Uploads file to the cloud and return URL of uploaded file to use in further API calls. + /// + /// Source file name (path). + /// URL of uploaded file + static string UploadFile(string file) + { + // Create standard .NET web client instance + WebClient webClient = new WebClient(); + + // Set API Key + webClient.Headers.Add("x-api-key", API_KEY); + + try + { + // 1. RETRIEVE THE PRESIGNED URL TO UPLOAD THE FILE. + // * If you already have a direct file URL, skip to the step 3. + + // Prepare URL for `Get Presigned URL` API call + string query = Uri.EscapeUriString(string.Format( + "https://api.pdf.co/v1/file/upload/get-presigned-url?contenttype=application/octet-stream&name={0}", + Path.GetFileName(file))); + + // Execute request + string response = webClient.DownloadString(query); + + // Parse JSON response + JObject json = JObject.Parse(response); + + if (json["error"].ToObject() == false) + { + // Get URL to use for the file upload + string uploadUrl = json["presignedUrl"].ToString(); + // Get URL of uploaded file to use with later API calls + string uploadedFileUrl = json["url"].ToString(); + + // 2. UPLOAD THE FILE TO CLOUD. + + webClient.Headers.Add("content-type", "application/octet-stream"); + webClient.UploadFile(uploadUrl, "PUT", file); // You can use UploadData() instead if your file is in byte[] or Stream + + return uploadedFileUrl; + } + else + { + // Display service reported error + Console.WriteLine(json["message"].ToString()); + } + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + finally + { + webClient.Dispose(); + } + + return null; + } + + static string CheckJobStatus(string jobId) + { + using (WebClient webClient = new WebClient()) + { + // Set API Key + webClient.Headers.Add("x-api-key", API_KEY); + + string url = "https://api.pdf.co/v1/job/check?jobid=" + jobId; + + string response = webClient.DownloadString(url); + JObject json = JObject.Parse(response); + + return Convert.ToString(json["status"]); + } + } + } +} diff --git a/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/Properties/AssemblyInfo.cs b/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..9986fbb0 --- /dev/null +++ b/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/Properties/AssemblyInfo.cs @@ -0,0 +1,49 @@ +//*******************************************************************************************// +// // +// Download Free Evaluation Version From: https://bytescout.com/download/web-installer // +// // +// Also available as Web API! Get Your Free API Key: https://app.pdf.co/signup // +// // +// Copyright © 2017-2020 ByteScout, Inc. All rights reserved. // +// https://www.bytescout.com // +// https://pdf.co // +// // +//*******************************************************************************************// + + +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ByteScoutWebApiExample")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ByteScoutWebApiExample")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("872b5135-146b-4782-894d-7b6c3162308a")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/packages.config b/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/packages.config new file mode 100644 index 00000000..03c70925 --- /dev/null +++ b/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/sample.pdf b/Delete Text From PDF/C#/Remove And Blackout Email and SSN Data From PDF/sample.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f859f2e8e1a60b007ef0d2e76c3c948cc3a80f5e GIT binary patch literal 34365 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 Date: Fri, 24 Feb 2023 12:05:11 +0000 Subject: [PATCH 3/3] Bump Newtonsoft.Json Bumps [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) from 10.0.3 to 13.0.2. - [Release notes](https://github.com/JamesNK/Newtonsoft.Json/releases) - [Commits](https://github.com/JamesNK/Newtonsoft.Json/compare/10.0.3...13.0.2) --- updated-dependencies: - dependency-name: Newtonsoft.Json dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- .../VB.NET/Invoice With Multiple Pages/packages.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF from HTML template/VB.NET/Invoice With Multiple Pages/packages.config b/PDF from HTML template/VB.NET/Invoice With Multiple Pages/packages.config index 03c70925..d9261b81 100644 --- a/PDF from HTML template/VB.NET/Invoice With Multiple Pages/packages.config +++ b/PDF from HTML template/VB.NET/Invoice With Multiple Pages/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file