PDF Add#
Add text, images, forms, other PDFs, fill forms, links to external sites and external PDF files. You can update or modify PDF and scanned PDF files.
Create new PDF forms with fillable edit boxes, checkboxes and other fillable fields.
Quickly create configs for PDF.co API, Zapier, Make with PDF.co PDF Edit Add Helper.
Note
To add a signature to a PDF you should save your signature as an image file and then use this API to add the image where you need to place it.
Available Methods#
/pdf/edit/add#
Method: POST
Endpoint: /v1/pdf/edit/add
Attributes#
Note
Attributes are case-sensitive and should be inside JSON for POST request, for example:
{
"url": "https://example.com/file1.pdf"
}
Attribute |
Description |
Required |
---|---|---|
|
URL to the source file. 1 |
yes |
|
HTTP auth user name if required to access source |
no |
|
HTTP auth password if required to access source |
no |
|
Password of PDF file, the input must be in string format. |
no |
|
File name for the generated output, the input must be in string format. |
no |
|
Set the expiration time for the output link in minutes (default is |
no |
|
Set to |
no |
|
Set |
no |
|
Use this parameter to set additional configurations for fine-tuning and extra options. Explore the Profiles section for more. Tip: to turn all fillable fields into read-only fields, set: |
no |
Array of text objects to be added on top of a PDF. Text objects can be read-only ( |
no |
|
Array of objects with information about images and PDF embeds to add (also can be a link to Files storage or |
no |
|
Array of objects with information about fields to add information to. |
no |
|
This parameter represents one or more text objects to add to a PDF. Each object is made of parameter separated by the |
no |
|
Adds one or more images or other PDF object on top of the source PDF. Each object is made of parameter separated by the |
no |
|
Set values for fillable PDF field objects. Each object is made of parameter separated by the |
no |
annotations[]#
Attribute |
Description |
Required |
---|---|---|
|
String to add, if you need to insert a line break then use |
no |
|
Set object type, available types: |
no |
|
Sets |
no |
|
X coordinate (zero point is in the top left corner). Use PDF Edit Add Helper to measure coordinates. |
yes |
|
Y coordinate (zero point is in the top left corner). Use PDF Edit Add Helper to measure pdf coordinates. |
yes |
|
Width of the text box. Use PDF Edit Add Helper to measure pdf coordinates. |
no |
|
Height of the text box. Use PDF Edit Add Helper to measure pdf coordinates. |
no |
|
Sets text alignment within the width of the text box. Valid values: |
no |
|
Specify page indices as comma-separated values or ranges to process (e.g. |
no |
|
Default is |
no |
|
Sets link on click for text. |
no |
|
Set font size. Default is 12. |
no |
|
Set to false to force disable any transparency and draw a white background under the text. |
no |
|
Set font name to use. Default is “Arial”. See availabe fonts. |
no |
|
Set to |
no |
|
Set to |
no |
|
Set to |
no |
images[]#
Attribute |
Description |
Required |
---|---|---|
|
URL to image or PDF as HTTP link, file token, or |
no |
|
X coordinate (zero point is in the top left corner). Use PDF Edit Add Helper to measure coordinates. |
no |
|
Y coordinate (zero point is in the top left corner). Use PDF Edit Add Helper to measure pdf coordinates. |
no |
|
Width of the text box. Use PDF Edit Add Helper to measure pdf coordinates. |
no |
|
Height of the text box. Use PDF Edit Add Helper to measure pdf coordinates. |
no |
|
Specify page indices as comma-separated values or ranges to process (e.g. |
no |
|
Sets link on click for text. |
no |
|
Set to |
no |
fields[]#
Attribute |
Description |
Required |
---|---|---|
|
Name of the form field. To find form fields please use PDF Edit Add Helper. |
yes |
|
Value to set for this field. If you have a |
yes |
|
Specify page indices as comma-separated values or ranges to process (e.g. |
no |
|
Override the font size of the text inside the given input field. |
no |
|
Name of the font to use to fill out the input field. |
no |
|
Override font bold style of the text input field. |
no |
|
Override font italic style of the text input field. |
no |
|
Override font strikeout style of the text input field. |
no |
|
Override font underline style of the text input field. |
no |
annotationsString#
This parameter represents one or more text objects to add to a PDF. Each text object is made of parameter separated by the ;
symbol, use the following format:
x;y;pages;text;fontsize;fontname;fontcolor;link;transparent;width;height;alignment
Example: 20;20;0-;Testing Text;24;Arial;FF0000;www.pdf.co;false;300;200;right
.
where 24
is the font size. You can also add styles font size using the following modifiers:
+bold
for bold style+italic
for italic style+underline
for underline style+strikeout
for strikeout style
Example: 20;20;0-;Testing Text;24+bold+italic;Arial
.
Example with bold, italic, underline and strikeout styles:
250;20;0-;PDF form filled with PDF.co API;24+bold+italic+underline+strikeout;Arial;FF0000;www.pdf.co;true
.
To put multiple objects, Just use the |
separator between objects.
Example:
250;20;0-;Text1|250;30;0-;Text2|250;50;0-;Text3
imagesString#
Adds one or more images or other PDFs on top of the source PDF.
Each image or PDF object can be defined with the following format:
x;y;pages;urltoimageOrPdf;linkToOpen;width;height
Example:
20;80;0-;pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-edit/logo.png;www.pdf.co;200;200
To separate multiple objects, use the |
separator.
Example:
100;180;0-;pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-edit/logo.png|400;180;0-;pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-edit/logo.png;www.pdf.co;200;200
You can also use base64 datauri
embedded image or filetoken://
link to a file from PDF.co Built-In Files Storage.
fieldsString#
Set values for fillable PDF fields (i.e. fill pdf fields in pdf forms). To fill fields in PDF form, use the following format: page;fieldName;value
.
Also, the advanced format can be used to override font name, size and style:
0;fieldName;Field Text;12+bold+italic+underline+strikeout;FontName
Example:
0;editbox1;text is here;12+bold;Arial
To fill the checkbox, use true
, for example: 0;checkbox1;true
.
To separate multiple objects, use the |
separator. To get the list of all fillable fields in PDF form please use the /pdf/info/fields endpoint.
Query parameters#
No query parameters accepted.
Payload (A)#
{
"async": false,
"inline": true,
"name": "newDocument",
"url": "https://pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-edit/sample.pdf",
"annotations": [
{
"text": "Sample Text 1",
"x": 150,
"y": 100,
"size": 20,
"pages": "0-"
},
{
"text": "sample text that is centered (can also set right or left alignment) ",
"x": "10",
"y": "10",
"width": "500",
"height": "200",
"size": "7",
"pages": "0",
"alignment": "center"
},
{
"text": "Sample Text 2 - Click here to test link\r\n(CLICK ME!)",
"x": 250,
"y": 240,
"size": 24,
"pages": "0-",
"color": "CCBBAA",
"link": "https://bytescout.com/",
"fontName": "Comic Sans MS",
"fontItalic": true,
"fontBold": true,
"fontStrikeout": false,
"fontUnderline": true
},
{
"text": "Simple text 3",
"x": 100,
"y": 230,
"size": 12,
"pages": "0-",
"type": "Text"
},
{
"text": "sample text 3 - input text field",
"x": 100,
"y": 170,
"size": 16,
"pages": "0-",
"type": "TextField",
"id": "textfield1"
},
{
"x": 200,
"y": 120,
"size": 16,
"pages": "0-",
"type": "Checkbox",
"id": "checkbox2"
},
{
"x": 200,
"y": 140,
"size": 16,
"pages": "0-",
"type": "CheckboxChecked",
"id": "checkbox3"
}
],
"images": [
{
"url": "https://pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-edit/logo.png",
"x": 270,
"y": 150,
"width": 159,
"height": 43,
"pages": "0"
},
{
"url": "data:image/png;base64,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",
"x": 10,
"y": 230,
"pages": "0-"
}
]
}
Response 2 (A)#
{
"hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"url": "https://pdf-temp-files.s3-us-west-2.amazonaws.com/0c336bfcef1a473d98492bda25d8da03/newDocument.pdf?X-Amz-Expires=3600&x-amz-security-token=FwoGZXIvYXdzEO7%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDHWK1dY4d4lOgsheliKBATwE%2FZewASPTEnPxTn%2BOdYhP4h3gljAJfqbRvQptDX7wdWLmrBS7Tg4qTU6pAbxIdXChGPjBWpSbtiADJKmqkmyhkUmE8GSM1%2FGtJO6bga2pgzvFLXmzxjTf3%2BFNqwYOvbyApIZdVLoPpEKY6PlCflQtLTd30dhelm6xpB8pitbdhSjdz8KCBjIobVy%2Fjwybwp6OQgB%2FT6QkIo2dU07gtFREdn5jhRyvnS5lkccweBV1%2Bw%3D%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA4NRRSZPHMV5P3JOS/20210316/us-west-2/s3/aws4_request&X-Amz-Date=20210316T124309Z&X-Amz-SignedHeaders=host;x-amz-security-token&X-Amz-Signature=95287bf3c007fed4c2c5aeea1ce75c846cc6c68b22aaf35175ebe41a105f54e1",
"pageCount": 1,
"error": false,
"status": 200,
"name": "newDocument",
"remainingCredits": 9913694,
"credits": 3
}
Payload (B)#
{
"async": false,
"inline": true,
"name": "f1040-form-filled",
"url": "pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-form/f1040.pdf",
"annotationsString": "250;20;0-;PDF form filled with PDF.co API;24+bold+italic+underline+strikeout;Arial;FF0000;www.pdf.co;true",
"imagesString": "100;180;0-;pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-edit/logo.png|400;180;0-;pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-edit/logo.png;www.pdf.co;200;200",
"fieldsString": "1;topmostSubform[0].Page1[0].f1_02[0];John A. Doe|1;topmostSubform[0].Page1[0].FilingStatus[0].c1_01[1];true|1;topmostSubform[0].Page1[0].YourSocial_ReadOrderControl[0].f1_04[0];123456789"
}
Response 2 (B)#
{
"url": "https://pdf-temp-files.s3.amazonaws.com/03c5c55183c74f8d94a4ec952e4e32ad/f1040-form-filled.pdf",
"pageCount": 3,
"error": false,
"status": 200,
"name": "f1040-form-filled",
"remainingCredits": 60822
}
CURL#
curl --location --request POST 'https://api.pdf.co/v1/pdf/edit/add' \
--header 'Content-Type: application/json' \
--header 'x-api-key: ' \
--data-raw '{
"async": false,
"inline": true,
"name": "newDocument",
"url": "https://pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-edit/sample.pdf",
"annotations": [
{
"text": "Sample Text 1",
"x": 150,
"y": 100,
"size": 20,
"pages": "0-"
},
{
"text": "sample text that is centered (can also set right or left alignment) ",
"x": "10",
"y": "10",
"width": "500",
"height": "200",
"size": "7",
"pages": "0",
"alignment": "center"
},
{
"text": "Sample Text 2 - Click here to test link\r\n(CLICK ME!)",
"x": 250,
"y": 240,
"size": 24,
"pages": "0-",
"color": "CCBBAA",
"link": "https://bytescout.com/",
"fontName": "Comic Sans MS",
"fontItalic": true,
"fontBold": true,
"fontStrikeout": false,
"fontUnderline": true
},
{
"text": "Simple text 3",
"x": 100,
"y": 230,
"size": 12,
"pages": "0-",
"type": "Text"
},
{
"text": "sample text 3 - input text field",
"x": 100,
"y": 170,
"size": 16,
"pages": "0-",
"type": "TextField",
"id": "textfield1"
},
{
"x": 200,
"y": 120,
"size": 16,
"pages": "0-",
"type": "Checkbox",
"id": "checkbox2"
},
{
"x": 200,
"y": 140,
"size": 16,
"pages": "0-",
"type": "CheckboxChecked",
"id": "checkbox3"
}
],
"images": [
{
"url": "https://pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-edit/logo.png",
"x": 270,
"y": 150,
"width": 159,
"height": 43,
"pages": "0"
},
{
"url": "data:image/png;base64,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",
"x": 10,
"y": 230,
"pages": "0-"
}
]
}'
curl --location --request POST 'https://api.pdf.co/v1/pdf/edit/add' \
--header 'Content-Type: application/json' \
--header 'x-api-key: ' \
--data-raw '{
"async": false,
"inline": true,
"name": "f1040-form-filled",
"url": "pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-form/f1040.pdf",
"annotationsString": "250;20;0-;PDF form filled with PDF.co API;24+bold+italic+underline+strikeout;Arial;FF0000;www.pdf.co;true",
"imagesString": "100;180;0-;pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-edit/logo.png|400;180;0-;pdfco-test-files.s3.us-west-2.amazonaws.com/pdf-edit/logo.png;www.pdf.co;200;200",
"fieldsString": "1;topmostSubform[0].Page1[0].f1_02[0];John A. Doe|1;topmostSubform[0].Page1[0].FilingStatus[0].c1_01[1];true|1;topmostSubform[0].Page1[0].YourSocial_ReadOrderControl[0].f1_04[0];123456789"
}'
Available fonts#
Standard Fonts#
Arial
Arial Black
Bahnschrift
Calibri
Cambria
Cambria Math
Candara
Comic Sans MS
Consolas
Constantia
Corbel
Courier New
Ebrima
Franklin Gothic Medium
Gabriola
Gadugi
Georgia
HoloLens MDL2 Assets
Impact
Ink Free
Javanese Text
Leelawadee UI
Lucida Console
Lucida Sans Unicode
Malgun Gothic
Marlett
Microsoft Himalaya
Microsoft JhengHei
Microsoft New Tai Lue
Microsoft PhagsPa
Microsoft Sans Serif
Microsoft Tai Le
Microsoft YaHei
Microsoft Yi Baiti
MingLiU-ExtB
Mongolian Baiti
MS Gothic
MV Boli
Myanmar Text
Nirmala UI
Palatino Linotype
Segoe MDL2 Assets
Segoe Print
Segoe Script
Segoe UI
Segoe UI Historic
Segoe UI Emoji
Segoe UI Symbol
SimSun
Sitka
Sylfaen
Symbol
Tahoma
Times New Roman
Trebuchet MS
Verdana
Webdings
Wingdings
Yu Gothic
Japanese fonts#
MS Gothic
MS Mincho
Yu Gothic
Chinese fonts#
SimSun
MingLiU
Microsoft YaHei
Korean fonts#
Malgun Gothic
Hebrew fonts#
Miriam
Code samples#
var https = require("https");
var path = require("path");
var fs = require("fs");
// The authentication key (API Key).
// Get your own by registering at https://app.pdf.co
const API_KEY = "***********************************";
// Direct URL of source PDF file.
// You can also upload your own file into PDF.co and use it as url. Check "Upload File" samples for code snippets: https://github.com/bytescout/pdf-co-api-samples/tree/master/File%20Upload/
const SourceFileUrl = "https://bytescout-com.s3.amazonaws.com/files/demo-files/cloud-api/pdf-edit/sample.pdf";
// Comma-separated list of page indices (or ranges) to process. Leave empty for all pages. Example: '0,2-5,7-'.
const Pages = "";
// PDF document password. Leave empty for unprotected documents.
const Password = "";
// Destination PDF file name
const DestinationFile = "./result.pdf";
// Text annotation params
const Type = "annotation";
const X = 400;
const Y = 600;
const Text = "APPROVED";
const FontName = "Times New Roman";
const FontSize = 24;
const Color = "FF0000";
// * Add Text *
// Prepare request to `PDF Edit` API endpoint
var queryPath = `/v1/pdf/edit/add`;
// JSON payload for api request
var jsonPayload = JSON.stringify({
name: path.basename(DestinationFile),
url: SourceFileUrl,
password: Password,
annotations:[
{
pages: Pages,
x: X,
y: Y,
text: Text,
fontname: FontName,
size: FontSize,
color: Color
}
]
});
var reqOptions = {
host: "api.pdf.co",
method: "POST",
path: encodeURI(queryPath),
headers: {
"x-api-key": API_KEY,
"Content-Type": "application/json",
"Content-Length": Buffer.byteLength(jsonPayload, 'utf8')
}
};
// Send request
var postRequest = https.request(reqOptions, (response) => {
response.on("data", (d) => {
// Parse JSON response
var data = JSON.parse(d);
if (data.error == false) {
// Download the output file
var file = fs.createWriteStream(DestinationFile);
https.get(data.url, (response2) => {
response2.pipe(file).on("close", () => {
console.log(`Generated PDF file saved to '${DestinationFile}' file.`);
});
});
}
else {
// Service reported error
console.log(data.message);
}
});
}).on("error", (e) => {
// Request error
console.error(e);
});
// Write request data
postRequest.write(jsonPayload);
postRequest.end();
import os
import requests # pip install requests
# The authentication key (API Key).
# Get your own by registering at https://app.pdf.co
API_KEY = "******************************************"
# Base URL for PDF.co Web API requests
BASE_URL = "https://api.pdf.co/v1"
# Direct URL of source PDF file.
# You can also upload your own file into PDF.co and use it as url. Check "Upload File" samples for code snippets: https://github.com/bytescout/pdf-co-api-samples/tree/master/File%20Upload/
SourceFileUrl = "https://bytescout-com.s3.amazonaws.com/files/demo-files/cloud-api/pdf-edit/sample.pdf"
#Comma-separated list of page indices (or ranges) to process. Leave empty for all pages. Example: '0,2-5,7-'.
Pages = ""
# PDF document password. Leave empty for unprotected documents.
Password = ""
# Destination PDF file name
DestinationFile = ".//result.pdf"
# Text annotation params
Type = "annotation"
X = 400
Y = 600
Text = "APPROVED"
FontName = "Times New Roman"
FontSize = 24
Color = "FF0000"
def main(args = None):
addTextToExistingPDF(DestinationFile)
def addTextToExistingPDF(destinationFile):
import json
"""Add Text using PDF.co Web API"""
# Prepare requests params as JSON
# See documentation: https://developer.pdf.co
payload = json.dumps({
"name": os.path.basename(destinationFile),
"password": Password,
"url": SourceFileUrl,
"annotations": [{
"text": Text,
"x": X,
"y": Y,
"fontname": FontName,
"size": FontSize,
"color": Color,
"pages": Pages
}]
})
# Prepare URL for 'PDF Edit' API request
url = "{}/pdf/edit/add".format(BASE_URL)
# Execute request and get response as JSON
response = requests.post(url, data=payload, headers={ "x-api-key": API_KEY })
if (response.status_code == 200):
json = response.json()
if json["error"] == False:
# Get URL of result file
resultFileUrl = json["url"]
# Download result file
r = requests.get(resultFileUrl, stream=True)
if (r.status_code == 200):
with open(destinationFile, 'wb') as file:
for chunk in r:
file.write(chunk)
print(f"Result file saved as \"{destinationFile}\" file.")
else:
print(f"Request error: {response.status_code} {response.reason}")
else:
# Show service reported error
print(json["message"])
else:
print(f"Request error: {response.status_code} {response.reason}")
if __name__ == '__main__':
main()
using Newtonsoft.Json.Linq;
using System;
using System.Globalization;
using System.IO;
using System.Net;
namespace ByteScoutWebApiExample
{
class Program
{
// The authentication key (API Key).
// Get your own by registering at https://app.pdf.co
const String API_KEY = "*****************************************";
// Direct URL of source PDF file.
// You can also upload your own file into PDF.co and use it as url. Check "Upload File" samples for code snippets: https://github.com/bytescout/pdf-co-api-samples/tree/master/File%20Upload/
const string SourceFileUrl = "https://bytescout-com.s3.amazonaws.com/files/demo-files/cloud-api/pdf-edit/sample.pdf";
// Comma-separated list of page indices (or ranges) to process. Leave empty for all pages. Example: '0,2-5,7-'.
const string Pages = "";
// PDF document password. Leave empty for unprotected documents.
const string Password = "";
// Destination PDF file name
const string DestinationFile = @".\result.pdf";
// Text annotation params
const string Type = "annotation";
const int X = 400;
const int Y = 600;
const string Text = "APPROVED";
const string FontName = "Times New Roman";
const float FontSize = 24;
const string FontColor = "FF0000";
static void Main(string[] args)
{
// Create standard .NET web client instance
WebClient webClient = new WebClient();
// Set API Key
webClient.Headers.Add("x-api-key", API_KEY);
// * Add text annotation *
// Prepare requests params as JSON
// See documentation: https://developer.pdf.co
string jsonPayload = $@"{{
""name"": ""{Path.GetFileName(DestinationFile)}"",
""url"": ""{SourceFileUrl}"",
""password"": ""{Password}"",
""annotations"": [
{{
""x"": {X},
""y"": {Y},
""text"": ""{Text}"",
""fontname"": ""{FontName}"",
""size"": ""{FontSize.ToString(CultureInfo.InvariantCulture)}"",
""color"": ""{FontColor}"",
""pages"": ""{Pages}""
}}
]
}}"; ;
try
{
// URL of "PDF Edit" endpoint
string url = "https://api.pdf.co/v1/pdf/edit/add";
// Execute POST request with JSON payload
string response = webClient.UploadString(url, jsonPayload);
// Parse JSON response
JObject json = JObject.Parse(response);
if (json["error"].ToObject<bool>() == false)
{
// Get URL of generated PDF file
string resultFileUrl = json["url"].ToString();
// Download generated PDF file
webClient.DownloadFile(resultFileUrl, DestinationFile);
Console.WriteLine("Generated PDF file saved as \"{0}\" file.", DestinationFile);
}
else
{
Console.WriteLine(json["message"].ToString());
}
}
catch (WebException e)
{
Console.WriteLine(e.ToString());
}
finally
{
webClient.Dispose();
}
Console.WriteLine();
Console.WriteLine("Press any key...");
Console.ReadKey();
}
}
}
package com.company;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import okhttp3.*;
import java.io.*;
import java.net.*;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main
{
// The authentication key (API Key).
// Get your own by registering at https://app.pdf.co
final static String API_KEY = "***********************************";
// Direct URL of source PDF file.
// You can also upload your own file into PDF.co and use it as url. Check "Upload File" samples for code snippets: https://github.com/bytescout/pdf-co-api-samples/tree/master/File%20Upload/
final static String SourceFileUrl = "https://bytescout-com.s3.amazonaws.com/files/demo-files/cloud-api/pdf-edit/sample.pdf";
// Comma-separated list of page indices (or ranges) to process. Leave empty for all pages. Example: '0,2-5,7-'.
final static String Pages = "";
// PDF document password. Leave empty for unprotected documents.
final static String Password = "";
// Destination PDF file name
final static Path ResultFile = Paths.get(".\\result.pdf");
// Text annotation params
private final static String Type2 = "annotation";
private final static int X2 = 400;
private final static int Y2 = 600;
private final static String Text = "APPROVED";
private final static String FontName = "Times New Roman";
private final static float FontSize = 24;
private final static String Color = "FF0000";
public static void main(String[] args) throws IOException
{
// Create HTTP client instance
OkHttpClient webClient = new OkHttpClient();
// * Add text annotation *
// Prepare URL for `PDF Edit` API call
String query = "https://api.pdf.co/v1/pdf/edit/add";
// Make correctly escaped (encoded) URL
URL url = null;
try
{
url = new URI(null, query, null).toURL();
}
catch (URISyntaxException e)
{
e.printStackTrace();
}
// Create JSON payload
String jsonPayload = String.format("{
\"name\": \"%s\",
\"url\": \"%s\",
\"password\": \"%s\",
annotations:[{
\"pages\": \"%s\",
\"text\": \"%s\",
\"x\": \"%s\",
\"y\": \"%s\",
\"fontname\": \"%s\",
\"size\": \"%s\",
\"color\": \"%s\"
}]
}",
ResultFile.getFileName(),
SourceFileUrl,
Password,
Pages,
Text,
X2,
Y2,
FontName,
FontSize,
Color);
// Prepare request body
RequestBody body = RequestBody.create(MediaType.parse("application/json"), jsonPayload);
// Prepare request
Request request = new Request.Builder()
.url(url)
.addHeader("x-api-key", API_KEY) // (!) Set API Key
.addHeader("Content-Type", "application/json")
.post(body)
.build();
// Execute request
Response response = webClient.newCall(request).execute();
if (response.code() == 200)
{
// Parse JSON response
JsonObject json = new JsonParser().parse(response.body().string()).getAsJsonObject();
boolean error = json.get("error").getAsBoolean();
if (!error)
{
// Get URL of generated output file
String resultFileUrl = json.get("url").getAsString();
// Download the image file
downloadFile(webClient, resultFileUrl, ResultFile);
System.out.printf("Generated file saved to \"%s\" file.", ResultFile.toString());
}
else
{
// Display service reported error
System.out.println(json.get("message").getAsString());
}
}
else
{
// Display request error
System.out.println(response.code() + " " + response.message());
}
}
public static void downloadFile(OkHttpClient webClient, String url, Path destinationFile) throws IOException
{
// Prepare request
Request request = new Request.Builder()
.url(url)
.build();
// Execute request
Response response = webClient.newCall(request).execute();
byte[] fileBytes = response.body().bytes();
// Save downloaded bytes to file
OutputStream output = new FileOutputStream(destinationFile.toFile());
output.write(fileBytes);
output.flush();
output.close();
response.close();
}
}
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.pdf.co/v1/pdf/edit/add',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"async": false,
"encrypt": false,
"inline": true,
"name": "f1040-form-filled",
"url": "bytescout-com.s3-us-west-2.amazonaws.com/files/demo-files/cloud-api/pdf-form/f1040.pdf",
"annotationsString": "250;20;0-;PDF form filled with PDF.co API;24+bold+italic+underline+strikeout;Arial;FF0000;www.pdf.co;true",
"imagesString": "100;180;0-;bytescout-com.s3-us-west-2.amazonaws.com/files/demo-files/cloud-api/pdf-edit/logo.png|400;180;0-;bytescout-com.s3-us-west-2.amazonaws.com/files/demo-files/cloud-api/pdf-edit/logo.png;www.pdf.co;200;200",
"fieldsString": "1;topmostSubform[0].Page1[0].f1_02[0];John A. Doe|1;topmostSubform[0].Page1[0].FilingStatus[0].c1_01[1];true|1;topmostSubform[0].Page1[0].YourSocial_ReadOrderControl[0].f1_04[0];123456789"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'x-api-key: '
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
On Github#
Footnotes
- 1
Supports links from Google Drive, Dropbox, and PDF.co Built-In Files Storage. To upload files via the API check out the File Upload section. Note: If you experience intermittent Access Denied or Too Many Requests errors, please try to add
cache:
to enable built-in URL caching. (e.gcache:https://example.com/file1.pdf
) For data security, you have the option to encrypt output files and decrypt input files. Learn more about user-controlled data encryption.- 2(1,2)
Main response codes as follows:
Code
Description
200
Success
400
Bad request. Typically happens because of bad input parameters, or because the input URLs can’t be reached, possibly due to access restrictions like needing a login or password.
401
Unauthorized
402
Not enough credits
445
Timeout error. To process large documents or files please use asynchronous mode (set the
async
parameter totrue
) and then check status using the /job/check endpoint. If a file contains many pages then specify a page range using thepages
parameter. The number of pages of the document can be obtained using the /pdf/info endpoint.Note
For more see the complete list of available response codes.