to Converter Online

A live demo of BuildVu — an embeddable conversion library for your own applications

Alert

 


Advanced options

Uploading your file...

Come and visit us...

How to convert PDF to HTML

  1. Select the PDF file you would like to convert
  2. Configure the conversion using the advanced options
  3. Convert your PDF file to HTML
  4. View or save your newly created HTML file
Pricing Limitations Usage restrictions Max file size
Free 5 files per day, watermark Free for Personal and Commercial use Up to 50MB

About this converter and BuildVu

This free online converter runs BuildVu, IDRsolutions' PDF to HTML conversion engine. When you upload a file here, you're seeing the same output your application would produce.

The software exposes a REST API, making it callable from any language that can make an HTTP POST request. We have specific examples for C#, Dart, Java, JavaScript, Node.js, PHP, Python and Ruby.

It converts PDF files to clean, standards-compliant HTML5 and CSS while preserving the original layout, fonts, and structure without rasterising content to images.

Unlike the online converter above, which requires manual file upload, BuildVu is designed for automated, unattended processing, converting single files or entire directories programmatically as part of a pipeline.

If the output quality meets your requirements, you can trial the commercial version for use on your own servers or via our cloud API.

Running BuildVu on your own infrastructure means PDF files never leave your environment with no third-party processing, no data retention questions.

Convert using Cloud API

Our cloud API allows more files, has additional features and can be accessed programmatically.

<?php
require_once __DIR__ . "/PATH/TO/vendor/autoload.php";

use IDRsolutions\IDRCloudClient;

$endpoint = "https://cloud.idrsolutions.com/cloud/" . IDRCloudClient::INPUT_BUILDVU;
$parameters = array(
    'token' => 'YOUR_TRIAL_TOKEN', // Token provided to you via e-mail
    'input' => IDRCloudClient::INPUT_UPLOAD,
    'file' => 'path/to/file.pdf'
);

$results = IDRCloudClient::convert(array(
    'endpoint' => $endpoint,
    'parameters' => $parameters
));

IDRCloudClient::downloadOutput($results, 'path/to/outputDir');

echo $results['downloadUrl'];
require 'idr_cloud_client'

client = IDRCloudClient.new('https://cloud.idrsolutions.com/cloud/' + IDRCloudClient::BUILDVU)

conversion_results = client.convert(
    input: IDRCloudClient::UPLOAD,
    file: 'path/to/file.pdf',
    token: 'YOUR_TRIAL_TOKEN' # Token provided to you via e-mail
)

client.download_result(conversion_results, 'path/to/outputDir')

puts 'Converted: ' + conversion_results['downloadUrl']
using idrsolutions_csharp_client;
var client = new IDRCloudClient("https://cloud.idrsolutions.com/cloud/" + IDRCloudClient.BUILDVU);

try
{
    Dictionary<string, string> parameters = new Dictionary<string, string>
    {
        ["input"] = IDRCloudClient.UPLOAD,
        ["token"] = "YOUR_TRIAL_TOKEN", // Token provided to you via e-mail
        ["file"] = "path/to/file.pdf"
    };

    Dictionary<string, string> conversionResults = client.Convert(parameters);

    client.DownloadResult(conversionResults, "path/to/outputDir");

    Console.WriteLine("Converted: " + conversionResults["downloadUrl"]);
}
catch (Exception e)
{
    Console.WriteLine("File conversion failed: " + e.Message);
}
var idrcloudclient = require('@idrsolutions/idrcloudclient');

idrcloudclient.convert({
    endpoint: 'https://cloud.idrsolutions.com/cloud/' + idrcloudclient.BUILDVU,
    parameters: {
        input: idrcloudclient.UPLOAD,
        file: 'path/to/file.pdf',
        token: 'YOUR_TRIAL_TOKEN' // Token provided to you via e-mail
    },

    failure: function(e) {
        console.log(e);
    },
    progress: function() { },
    success: function(e) {
        console.log('Converted ' + e.downloadUrl);
    }
});
from IDRSolutions import IDRCloudClient

client = IDRCloudClient('https://cloud.idrsolutions.com/cloud/' + IDRCloudClient.BUILDVU)
try:
    result = client.convert(
        input=IDRCloudClient.UPLOAD,
        file='path/to/file.pdf',
        token='YOUR_TRIAL_TOKEN' # Token provided to you via e-mail
    )

    outputURL = result['downloadUrl']

    client.downloadResult(result, 'path/to/outputDir')

    if outputURL is not None:
        print("Download URL: " + outputURL)

except Exception as error:
    print(error)
// To add the client to your project use will need to add the file idrcloudclient.js to your project and include the following line to access it:
// <script src="path/to/idrcloudclient.js" type="text/javascript"></script>

var endpoint = 'https://cloud.idrsolutions.com/cloud/' + IDRCloudClient.BUILDVU;
var parameters =  { 
    token: 'YOUR_TRIAL_TOKEN', // Token provided to you via e-mail
    input: IDRCloudClient.UPLOAD,
    file: 'path/to/exampleFile.pdf'
}

function progressListener(e) {
    console.log(JSON.stringify(e));
}

function failureListener(e) {
    console.log(e);
    console.log('Failed!');
}

function successListener(e) {
    console.log(JSON.stringify(e));
    console.log('Download URL: ' + e.downloadUrl);
}

IDRCloudClient.convert({
    endpoint: endpoint,
    parameters: parameters,
    
    // The below are the available listeners
    progress: progressListener,
    success: successListener,
    failure: failureListener
});
import java.util.Map;

public final class ExampleUsage {

    public static void main(final String[] args) {

        final IDRCloudClient client = new IDRCloudClient("https://cloud.idrsolutions.com/cloud/" + IDRCloudClient.BUILDVU);

        
        final HashMap<String, String> params = new HashMap<>();
        params.put("token", "YOUR_TRIAL_TOKEN"); // Token provided to you via e-mail
        params.put("input", IDRCloudClient.UPLOAD);
        params.put("file", "path/to/file.pdf");
        
        try {
            final Map<String, String> results = client.convert(params);

            System.out.println("   ---------   ");
            System.out.println(results.get("previewUrl"));

            IDRCloudClient.downloadResults(results, "path/to/outputDir", "example");
        } catch (final ClientException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}
import 'dart:io';
import 'package:http/http.dart' as http;
import 'package:http_parser/http_parser.dart';
import 'package:path/path.dart';
import 'dart:convert' as convert;

void main() async {
  final apiUrl = 'https://cloud.idrsolutions.com/cloud/buildvu';
  final filePath = 'path/to/exampleFile.pdf';
  final file = File(filePath);

  // Prepare the request headers and form data
  final request = http.MultipartRequest('POST', Uri.parse(apiUrl));
  request.fields['token'] = 'YOUR_TRIAL_TOKEN'; // Token provided to you via e-mail
  request.fields['input'] = 'upload';

  // Add the file to the form data
  final fileBytes = await file.readAsBytes();
  final fileStream = http.ByteStream.fromBytes(fileBytes);
  final fileLength = file.lengthSync();
  final fileName = basename(filePath);

  request.files.add(http.MultipartFile(
    'file',
    fileStream,
    fileLength,
    filename: fileName,
    contentType: MediaType('application', 'pdf'),
  ));

  late String uuid;
  // Send the request to upload the file
  try {
    final response = await request.send();

    if (response.statusCode != 200) {
      print('Error uploading file: ${response.statusCode}');
      exit(1);
    }
    
    final responseBody = await response.stream.bytesToString();
    final Map<String, dynamic> responseData = convert.jsonDecode(responseBody);
    uuid = responseData['uuid'];
    print('File uploaded successfully!');
  } catch (e) {
    print('Error uploading file: $e');
    exit(1);
  }

  // Poll until done
  try {
    while (true) {
      final pollResponse = await http.Request('GET', Uri.parse('$apiUrl?uuid=$uuid')).send();
      if (pollResponse.statusCode != 200) {
        print('Error Polling: ${pollResponse.statusCode}');
        exit(1);
      }
      final Map<String, dynamic> pollData = convert.jsonDecode(await pollResponse.stream.bytesToString());
      if (pollData['state'] == "processed") {
        print("Preview URL: ${pollData['previewUrl']}");
        print("Download URL: ${pollData['downloadUrl']}");
        break;
      } else {
        print("Polling: ${pollData['state']}");
      }

      // Wait for next poll
      await Future.delayed(Duration(seconds: 1));
    }
  } catch (e) {
    print('Error polling file: $e');
    exit(1);
  }
}
Pricing Limitations Usage restrictions Max file size
350-450 USD a month 1 file at a time Max 500 conversions a day Up to 250MB

Convert on your own Cloud or On-Premise Servers

Our software can be licensed to run on your own hardware, providing maximum security and flexibility.

# PDF to HTML
java -Xmx512M -jar buildvu-html.jar /inputDirectory/ /outputDirectory/

# PDF to SVG
java -Xmx512M -jar buildvu-svg.jar /inputDirectory/ /outputDirectory/
docker run -p 80:80 --mount "source=/path/to/war/buildvu-microservice.war,target=/usr/local/tomcat/webapps/ROOT.war,type=bind" idrsolutions/buildvu
HTMLConversionOptions conversionOptions = new HTMLConversionOptions();
// Set conversion options here e.g. conversionOptions.setCompressImages(true);

IDRViewerOptions viewerOptions = new IDRViewerOptions();
// Set viewer options here e.g. viewerOptions.setViewerUI(IDRViewerOptions.ViewerUI.Clean);

File pdfFile = new File("C:/MyDocument.pdf");
File outputDir = new File("C:/MyOutputDirectory/");

PDFtoHTML5Converter converter = new PDFtoHTML5Converter(pdfFile, outputDir, conversionOptions, viewerOptions);

try {
    converter.convert();
} catch (PdfException e) {
    e.printStackTrace();
}
Pricing Limitations Usage restrictions Max file size
4,500 USD per year Capacity of Server Max 8 cores Unlimited

PDF Information

Name PDF
File Extension .pdf
MIME Type application/pdf
Category Document Format
Description PDF (Portable Document Format) is a document format which can include links and buttons, form fields, audio, video, and business logic. PDF files are very popular because they are portable across different systems but they are not ideal for showing content online and on mobile devices.

HTML Information

Name HTML
File Extension .html
MIME Type text/html
Category Document Format
Description HTML (Hypertext Markup Language) is the core language of the internet and is used to design and build web sites. Converting documents to HTML allows the document to be displayed in the web browser, allowing you to view the document on any desktop, mobile or tablet device.

Frequently Asked Questions

What is the online converter and how does it relate to BuildVu?

The online converter is a live demo of BuildVu, IDRsolutions' PDF to HTML conversion engine. The output you see here is exactly what your application would produce after integrating BuildVu.

How does PDF to HTML conversion preserve fonts and layout?

BuildVu converts text, fonts, and positioning data from the PDF directly into HTML and CSS — it does not rasterise pages to images. The result is selectable, searchable text with the original visual layout intact.

How is this different from a PDF viewer like PDF.js?

A PDF viewer renders a PDF inside the browser — the PDF file itself remains the source. BuildVu converts the PDF into standalone HTML files that any browser can render without a PDF viewer or plugin. The output is independent of the original PDF.

Are my PDF files processed securely?

The free online converter uploads files to IDRsolutions' servers, where they are stored for up to one hour before deletion.

Does BuildVu require me to manually upload files?

Unlike this demo tool, which requires a manual file upload, BuildVu is designed for automated processing — converting single files or entire directories programmatically without any user interaction.

Can I run this conversion server-side in my own application?

Yes. BuildVu is available as a self-hosted server license (runs on your own hardware or cloud infrastructure) or as a managed cloud API. Both support programmatic conversion without file limits or watermarks.

How does your converter compare to other PDF to HTML/ Image/ SVG converters?

Our online converter is free to use and uses all our commercial software to do conversion.

Does the online converter include support?

No, there is no support included with our online converter.

Is there a limit on the size and number of files I can convert?

Yes, there is a 50MB file size limit and you can convert 5 files per day. If you are looking to convert more documents than that please contact our sales team at https://www.idrsolutions.com/contact-us.

External hyperlinks do not work?

The free online converter does not support hyperlinks to prevent phishing. Hyperlinks are supported in the commercial version of BuildVu, however.

Can I use my converted file on my website?

You can use it for any legitimate commercial or personal use so long as you do not remove the watermark linking to our converter.