An HTML File to PDF tool is a versatile and efficient solution that converts web pages or HTML documents into professionally formatted PDF files. This tool ensures that the original layout, styling, images, and structure of the HTML content are accurately preserved in the final PDF. With support for CSS, fonts, headers, footers, and responsive designs, HTML to PDF tools make it easy to turn websites, reports, invoices, or online articles into clean, shareable, and printable PDF documents. By automating the conversion process, users can quickly generate high-quality PDFs that maintain the look and functionality of the original HTML content, making it ideal for developers, businesses, and content creators.
Try it in Live Tool| Feature | Us | Other APIs |
|---|---|---|
| Credit-Based Pricing | Yes | Limited or confusing |
| Transparent Billing | Yes | Surprise charges |
| Dev-Focused Docs | Yes | Sparse examples |
| Free Credits | Yes | Paywall from day 1 |
| Fast Support | Yes | 3+ day wait time |
This example will sign your document with a Nutrient certificate.

Sign up and receive 100 credits for free, or log in to automatically add your API key to sample code. If you are not sure how credits are consumed read more in our pricing documentation , or check out this guide on calculating credit usage.

Add a PDF named document. pdf to your project folder. You can use our sample document.

Copy the code and run it from the same folder you added the files to. For more information, see our language-specific getting started guides.

Open result.pdf in your project folder to view the results.
curl -X POST "https://api.skynyx.dev/v1/html_file_to_pdf" -H "apiKey: your_default_api_key" -F "watermark_text=YourWatermarkText" -F "page_no=yes" -F "html_file=@/c/Users/YourName/Downloads/sample.html" -o result.json # html_file must be an HTML file, JSON 'result' contains PDF locationcurl -X POST https://api.skynyx.dev/v1/html_file_to_pdf ^
-H "apiKey: your_default_api_key" ^
-F "watermark_text=YourWatermarkText" ^
-F "page_no=yes" ^
-F "html_file=@\"C:/Users/YourName/Downloads/sample.html\"" ^
-o result.json # html_file must be an HTML file, JSON 'result' contains PDF locationimport java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import okhttp3.*;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class Program {
public static void main(String[] args) throws IOException {
OkHttpClient client = new OkHttpClient();
File htmlFile = new File("C:/Users/YourName/Downloads/sample.html"); // html_file must be an HTML file
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("watermark_text", "YourWatermarkText")
.addFormDataPart("page_no", "yes") // only "yes" or "no"
.addFormDataPart("html_file", htmlFile.getName(),
RequestBody.create(htmlFile, MediaType.parse("text/html")))
.build();
Request request = new Request.Builder()
.url("https://api.skynyx.dev/v1/html_file_to_pdf")
.addHeader("apiKey", "your_default_api_key")
.post(requestBody)
.build();
try (Response response = client.newCall(request).execute()) {
if (response.body() != null) {
String responseBody = response.body().string();
JsonObject json = JsonParser.parseString(responseBody).getAsJsonObject();
if (json.has("status") && json.get("status").getAsInt() == 200) {
try (FileOutputStream outputStream = new FileOutputStream("result.json")) {
outputStream.write(responseBody.getBytes());
}
System.out.println("Response saved to result.json");
System.out.println("PDF URL: " + json.get("result").getAsString());
} else {
System.out.println("API returned error: " + json.toString());
}
} else {
System.out.println("Empty response from server");
}
}
}
}const fs = require('fs');
const axios = require('axios');
const FormData = require('form-data');
async function main() {
const filePath = "C:/Users/YourName/Downloads/sample.html"; // must be an HTML file
const form = new FormData();
form.append('watermark_text', 'YourWatermarkText');
form.append('page_no', 'yes'); // only "yes" or "no"
form.append('html_file', fs.createReadStream(filePath));
try {
const response = await axios.post(
'https://api.skynyx.dev/v1/html_file_to_pdf',
form,
{ headers: { ...form.getHeaders(), 'apiKey': 'your_default_api_key' } }
);
const data = response.data;
if (data.status === 200) {
fs.writeFileSync('result.json', JSON.stringify(data, null, 2));
console.log('Response saved to result.json');
console.log('PDF URL:', data.result);
} else {
console.log('API returned error:', data);
}
} catch (error) {
console.error('Request error:', error.message);
}
}
main();using System;
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text.Json;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var filePath = @"C:\Users\YourName\Downloads\sample.html"; // must be an HTML file
var apiUrl = "https://api.skynyx.dev/v1/html_file_to_pdf";
using var client = new HttpClient();
using var form = new MultipartFormDataContent();
var fileBytes = File.ReadAllBytes(filePath);
var fileContent = new ByteArrayContent(fileBytes);
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/html");
form.Add(fileContent, "html_file", Path.GetFileName(filePath));
form.Add(new StringContent("YourWatermarkText"), "watermark_text");
form.Add(new StringContent("yes"), "page_no"); // only "yes" or "no"
client.DefaultRequestHeaders.Add("apiKey", "your_default_api_key");
var response = await client.PostAsync(apiUrl, form);
var responseBody = await response.Content.ReadAsStringAsync();
var json = JsonSerializer.Deserialize<JsonElement>(responseBody);
if (json.GetProperty("status").GetInt32() == 200) {
await File.WriteAllTextAsync("result.json", responseBody);
Console.WriteLine("PDF URL: " + json.GetProperty("result").GetString());
} else {
Console.WriteLine("API returned error: " + responseBody);
}
}
}import requests
import json
file_path = "C:/Users/YourName/Downloads/sample.html" # must be an HTML file
url = "https://api.skynyx.dev/v1/html_file_to_pdf"
headers = {"apiKey": "your_default_api_key"}
files = {"html_file": open(file_path, "rb")}
data = {"watermark_text": "YourWatermarkText", "page_no": "yes"} # only "yes" or "no"
response = requests.post(url, headers=headers, files=files, data=data)
if response.status_code == 200:
json_data = response.json()
if json_data.get("status") == 200:
with open("result.json", "w") as out_file:
json.dump(json_data, out_file, indent=2)
print("Response saved to result.json")
print("PDF URL:", json_data.get("result"))
else:
print("API returned error:", json_data)
else:
print("HTTP request failed with status:", response.status_code)<?php
$filePath = 'C:/Users/YourName/Downloads/sample.html'; // must be an HTML file
$url = 'https://api.skynyx.dev/v1/html_file_to_pdf';
$apiKey = 'your_default_api_key';
$ch = curl_init();
$postFields = [
'watermark_text' => 'YourWatermarkText',
'page_no' => 'yes', // only "yes" or "no"
'html_file' => new CURLFile($filePath, 'text/html', basename($filePath))
];
$headers = ['apiKey: ' . $apiKey];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
file_put_contents('result.json', $response);
echo "Response saved to result.json
";
echo "PDF URL: " . json_decode($response, true)['result'];POST /v1/html_file_to_pdf HTTP/1.1
Host: api.skynyx.dev
apiKey: your_default_api_key
Content-Type: multipart/form-data; boundary=----BOUNDARY
------BOUNDARY
Content-Disposition: form-data; name="watermark_text"
YourWatermarkText
------BOUNDARY
Content-Disposition: form-data; name="page_no"
yes
------BOUNDARY
Content-Disposition: form-data; name="html_file"; filename="sample.html"
Content-Type: text/html
<content of your HTML file>
------BOUNDARY--
# Response: JSON, 'result' field contains PDF location