What is ByteScout Cloud API Server? It is the ready to use Web API Server that can be deployed in less than 30 minutes into your own in-house server or into private cloud server. Can store data on in-house local server based storage or in Amazon AWS S3 bucket. Processing data solely on the server using buil-in ByteScout powered engine, no cloud services are used to process your data!.
On-demand (REST Web API) version:
Web API (on-demand version)
On-premise offline SDK for Windows:
60 Day Free Trial (on-premise)
unit ByteScoutWebApiExec;
interface
function WebAPIExec(query, api_key: string; var file_name: string): boolean;
implementation
uses
System.SysUtils,
Classes,
IdHTTP,
IdURI,
IdSSL,
IdSSLOpenSSL,
System.JSON;
function WebAPIExec(query, api_key: string; var file_name: string): boolean;
var
http: TIdHTTP;
http_file_downloader: TIdHTTP;
response_stream: TStringStream;
response: string;
io_handler: TIdSSLIOHandlerSocketOpenSSL;
response_json: TJSONObject;
is_error: TJSONBool;
file_url: string;
file_stream: TFileStream;
error_message: TJSONString;
begin
Result := false;
file_name := '';
// Put the necessary libeay32.dll & ssleay32.dll library versions in the
// program folder
io_handler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
io_handler.SSLOptions.Method := sslvSSLv23;
io_handler.SSLOptions.SSLVersions := [sslvSSLv23];
http := TIdHTTP.Create(nil);
http.HTTPOptions := http.HTTPOptions + [hoForceEncodeParams];
http.AllowCookies := true;
http.HandleRedirects := true;
http.Request.Connection := 'keep-alive';
http.Request.ContentType := 'application/json; charset=utf-8';
http.Request.UserAgent := 'User-Agent:Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36';
http.IOHandler := io_handler;
response_stream := TStringStream.Create();
file_stream := nil;
http_file_downloader := nil;
try
try
// Set API Key
http.Request.CustomHeaders.AddValue('x-api-key', api_key);
// Execute request
http.Get(query, response_stream);
// Parse JSON response
response_json := TJSONObject.ParseJSONValue(response_stream.DataString, false) as TJSONObject;
is_error := response_json.Values['error'] as TJSONBool;
if (not is_error.AsBoolean) then begin
file_url := TJSONString(response_json.Values['url']).ToString();
file_url := StringReplace(file_url, '"', '', [rfReplaceAll]);
file_name := ExtractFileName(StringReplace(file_url, '/', '\', [rfReplaceAll]));
file_name := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + file_name;
http_file_downloader := TIdHTTP.Create(nil);
// Download generated file
file_stream := TFileStream.Create(file_name, fmCreate);
http_file_downloader.Get(file_url, file_stream);
Result := true;
end else begin
error_message := response_json.Values['message'] as TJSONString;
raise Exception.Create(error_message.ToString);
end;
except
on E: Exception do begin
response := http.ResponseText;
Writeln(E.ClassName, ': ', E.Message);
end;
end;
finally
response_stream.Free();
http.Free();
if (Assigned(file_stream)) then
file_stream.Free();
if (Assigned(http_file_downloader)) then
http_file_downloader.Free();
end;
end;
end.
program DeleteTextFromPDF;
//*******************************************************************************************//
// //
// 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 //
// //
//*******************************************************************************************//
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
Classes,
IdURI,
ByteScoutWebApiExec in 'ByteScoutWebApiExec.pas';
const
// The authentication key (API Key).
// Get your own by registering at https://app.pdf.co/documentation/api
API_KEY: string = '********************************************'
// Direct URL of source PDF file.
SOURCE_FILE_URL: string = 'https://bytescout-com.s3.amazonaws.com/files/demo-files/cloud-api/pdf-split/sample.pdf';
// PDF document password. Leave empty for unprotected documents.
PASSWORD: string = '';
// Destination PDF file name
DESTINATION_FILE: string = 'result.pdf';
var
query: string;
file_name: string;
waiting_any_key: char;
begin
try
// Prepare URL for `Delete Text from PDF` API call
query := TIdURI.URLEncode(Format('https://localhost/pdf/edit/delete-text' +
'?name=%s&password=%s&url=%s&searchString=conspicuous',
[ExtractFileName(DESTINATION_FILE), PASSWORD, SOURCE_FILE_URL]));
if (WebAPIExec(query, API_KEY, file_name)) then
Writeln(Format('Generated PDF file saved as "%s" file.', [file_name]));
finally
Writeln('Press any key to continue...');
Readln(waiting_any_key);
end;
end.
See also:
Get Your API Key
See also: