How to merge PDF documents from urls for PDF merging API in Delphi and Web API Web API: the Web API with a set of tools for documents manipulation, data conversion, data extraction, splitting and merging of documents. Includes image recognition, built-in OCR, barcode generation and barcode decoders to decode bar codes from scans, pictures and pdf.

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 MergePDFDocumentsFromURLs; //*******************************************************************************************// // // // Download Free Evaluation Version From: // // // // Also available as Web API! Get Your Free API Key: // // // // Copyright ? 2017-2020 ByteScout, Inc. All rights reserved. // // // // // // // //*******************************************************************************************// {$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 API_KEY: string = '********************************************' // Destination PDF file name DESTINATION_FILE: string = 'result.pdf'; // Direct URLs of PDF files to merge SOURCE_FILES: array [0..1] of string = ( '', '' ); var query: string; file_name: string; waiting_any_key: char; files: string; i: integer; begin try // Prepare URL for `Merge PDF` API call files := ''; for i := 0 to High(SOURCE_FILES) do begin if (Length(files) > 0) then files := files + ','; files := files + SOURCE_FILES[i]; end; query := TIdURI.URLEncode(Format('' + '?name=%s&url=%s', [ExtractFileName(DESTINATION_FILE), files])); 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.



Get 60 Day Free Trial

See also:


Get Your API Key

See also:

Related Samples: