Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions DotNET/Endpoint Examples/JSON Payload/pdf-from-csv.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* What this sample does:
* - Converts structured CSV input to PDF through the /pdf endpoint.
*
* Setup (environment):
* - Set PDFREST_API_KEY=your_api_key_here
* - Optional: set PDFREST_URL to override the API region.
*
* Usage:
* dotnet run -- pdf-from-csv <inputFile>
*/
using Newtonsoft.Json.Linq;
using System.Net.Http.Headers;
using System.Text;

namespace Samples.EndpointExamples.JsonPayload;

public static class PdfFromCsv
{
public static async Task Execute(string[] args)
{
var inputPath = args.Length > 0 ? args[0] : "/path/to/sample.csv";
var apiKey = Environment.GetEnvironmentVariable("PDFREST_API_KEY");
if (string.IsNullOrWhiteSpace(apiKey)) throw new InvalidOperationException("Missing PDFREST_API_KEY");
var baseUrl = Environment.GetEnvironmentVariable("PDFREST_URL") ?? "https://api.pdfrest.com";
using var client = new HttpClient { BaseAddress = new Uri(baseUrl) };
client.DefaultRequestHeaders.TryAddWithoutValidation("Api-Key", apiKey);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var options = JObject.Parse(@"{""title"":""Structured Content Sample"",""language"":""en-US"",""enable_tagging"":true,""page_setup"":{""size"":""Letter"",""orientation"":""portrait"",""margin"":{""top"":36,""right"":42,""bottom"":36,""left"":42}},""style"":{""font"":""Arial"",""heading_font"":""Arial"",""code_font"":""Courier"",""text_size"":11,""text_color_rgb"":[34,34,34],""heading_scale"":1.35,""table"":{""column_width_weights"":[2,3,2],""keep_header_with_first_row"":true,""repeat_headers_on_overflow"":true,""show_borders"":true,""border_width"":0.75,""border_color_rgb"":[180,188,200],""header_fill_color_rgb"":[33,64,98],""header_text_color_rgb"":[255,255,255],""row_fill_color_rgb"":[250,250,252],""alternate_row_fill_color_rgb"":[235,240,246],""cell_padding"":{""top"":6,""right"":8,""bottom"":6,""left"":8}}},""csv"":{""first_row_is_header"":true,""delimiter"":"","",""columns"":[{""index"":0,""width_weight"":2,""text_align"":""left""},{""index"":1,""width_weight"":3,""text_align"":""left""},{""index"":2,""width_weight"":1,""text_align"":""right""}]}}");
var inputId = await UploadAsync(client, inputPath);
var payload = new JObject { ["id"] = inputId, ["structured_text_options"] = options };
using var content = new StringContent(payload.ToString(), Encoding.UTF8, "application/json");
var response = await client.PostAsync("pdf", content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
if (!response.IsSuccessStatusCode) Environment.ExitCode = 1;
}

private static async Task<string> UploadAsync(HttpClient client, string path)
{
using var content = new ByteArrayContent(await File.ReadAllBytesAsync(path));
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
using var request = new HttpRequestMessage(HttpMethod.Post, "upload") { Content = content };
request.Headers.Add("Content-Filename", Path.GetFileName(path));
var response = await client.SendAsync(request);
var result = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode) throw new InvalidOperationException(result);
return JObject.Parse(result)["files"]![0]!["id"]!.Value<string>()!;
}
}
50 changes: 50 additions & 0 deletions DotNET/Endpoint Examples/JSON Payload/pdf-from-json.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* What this sample does:
* - Converts structured JSON input to PDF through the /pdf endpoint.
*
* Setup (environment):
* - Set PDFREST_API_KEY=your_api_key_here
* - Optional: set PDFREST_URL to override the API region.
*
* Usage:
* dotnet run -- pdf-from-json <inputFile>
*/
using Newtonsoft.Json.Linq;
using System.Net.Http.Headers;
using System.Text;

namespace Samples.EndpointExamples.JsonPayload;

public static class PdfFromJson
{
public static async Task Execute(string[] args)
{
var inputPath = args.Length > 0 ? args[0] : "/path/to/sample.json";
var apiKey = Environment.GetEnvironmentVariable("PDFREST_API_KEY");
if (string.IsNullOrWhiteSpace(apiKey)) throw new InvalidOperationException("Missing PDFREST_API_KEY");
var baseUrl = Environment.GetEnvironmentVariable("PDFREST_URL") ?? "https://api.pdfrest.com";
using var client = new HttpClient { BaseAddress = new Uri(baseUrl) };
client.DefaultRequestHeaders.TryAddWithoutValidation("Api-Key", apiKey);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var options = JObject.Parse(@"{""title"":""Structured Content Sample"",""language"":""en-US"",""enable_tagging"":true,""page_setup"":{""size"":""Letter"",""orientation"":""portrait"",""margin"":{""top"":36,""right"":42,""bottom"":36,""left"":42}},""style"":{""font"":""Arial"",""heading_font"":""Arial"",""code_font"":""Courier"",""text_size"":11,""text_color_rgb"":[34,34,34],""heading_scale"":1.35,""table"":{""column_width_weights"":[2,3,2],""keep_header_with_first_row"":true,""repeat_headers_on_overflow"":true,""show_borders"":true,""border_width"":0.75,""border_color_rgb"":[180,188,200],""header_fill_color_rgb"":[33,64,98],""header_text_color_rgb"":[255,255,255],""row_fill_color_rgb"":[250,250,252],""alternate_row_fill_color_rgb"":[235,240,246],""cell_padding"":{""top"":6,""right"":8,""bottom"":6,""left"":8}}},""data_presentation"":""hierarchy""}");
var inputId = await UploadAsync(client, inputPath);
var payload = new JObject { ["id"] = inputId, ["structured_text_options"] = options };
using var content = new StringContent(payload.ToString(), Encoding.UTF8, "application/json");
var response = await client.PostAsync("pdf", content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
if (!response.IsSuccessStatusCode) Environment.ExitCode = 1;
}

private static async Task<string> UploadAsync(HttpClient client, string path)
{
using var content = new ByteArrayContent(await File.ReadAllBytesAsync(path));
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
using var request = new HttpRequestMessage(HttpMethod.Post, "upload") { Content = content };
request.Headers.Add("Content-Filename", Path.GetFileName(path));
var response = await client.SendAsync(request);
var result = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode) throw new InvalidOperationException(result);
return JObject.Parse(result)["files"]![0]!["id"]!.Value<string>()!;
}
}
53 changes: 53 additions & 0 deletions DotNET/Endpoint Examples/JSON Payload/pdf-from-markdown.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* What this sample does:
* - Converts structured Markdown input to PDF through the /pdf endpoint.
*
* Setup (environment):
* - Set PDFREST_API_KEY=your_api_key_here
* - Optional: set PDFREST_URL to override the API region.
*
* Usage:
* dotnet run -- pdf-from-markdown <inputFile> <imageFile>
*/
using Newtonsoft.Json.Linq;
using System.Net.Http.Headers;
using System.Text;

namespace Samples.EndpointExamples.JsonPayload;

public static class PdfFromMarkdown
{
public static async Task Execute(string[] args)
{
var inputPath = args.Length > 0 ? args[0] : "/path/to/sample.md";
var imagePath = args.Length > 1 ? args[1] : "/path/to/logo.png";
var apiKey = Environment.GetEnvironmentVariable("PDFREST_API_KEY");
if (string.IsNullOrWhiteSpace(apiKey)) throw new InvalidOperationException("Missing PDFREST_API_KEY");
var baseUrl = Environment.GetEnvironmentVariable("PDFREST_URL") ?? "https://api.pdfrest.com";
using var client = new HttpClient { BaseAddress = new Uri(baseUrl) };
client.DefaultRequestHeaders.TryAddWithoutValidation("Api-Key", apiKey);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var options = JObject.Parse(@"{""title"":""Structured Content Sample"",""language"":""en-US"",""enable_tagging"":true,""page_setup"":{""size"":""Letter"",""orientation"":""portrait"",""margin"":{""top"":36,""right"":42,""bottom"":36,""left"":42}},""style"":{""font"":""Arial"",""heading_font"":""Arial"",""code_font"":""Courier"",""text_size"":11,""text_color_rgb"":[34,34,34],""heading_scale"":1.35,""table"":{""column_width_weights"":[2,3,2],""keep_header_with_first_row"":true,""repeat_headers_on_overflow"":true,""show_borders"":true,""border_width"":0.75,""border_color_rgb"":[180,188,200],""header_fill_color_rgb"":[33,64,98],""header_text_color_rgb"":[255,255,255],""row_fill_color_rgb"":[250,250,252],""alternate_row_fill_color_rgb"":[235,240,246],""cell_padding"":{""top"":6,""right"":8,""bottom"":6,""left"":8}}},""markdown"":{""image_alt_text"":{""sample-logo"":""Sample logo""},""missing_image_alt_text"":""fail"",""image_sources"":{""sample-logo"":{""image_id_index"":0}}}}");
var inputId = await UploadAsync(client, inputPath);
var imageId = await UploadAsync(client, imagePath);
var payload = new JObject { ["id"] = inputId, ["structured_text_options"] = options };
payload["image_ids"] = new JArray(imageId);
using var content = new StringContent(payload.ToString(), Encoding.UTF8, "application/json");
var response = await client.PostAsync("pdf", content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
if (!response.IsSuccessStatusCode) Environment.ExitCode = 1;
}

private static async Task<string> UploadAsync(HttpClient client, string path)
{
using var content = new ByteArrayContent(await File.ReadAllBytesAsync(path));
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
using var request = new HttpRequestMessage(HttpMethod.Post, "upload") { Content = content };
request.Headers.Add("Content-Filename", Path.GetFileName(path));
var response = await client.SendAsync(request);
var result = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode) throw new InvalidOperationException(result);
return JObject.Parse(result)["files"]![0]!["id"]!.Value<string>()!;
}
}
50 changes: 50 additions & 0 deletions DotNET/Endpoint Examples/JSON Payload/pdf-from-text.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* What this sample does:
* - Converts plain text input to PDF through the /pdf endpoint.
*
* Setup (environment):
* - Set PDFREST_API_KEY=your_api_key_here
* - Optional: set PDFREST_URL to override the API region.
*
* Usage:
* dotnet run -- pdf-from-text <inputFile>
*/
using Newtonsoft.Json.Linq;
using System.Net.Http.Headers;
using System.Text;

namespace Samples.EndpointExamples.JsonPayload;

public static class PdfFromText
{
public static async Task Execute(string[] args)
{
var inputPath = args.Length > 0 ? args[0] : "/path/to/sample.txt";
var apiKey = Environment.GetEnvironmentVariable("PDFREST_API_KEY");
if (string.IsNullOrWhiteSpace(apiKey)) throw new InvalidOperationException("Missing PDFREST_API_KEY");
var baseUrl = Environment.GetEnvironmentVariable("PDFREST_URL") ?? "https://api.pdfrest.com";
using var client = new HttpClient { BaseAddress = new Uri(baseUrl) };
client.DefaultRequestHeaders.TryAddWithoutValidation("Api-Key", apiKey);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var options = JObject.Parse(@"{""title"":""Structured Content Sample"",""language"":""en-US"",""enable_tagging"":true,""page_setup"":{""size"":""Letter"",""orientation"":""portrait"",""margin"":{""top"":36,""right"":42,""bottom"":36,""left"":42}},""style"":{""font"":""Arial"",""heading_font"":""Arial"",""code_font"":""Courier"",""text_size"":11,""text_color_rgb"":[34,34,34],""heading_scale"":1.35,""table"":{""column_width_weights"":[2,3,2],""keep_header_with_first_row"":true,""repeat_headers_on_overflow"":true,""show_borders"":true,""border_width"":0.75,""border_color_rgb"":[180,188,200],""header_fill_color_rgb"":[33,64,98],""header_text_color_rgb"":[255,255,255],""row_fill_color_rgb"":[250,250,252],""alternate_row_fill_color_rgb"":[235,240,246],""cell_padding"":{""top"":6,""right"":8,""bottom"":6,""left"":8}}},""plain_text"":{""line_handling"":""preserve""}}");
var inputId = await UploadAsync(client, inputPath);
var payload = new JObject { ["id"] = inputId, ["structured_text_options"] = options };
using var content = new StringContent(payload.ToString(), Encoding.UTF8, "application/json");
var response = await client.PostAsync("pdf", content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
if (!response.IsSuccessStatusCode) Environment.ExitCode = 1;
}

private static async Task<string> UploadAsync(HttpClient client, string path)
{
using var content = new ByteArrayContent(await File.ReadAllBytesAsync(path));
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
using var request = new HttpRequestMessage(HttpMethod.Post, "upload") { Content = content };
request.Headers.Add("Content-Filename", Path.GetFileName(path));
var response = await client.SendAsync(request);
var result = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode) throw new InvalidOperationException(result);
return JObject.Parse(result)["files"]![0]!["id"]!.Value<string>()!;
}
}
50 changes: 50 additions & 0 deletions DotNET/Endpoint Examples/JSON Payload/pdf-from-xml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* What this sample does:
* - Converts structured XML input to PDF through the /pdf endpoint.
*
* Setup (environment):
* - Set PDFREST_API_KEY=your_api_key_here
* - Optional: set PDFREST_URL to override the API region.
*
* Usage:
* dotnet run -- pdf-from-xml <inputFile>
*/
using Newtonsoft.Json.Linq;
using System.Net.Http.Headers;
using System.Text;

namespace Samples.EndpointExamples.JsonPayload;

public static class PdfFromXml
{
public static async Task Execute(string[] args)
{
var inputPath = args.Length > 0 ? args[0] : "/path/to/sample.xml";
var apiKey = Environment.GetEnvironmentVariable("PDFREST_API_KEY");
if (string.IsNullOrWhiteSpace(apiKey)) throw new InvalidOperationException("Missing PDFREST_API_KEY");
var baseUrl = Environment.GetEnvironmentVariable("PDFREST_URL") ?? "https://api.pdfrest.com";
using var client = new HttpClient { BaseAddress = new Uri(baseUrl) };
client.DefaultRequestHeaders.TryAddWithoutValidation("Api-Key", apiKey);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var options = JObject.Parse(@"{""title"":""Structured Content Sample"",""language"":""en-US"",""enable_tagging"":true,""page_setup"":{""size"":""Letter"",""orientation"":""portrait"",""margin"":{""top"":36,""right"":42,""bottom"":36,""left"":42}},""style"":{""font"":""Arial"",""heading_font"":""Arial"",""code_font"":""Courier"",""text_size"":11,""text_color_rgb"":[34,34,34],""heading_scale"":1.35,""table"":{""column_width_weights"":[2,3,2],""keep_header_with_first_row"":true,""repeat_headers_on_overflow"":true,""show_borders"":true,""border_width"":0.75,""border_color_rgb"":[180,188,200],""header_fill_color_rgb"":[33,64,98],""header_text_color_rgb"":[255,255,255],""row_fill_color_rgb"":[250,250,252],""alternate_row_fill_color_rgb"":[235,240,246],""cell_padding"":{""top"":6,""right"":8,""bottom"":6,""left"":8}}},""data_presentation"":""hierarchy""}");
var inputId = await UploadAsync(client, inputPath);
var payload = new JObject { ["id"] = inputId, ["structured_text_options"] = options };
using var content = new StringContent(payload.ToString(), Encoding.UTF8, "application/json");
var response = await client.PostAsync("pdf", content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
if (!response.IsSuccessStatusCode) Environment.ExitCode = 1;
}

private static async Task<string> UploadAsync(HttpClient client, string path)
{
using var content = new ByteArrayContent(await File.ReadAllBytesAsync(path));
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
using var request = new HttpRequestMessage(HttpMethod.Post, "upload") { Content = content };
request.Headers.Add("Content-Filename", Path.GetFileName(path));
var response = await client.SendAsync(request);
var result = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode) throw new InvalidOperationException(result);
return JObject.Parse(result)["files"]![0]!["id"]!.Value<string>()!;
}
}
40 changes: 40 additions & 0 deletions DotNET/Endpoint Examples/Multipart Payload/pdf-from-csv.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
* What this sample does:
* - Converts structured CSV input to PDF through the /pdf endpoint.
*
* Setup (environment):
* - Set PDFREST_API_KEY=your_api_key_here
* - Optional: set PDFREST_URL to override the API region.
*
* Usage:
* dotnet run -- pdf-from-csv-multipart <inputFile>
*/
using Newtonsoft.Json.Linq;
using System.Net.Http.Headers;
using System.Text;

namespace Samples.EndpointExamples.MultipartPayload;

public static class PdfFromCsv
{
public static async Task Execute(string[] args)
{
var inputPath = args.Length > 0 ? args[0] : "/path/to/sample.csv";
var apiKey = Environment.GetEnvironmentVariable("PDFREST_API_KEY");
if (string.IsNullOrWhiteSpace(apiKey)) throw new InvalidOperationException("Missing PDFREST_API_KEY");
var baseUrl = Environment.GetEnvironmentVariable("PDFREST_URL") ?? "https://api.pdfrest.com";
using var client = new HttpClient { BaseAddress = new Uri(baseUrl) };
client.DefaultRequestHeaders.TryAddWithoutValidation("Api-Key", apiKey);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var options = JObject.Parse(@"{""title"":""Structured Content Sample"",""language"":""en-US"",""enable_tagging"":true,""page_setup"":{""size"":""Letter"",""orientation"":""portrait"",""margin"":{""top"":36,""right"":42,""bottom"":36,""left"":42}},""style"":{""font"":""Arial"",""heading_font"":""Arial"",""code_font"":""Courier"",""text_size"":11,""text_color_rgb"":[34,34,34],""heading_scale"":1.35,""table"":{""column_width_weights"":[2,3,2],""keep_header_with_first_row"":true,""repeat_headers_on_overflow"":true,""show_borders"":true,""border_width"":0.75,""border_color_rgb"":[180,188,200],""header_fill_color_rgb"":[33,64,98],""header_text_color_rgb"":[255,255,255],""row_fill_color_rgb"":[250,250,252],""alternate_row_fill_color_rgb"":[235,240,246],""cell_padding"":{""top"":6,""right"":8,""bottom"":6,""left"":8}}},""csv"":{""first_row_is_header"":true,""delimiter"":"","",""columns"":[{""index"":0,""width_weight"":2,""text_align"":""left""},{""index"":1,""width_weight"":3,""text_align"":""left""},{""index"":2,""width_weight"":1,""text_align"":""right""}]}}");
using var form = new MultipartFormDataContent();
var inputContent = new ByteArrayContent(await File.ReadAllBytesAsync(inputPath));
inputContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
form.Add(inputContent, "file", Path.GetFileName(inputPath));
form.Add(new StringContent(options.ToString()), "structured_text_options");
var response = await client.PostAsync("pdf", form);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
if (!response.IsSuccessStatusCode) Environment.ExitCode = 1;
}
}
Loading
Loading