PDF Converter API

Complete API reference for frontend integration. This API provides PDF conversion and content extraction endpoints.

Base URL
bash
https://pdf.dhibi.tn/api

Replace with your production URL when deployed.

Authentication

Currently, no authentication is required. Rate limiting is applied per IP address (100 requests per 15 minutes by default).

Endpoints

GET

Health Check

Check if the server is running.

/health
json
{
  "status": "success",
  "message": "Server is running",
  "timestamp": "2025-10-11T10:30:00.000Z",
  "uptime": 123.456,
  "environment": "development"
}
GET

PDF Service Health

Check if the PDF conversion service is operational.

/pdf/health
json
{
  "status": "success",
  "message": "PDF conversion service is operational",
  "endpoints": {
    "convert": "POST /convert - Convert PDF pages to images (png/jpeg)",
    "extract": "POST /extract - Extract text and images from PDF"
  },
  "supportedFormats": ["png", "jpeg"],
  "maxFileSize": "10MB"
}
POST

Convert PDF to Images

Convert all pages of a PDF document to images (PNG or JPEG format).

/pdf/convert
Query Parameters
  • format (optional): Output image format. `png` (default) or `jpeg`.
Request Body
  • pdf (required): PDF file to convert (max 10MB).
javascript
import axios from 'axios';

const convertPdfToImages = async (pdfFile, format = 'png') => {
  const formData = new FormData();
  formData.append('pdf', pdfFile);

  try {
    const response = await axios.post(
      `https://pdf.dhibi.tn/api/pdf/convert?format=${format}`,
      formData,
      {
        responseType: 'blob', // Important for binary data
        headers: { 'Content-Type': 'multipart/form-data' },
      }
    );

    // Create download link
    const url = window.URL.createObjectURL(new Blob([response.data]));
    const link = document.createElement('a');
    link.href = url;
    link.setAttribute('download', 'converted.zip');
    document.body.appendChild(link);
    link.click();
    link.remove();
    
    return response.data;
  } catch (error) {
    console.error('Conversion failed:', error);
    throw error;
  }
};
POST

Convert Images to PDF

Convert multiple images (PNG/JPEG) into a single PDF document.

/pdf/images-to-pdf
Request Body
  • images (required): Array of image files (max 20 files, 10MB each).
javascript
const convertImagesToPdf = async (imageFiles) => {
  const formData = new FormData();
  
  // Append all images to the form data
  imageFiles.forEach((file) => {
    formData.append('images', file);
  });

  try {
    const response = await axios.post(
      'https://pdf.dhibi.tn/api/pdf/images-to-pdf',
      formData,
      {
        responseType: 'blob',
        headers: { 'Content-Type': 'multipart/form-data' },
      }
    );

    // Download logic...
  } catch (error) {
    console.error('Conversion failed:', error);
  }
};
POST

Convert PDF to DOCX

Convert a PDF document to DOCX (Microsoft Word) format.

/pdf/pdf-to-docx
Query Parameters
  • includeImages (optional): `true` (default) or `false`.
  • preservePageBreaks (optional): `true` (default) or `false`.
Request Body
  • pdf (required): PDF file to convert.
javascript
const convertPdfToDocx = async (pdfFile) => {
  const formData = new FormData();
  formData.append('pdf', pdfFile);

  try {
    const response = await axios.post(
      'https://pdf.dhibi.tn/api/pdf/pdf-to-docx?includeImages=true',
      formData,
      { responseType: 'blob' }
    );
    // Download logic...
  } catch (error) {
    console.error('Error:', error);
  }
};
POST

Extract Text & Images

Extract text content and embedded images from a PDF document.

/pdf/extract
javascript
const extractPdfContent = async (pdfFile) => {
  const formData = new FormData();
  formData.append('pdf', pdfFile);

  try {
    const response = await axios.post(
      'https://pdf.dhibi.tn/api/pdf/extract',
      formData,
      { responseType: 'blob' }
    );
    // Download ZIP logic...
  } catch (error) {
    console.error('Error:', error);
  }
};

Error Handling

All endpoints return consistent error responses in JSON format:

json
{
  "status": "error",
  "message": "Descriptive error message",
  "statusCode": 400
}

Common Status Codes

CodeMeaningCommon Causes
400Bad RequestMissing file, invalid format/params
413Payload Too LargeFile exceeds 10MB limit
500Internal Server ErrorProcessing failed on server