Platforms to show: All Mac Windows Linux Cross-Platform

Previous items Next items

CURLNMBS.OptionFTPFileMethod as Integer
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: Pass an integer that should have one of the following values.
Notes:
This option controls what method libCURL should use to reach a file on a FTP(S) server. The argument should be one of the following alternatives:

URLFTPMETHOD_MULTICWD = 1

libCURL does a single CWD operation for each path part in the given URL. For deep hierarchies this means very many commands. This is how RFC1738 says it should be done. This is the default but the slowest behavior.

CURLFTPMETHOD_NOCWD = 2

libCURL does no CWD at all. libCURL will do SIZE, RETR, STOR etc and give a full path to the server for all these commands. This is the fastest behavior.

CURLFTPMETHOD_SINGLECWD = 3

libCURL does one CWD with the full target directory and then operates on the file "normally" (like in the multicwd case). This is somewhat more standards compliant than 'nocwd' but without the full penalty of 'multicwd'.
(Read and Write property)

See also FTP_FILEMETHOD option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionFTPListOnly as Boolean
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: True tells the library to just list the names of an ftp directory, instead of doing a full directory listing that would include file sizes, dates etc.
This item is deprecated and should no longer be used. You can use OptionDirListOnly instead.
Notes:
This causes an FTP NLST command to be sent. Beware that some FTP servers list only files in their response to NLST; they might not include subdirectories and symbolic links.

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
(Read and Write property)

Feedback, Comments & Corrections

CURLNMBS.OptionFTPPort as String
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: The port to use for ftp.
Notes:
It will be used to get the IP address to use for the ftp PORT instruction. The PORT instruction tells the remote server to connect to our specified IP address. The string may be a plain IP address, a host name, an network interface name (under Unix) or just a '-' letter to let the library use your systems default IP address. Default FTP operations are passive, and thus won't use PORT.

You disable PORT again and go back to using the passive version by setting this option to "".

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
(Read and Write property)

See also FTPPORT option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionFTPResponseTimeout as Integer
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: Causes CURL to set a timeout period (in seconds) on the amount of time that the server is allowed to take in order to generate a response message for a command before the session is considered hung.
Notes:
While CURL is waiting for a response, this value overrides OptionTimeout. It is recommended that if used in conjunction with OptionTimeout, you set OptionFTPResponseTimeout to a value smaller than OptionTimeout. (Added in 7.10.8)

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
(Read and Write property)

See also FTP_RESPONSE_TIMEOUT option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionFTPSkipPasvIP as Boolean
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: If set to a non-zero value, it instructs libCURL to not use the IP address the server suggests in its 227-response to libCURL's PASV command when libCURL connects the data connection.
Notes:
Instead libCURL will re-use the same IP address it already uses for the control connection. But it will use the port number from the 227-response. (Added in 7.14.2)

This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
(Read and Write property)

See also FTP_SKIP_PASV_IP option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionFTPSSL as Integer
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: Request using SSL / TLS for the transfer.
Example:
dim c as CURLNMBS
c.OptionUseSSL = c.kFTPSSL_ALL
c.OptionSSLVersion = c.kSSLVersionTLSv12
This item is deprecated and should no longer be used. You can use OptionUseSSL instead.
Notes:
Set to an integer using one of the values from below, to make libCURL use your desired level of SSL for the transfer.
These are all protocols that start out plain text and get "upgraded" to SSL using the STARTTLS command.
This is for enabling SSL/TLS when you use FTP, SMTP, POP3, IMAP etc.

CURLUSESSL_NONE0Don't attempt to use SSL.
CURLUSESSL_TRY1Try using SSL, proceed as normal otherwise.
CURLUSESSL_CONTROL2Require SSL for the control connection or fail with CURLE_USE_SSL_FAILED.
CURLUSESSL_ALL3Require SSL for all communication or fail with CURLE_USE_SSL_FAILED.
(Read and Write property)

Feedback, Comments & Corrections

CURLNMBS.OptionFTPSSLAuth as Integer
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: What kind of SSL authentication to use for FTP.
Notes:
Pass an integer using one of the values from below, to alter how libCURL issues "AUTH TLS" or "AUTH SSL" when FTP over SSL is activated (see CURLOPT_FTP_SSL). (Added in 7.12.2)

kFTPAUTH_DEFAULT = 0

Allow libCURL to decide

kFTPAUTH_SSL = 1

Try "AUTH SSL" first, and only if that fails try "AUTH TLS"

kFTPAUTH_TLS = 2

Try "AUTH TLS" first, and only if that fails try "AUTH SSL"

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
(Read and Write property)

See also FTPSSLAUTH option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionFTPSSLCCC as Integer
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: If enabled, this option makes libCURL use CCC (Clear Command Channel).
Notes:
It shuts down the SSL/TLS layer after authenticating. The rest of the control channel communication will be unencrypted. This allows NAT routers to follow the FTP transaction. Pass a long using one of the values below. (Added in 7.16.1)

CURLFTPSSL_CCC_NONE0Don't attempt to use CCC.
CURLFTPSSL_CCC_PASSIVE1Do not initiate the shutdown, but wait for the server to do it. Do not send a reply.
CURLFTPSSL_CCC_ACTIVE2Initiate the shutdown and wait for a reply.
(Read and Write property)

See also FTP_SSL_CCC option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionFTPUseEPRT as Boolean
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: If the value is true, it tells CURL to use the EPRT (and LPRT) command when doing active FTP downloads (which is enabled by CURLOPT_FTPPORT).
Notes:
Using EPRT means that it will first attempt to use EPRT and then LPRT before using PORT, but if you pass FALSE (zero) to this option, it will not try using EPRT or LPRT, only plain PORT. (Added in 7.10.5)

If the server is an IPv6 host, this option will have no effect as of 7.12.3.

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
(Read and Write property)

See also FTP_USE_EPRT option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionFTPUseEPSV as Boolean
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: If the value is true, it tells CURL to use the EPSV command when doing passive FTP downloads (which it always does by default).
Notes:
Using EPSV means that it will first attempt to use EPSV before using PASV, but if you pass FALSE (zero) to this option, it will not try using EPSV, only plain PASV.

If the server is an IPv6 host, this option will have no effect as of 7.12.3.

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
(Read and Write property)

See also FTP_USE_EPSV option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionFTPusePret as Boolean
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 11.0 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: If the value is true, it tells CURL to send a PRET command before PASV (and EPSV). Certain FTP servers, mainly drftpd, require this non-standard command for directory listings as well as up and downloads in PASV mode.
Notes:
Has no effect when using the active FTP transfers mode. (Added in 7.20.0)
(Read and Write property)

See also FTP_USE_PRET option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionGet as Boolean
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: If the true, this forces the HTTP request to get back to GET.
Notes:
usable if a POST, HEAD, PUT or a custom request have been used previously using the same CURL handle.

When setting OptionGet to a true value, it will automatically set OptionNoBody to true (since 7.14.1).

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
(Read and Write property)

Feedback, Comments & Corrections

CURLNMBS.OptionGSSAPIDelegation as Integer
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 18.2 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: Allow GSSAPI credential delegation.
Notes: (Read and Write property)

See also GSSAPI_DELEGATION option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionHappyEyeballsTimeOutMS as Integer
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 18.2 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: The happy eyeballs timeout.
Notes:
Head start in milliseconds to give happy eyeballs.
(Read and Write property)

See also HAPPY_EYEBALLS_TIMEOUT_MS option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionHAProxyProtocol as Boolean
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 18.2 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: Whether to send an HAProxy PROXY protocol header.
Notes:
Set to true to tell the library to send an HAProxy PROXY protocol header at beginning of the connection. The default action is not to send this header.
This option is primarily useful when sending test requests to a service that expects this header.
Most applications do not need this option.
Default false, do not send HAProxy PROXY protocol header.
(Read and Write property)

See also HAPROXYPROTOCOL option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionHeader as Boolean
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: True tells the library to include the header in the body output.
Notes:
The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.

This is only relevant for protocols that actually have headers preceding the data (like HTTP).
(Read and Write property)

See also HEADER option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionHeaderOptions as Integer
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 18.2 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: Pass in a bitmask of "header options".
Notes: (Read and Write property)

See also HEADEROPT option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionHTTPAuth as Integer
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: Which http authentication to use.
Notes:
Pass an integer as parameter, which is set to a bitmask, to tell libCURL what authentication method(s) you want it to use. The available bits are listed below. If more than one bit is set, libCURL will first query the site to see what authentication methods it supports and then pick the best one you allow it to use. For some methods, this will induce an extra network round-trip. Set the actual name and password with the UserPassword option. (Added in 7.10.6)

kAuthBASIC = 1

HTTP Basic authentication. This is the default choice, and the only method that is in wide-spread use and supported virtually everywhere. This is sending the user name and password over the network in plain text, easily captured by others.

kAuthDIGEST = 2

HTTP Digest authentication. Digest authentication is defined in RFC2617 and is a more secure way to do authentication over public networks than the regular old-fashioned Basic method.

kAuthGSSNEGOTIATE = 4

HTTP GSS-Negotiate authentication. The GSS-Negotiate (also known as plain "Negotiate") method was designed by Microsoft and is used in their web applications. It is primarily meant as a support for Kerberos5 authentication but may be also used along with another authentication methods. For more information see IETF draft draft-brezak-spnego-http-04.txt.

You need to build libCURL with a suitable GSS-API library for this to work.

kAuthNTLM = 8

HTTP NTLM authentication. A proprietary protocol invented and used by Microsoft. It uses a challenge-response and hash concept similar to Digest, to prevent the password from being eavesdropped.

You need to build libCURL with OpenSSL support for this option to work, or build libCURL on Windows.

kAuthANY = &hFFFFFFFF

This is a convenience macro that sets all bits and thus makes libCURL pick any it finds suitable. libCURL will automatically select the one it finds most secure.

kAuthANYSAFE = &hFFFFFFFE

This is a convenience macro that sets all bits except Basic and thus makes libCURL pick any it finds suitable. libCURL will automatically select the one it finds most secure.

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
(Read and Write property)

See also HTTPAUTH option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionHTTPContentDecoding as Integer
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: Pass a long to tell libCURL how to act on content decoding.
Notes:
If set to zero, content decoding will be disabled. If set to 1 it is enabled. Note however that libCURL has no default content decoding but requires you to use OptionEncoding for that. (added in 7.16.2)
(Read and Write property)

See also HTTP_CONTENT_DECODING option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionHTTPProxyTunnel as Boolean
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: Set the parameter to true to get the library to tunnel all operations through a given HTTP proxy.
Notes:
There is a big difference between using a proxy and to tunnel through it. If you don't know what this means, you probably don't want this tunneling option.

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
(Read and Write property)

See also HTTPPROXYTUNNEL option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionHTTPTransferDecoding as Integer
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: Pass an integer to tell libCURL how to act on transfer decoding.
Notes:
If set to zero, transfer decoding will be disabled, if set to 1 it is enabled (default). libCURL does chunked transfer decoding by default unless this option is set to zero. (added in 7.16.2)
(Read and Write property)

See also HTTP_TRANSFER_DECODING option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionHTTPVersion as Integer
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: Set to one of the values described below.
Notes:
They force libCURL to use the specific HTTP versions. This is not sensible to do unless you have a good reason.

kHTTP_VERSION_NONE = 0

We don't care about what version the library uses. libCURL will use whatever it thinks fit.

kHTTP_VERSION_1_0 = 1

Enforce HTTP 1.0 requests.

kHTTP_VERSION_1_1 = 2

Enforce HTTP 1.1 requests.

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
(Read and Write property)

See also HTTP_VERSION option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionIgnoreContentLength as Boolean
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: Whether to ignore the Content-Length header.
Notes:
This is useful for Apache 1.x (and similar servers) which will report incorrect content length for files over 2 gigabytes. If this option is used, CURL will not be able to accurately report progress, and will simply stop the download when the server ends the connection. (added in 7.14.1)
(Read and Write property)

See also IGNORE_CONTENT_LENGTH option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionInFileSize as Int64
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: When uploading a file to a remote site, this option should be used to tell libCURL what the expected size of the infile is.
Notes:
Note that this option does not limit how much data libCURL will actually send, as that is controlled entirely by what the read callback returns.

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
(Read and Write property)

See also INFILESIZE option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionInFileSizeLarge as Int64
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: When uploading a file to a remote site, this option should be used to tell libCURL what the expected size of the infile is.
This item is deprecated and should no longer be used. You can use OptionInFileSize instead.
Notes:
This value should be passed as a CURL_off_t. (Added in 7.11.0)

Note that this option does not limit how much data libCURL will actually send, as that is controlled entirely by what the read callback returns.

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
(Read and Write property)

Feedback, Comments & Corrections

CURLNMBS.OptionInterface as String
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: This set the interface name to use as outgoing network interface.
Notes:
The name can be an interface name, an IP address or a host name.

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
(Read and Write property)

See also INTERFACE option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionIPResolve as Integer
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 9.8 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: Allows an application to select what kind of IP addresses to use when resolving host names.
Example:
dim c as new CURLNMBS
c.OptionIPResolve = c.kIPRESOLVE_V4
Notes:
This is only interesting when using host names that resolve addresses using more than one version of IP. The allowed values are:

kIPRESOLVE_WHATEVER = 0

Default, resolves addresses to all IP versions that your system allows.

kIPRESOLVE_V4 = 1

Resolve to ipv4 addresses.

kIPRESOLVE_V6 = 2

Resolve to ipv6 addresses.

The Lasterror property is set. 0 for success.
You can set this value and later you can read it, but you cannot read the default value.
(Read and Write property)

See also IPRESOLVE option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionIssuerCert as String
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 10.0 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: A string naming a file holding a CA certificate in PEM format.
Notes:
If the option is set, an additional check against the peer certificate is performed to verify the issuer is indeed the one associated with the certificate provided by the option. This additional check is useful in multi-level PKI where one needs to enforce that the peer certificate is from a specific branch of the tree.

This option makes sense only when used in combination with the OptionSSLVerifyPeer option. Otherwise, the result of the check is not considered as failure.

A specific error code (CURLE_SSL_ISSUER_ERROR) is defined with the option, which is returned if the setup of the SSL/TLS session has failed due to a mismatch with the issuer of peer certificate (OptionSSLVerifyPeer has to be set too for the check to fail). (Added in 7.19.0)

Starting with version 18.0 the plugin will always use UTF-8 encoding for file path on Linux and macOS. For macOS we also do the unicode character normalization for file names for you.
(Read and Write property)

See also ISSUERCERT option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionIssuerCertBlob as String
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 20.3 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: Set issuer SSL certificate from memory blob.
Notes:
Pass data, which contains binary data of a CA certificate in PEM format. If the option is set, an additional check against the peer certificate is performed to verify the issuer is indeed the one associated with the certificate provided by the option. This additional check is useful in multi-level PKI where one needs to enforce that the peer certificate is from a specific branch of the tree.

This option should be used in combination with the OptionSSLVerifyPeer option. Otherwise, the result of the check is not considered as failure.

A specific error code (CURLE_SSL_ISSUER_ERROR) is defined with the option, which is returned if the setup of the SSL/TLS session has failed due to a mismatch with the issuer of peer certificate (OptionSSLVerifyPeer has to be set too for the check to fail).

This option is an alternative to OptionIssuerCert which instead expects a file name as input.
(Read and Write property)

See also ISSUERCERT_BLOB option in CURL manual.

Feedback, Comments & Corrections

CURLNMBS.OptionKeepSendingOnError as Integer
Type Topic Plugin Version macOS Windows Linux iOS Targets
property CURL MBS CURL Plugin 18.2 ✅ Yes ✅ Yes ✅ Yes ❌ No Desktop, Console & Web
Function: Whether to keep sending on error.
Notes:
Continue to send data if the server responds early with an HTTP status code >= 300
(Read and Write property)

See also KEEP_SENDING_ON_ERROR option in CURL manual.

Feedback, Comments & Corrections

Previous items Next items

The items on this page are in the following plugins: MBS CURL Plugin.

The biggest plugin in space...




Links
MBS Xojo PDF Plugins

Start Chat