Language examples






Tabex APIs 










Tabex PDF to Excel API and PDF to XML API  Try it now

Tabex PDF to Excel Api (alongside with the PDF to XML) is designed to offer both performances and flexibility. This is a restful API which offers high speed and precision. Developers can call the API in different modes and integrate it in a variety of work flows for semantic analysis, data capture, scrape data from PDF, automation in invoice processing, mortgage processing and account receivable processing.

Tabex PDF API can be used in lieu of some of the functions offered by Adobe PDF library and PDF box. Developers leveraging Tabex PDF API have also built applications in which Tabex works in tandem with other pdf libraries and pdf sdk packages. Some applications have also included the use of php PDF Library.

PDF to Excel API Processing Modes

AUTO In the auto mode the API will automatically recognize tables within a document. This mode is adapt for fox lengthy documents with scattered tables throughout the document. It is also effective when you want to rapidly convert dozens of pages from pdf to excel and quickly identify all pdf tables within the document.

PAGE BOX Page box allows developer to point the Tabex PDF to excel API towards a particular box in the page. This mode offers high precision in recognizing and extracting pdf tables to excel each time that you can identify a recurring geometrical theme within a document. It is also essential if you want to build an interactive end user interface to extract PDF tables to excel, CSV and XML

PAGE WIDTH This mode allows developer to extract the entire pdf page as a table in one of the supported formats. Tabex PDF to Excel API in this case will return a page within a excel document and each sub tables still accurately recognized. This method is adapt for cases in which the developer is primarily interested in the numerical and textual data within the tables as opposed to determining the table layout accurately. It can be an essential tool when dealing with complex page formats that depart from the standard.

  • XML
  • XLS
  • CSV
  • HTML
  • TXT
  • JSON*
  • JPG*
  • PNG** Send us an email for these formats.
  • Standard up to 20Mb and 1500 pages
  • Supported Scanned Documents
  • Inquire for special needs
  • All European languages, Arabic , Chinese, Korean
  • Detects page tilt automatically
  • Detects page rotation automatically
  • High processing speed
  • Up to 1000 pages per minute
  • High Accuracy


Learn more about API pricing

See all the pricing

Guidelines to use the PDF To Excel API    Try it now

Tabex api is a simple multipart HTTP request with the content of the file to base url

The value of parameter is key obtained from Tabex support.

The following table show all the parameters the HTTP request accept

Parameter Name Required (Y/N) Range of Values Description
tab2exkey Y N/A Key that enables the use of api
pdfDownloadUrl N http/https url This option permits to parse documents directly from an url. In this case any other file in HTTP request will be ignored
fileName Y N/A Give a name to your file
recognitionMethod N – auto
– PageWidthIgnore
– PageWidth
This parameter permits to change the recognition table method:
– auto
– PageWidthIgnore (create a first table having width = page width)
– PageWidth (create a first table having width = page width)
outputFormat Y – CSV
Choose the desired output format of conversion
xlsExportFileType N – xls
– xlsx
In case of output format XLS you can choose both xls or xlsx file format
In case of output format XLS you can choose a single file sheet or a multiple sheet
xlsDateFormatString N N/A Date format: default is MM/dd/yyyy
xlsDecimalSeparatorString N . or , In case of output format XLS choose decimal seperator. Default is .
xlsThousandsSeparatorString N . or , In case of output format XLS choose thousands seperator. Default is ,
forceOCR N – true
– false
This parameter permits to force an ocr parsing process even the pdf document doesn’t need.
lang N – English
– German
– French
– Spanish
– Russian
– Italian
– Portuguese
– Dutch
– Finnish
– Catalan
– Indonesian
– Swedish
– Turkish
– Romanian
– Danish
– Norwegian
– Polish
– Hungarian
– Estonian
– Slovenian
– Croatian
– Czech
– Slovak
– Lithuanian
– Latvian
– Bulgarian
– Chinese_Simplified
– Chinese_Traditional
– Arabic
– Korean
– Japanese
In case of OCR you can set a preferred language

To monitor the status of your conversions you can use the following call:


Receiving a json-file as output in the following form:

{"usage":m, "threshold": n}

where :

  • usage: give total number of your conversions completed without errors
  • threshold: is the limit of conversions.

If usage reaches the value of threshold the conversions won’t be permitted until you will buy a  recharge.

Example: CURL    Try it now

This is a typical http request using curl utility command line:

curl -v -s -o mygettext.xlsx -F file=@ATTInc.1-39.pdf ""

In the headers you can find information about the status of calling.

Example: JAVA    Try it now

This is a sample java class that implements http request:

package com.tabex.tab2ex.client;

import java.util.Arrays;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

public class Tab2exPublicApi {

    public static byte[] read(File file) throws IOException {

        ByteArrayOutputStream ous = null;
        InputStream ios = null;
        try {
            byte[] buffer = new byte[4096];
            ous = new ByteArrayOutputStream();
            ios = new FileInputStream(file);
            int read = 0;
            while ((read = != -1) {
                ous.write(buffer, 0, read);
        } finally {
            try {
                if (ous != null) {
            } catch (IOException e) {

            try {
                if (ios != null) {
            } catch (IOException e) {
        return ous.toByteArray();

    public static void main(String[] args) throws IOException {
        String fileName = "ATTInc.1-39.pdf";
        String uri = "";
        String fileNameOut = "ATTInc.1-39.xlsx";
        byte[] inputBytes = File(fileName));
        MultiValueMap<String, Object> multipartMap = new LinkedMultiValueMap<String, Object>();
        Resource pdfFile = new FileSystemResource(fileName);
        multipartMap.add("tab2exkey", "ABCDEFG");
        multipartMap.add("fileName", "ATTInc.1-39");
        multipartMap.add("recognitionMethod", "auto");
        multipartMap.add("outputFormat", "XLS");
        multipartMap.add("xlsExportType", "xlsx");
        multipartMap.add("file", pdfFile);
        RestTemplate template = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(new MediaType("multipart", "form-data"));
        HttpEntity<Object> request = new HttpEntity<Object>(multipartMap, headers);
        ResponseEntity<byte[]> httpResponse =, HttpMethod.POST, request, byte[].class);
        if (httpResponse.getStatusCode().equals(HttpStatus.OK)) {
            FileOutputStream output = new FileOutputStream(new File(fileNameOut));
            IOUtils.write(httpResponse.getBody(), output);

In the headers you can find information about the status of calling.

Example: PHP     Try it now

This is a sample php snippet that implements http request:


    $ch = curl_init('');

    $fp = fopen("sample.xls", 'w+');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FILE, $fp); 
    curl_setopt($ch, CURLOPT_POST,1);

    $data = array(
        'tab2exkey'    =>    "APY_key", 
        "fileName"    =>    "sample",
        "recognitionMethod"    =>    "auto",
        "outputFormat"    =>    "XLS",
        "xlsExportType"    =>    "xlsx",
        "file" => curl_file_create('sample.pdf')

    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);


In the headers you can find information about the status of calling.

Example: Node.js     Try it now

This is a sample Node.js snippet that implements http request:

var express = require('express');
var fs = require('fs');
var request = require('request');
var router = express.Router();

router.get('/', function (req, res) {

    res.set('Content-Disposition', 'attachment; filename="sample.xls"');

    var formData = {
        tab2exkey: 'APY_key',
        fileName: 'sample',
        recognitionMethod: 'auto',
        outputFormat: 'XLS',
        xlsExportType: 'xlsx',
        file: fs.createReadStream('sample.pdf')
        url: '',
        formData: formData


module.exports = router;

In the headers you can find information about the status of calling.

Example: JavaScript     Try it now

This is a sample HTML snippet which renders a form to implements http request:

<form id=”tabex-form”>
<input id=”user-file” accept=”application/pdf” name=”file” type=”file” />
<input type=”submit” />

This is a sample JavaScript snippet which implements http request using the previous HTML form:

jQuery('#tabex-form').on('submit', function(event){
    var formData = new FormData();
    formData.append('tab2exkey', 'APY_key');
    formData.append('fileName', 'sample');
    formData.append('recognitionMethod', 'auto');
    formData.append('outputFormat', 'XLS');
    formData.append('xlsExportType', 'xlsx');
    formData.append('file', jQuery('#user-file').get(0).files[0]);
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        var a;
        if (xhttp.readyState === 4 && xhttp.status === 200) {
            a = document.createElement('a');
            a.href = window.URL.createObjectURL(xhttp.response);
   = "sample.xls";
   = 'none';
    };"POST", '');
    xhttp.responseType = 'blob';

In the headers you can find information about the status of calling.

Tabex offers an API to convert pdf document and extract data directly from your applications. Contact us  instantly receive the API Key .


Fill the form below to instantly  receive the API Keys for a free Trial