Shell
Shell (Windows)
Java
C#
JavaScript
Python
PHP
HTTP
curl -X POST https://api.nutrient.io/build \
-H "Authorization: Bearer your_api_key_here" \
-o first_half.pdf \
--fail \
-F document = @document.pdf \
-F instructions = '{
"parts": [
{
"file": "document",
"pages": {
"end": -6
}
}
]
}'
curl -X POST https://api.nutrient.io/build \
-H "Authorization: Bearer your_api_key_here" \
-o second_half.pdf \
--fail \
-F document = @document.pdf \
-F instructions = '{
"parts": [
{
"file": "document",
"pages": {
"start": -5
}
}
]
}'
Copy snippet
curl -X POST https://api.nutrient.io/build ^
-H "Authorization: Bearer your_api_key_here" ^
-o first_half.pdf ^
--fail ^
-F document = @document.pdf ^
-F instructions = "{\" parts\" : [{\" file\" : \" document\" , \" pages\" : {\" end\" : -6}}]}"
curl -X POST https://api.nutrient.io/build ^
-H "Authorization: Bearer your_api_key_here" ^
-o second_half.pdf ^
--fail ^
-F document = @document.pdf ^
-F instructions = "{\" parts\" : [{\" file\" : \" document\" , \" pages\" : {\" start\" : -5}}]}"
Copy snippet
package com. example. pspdfkit ;
import java. io. File ;
import java. io. IOException ;
import java. nio. file. FileSystems ;
import java. nio. file. Files ;
import java. nio. file. StandardCopyOption ;
import org. json. JSONArray ;
import org. json. JSONObject ;
import okhttp3. MediaType ;
import okhttp3. MultipartBody ;
import okhttp3. OkHttpClient ;
import okhttp3. Request ;
import okhttp3. RequestBody ;
import okhttp3. Response ;
public final class PspdfkitApiExample {
public static void main ( final String [ ] args) throws IOException {
final RequestBody firstHalfBody = new MultipartBody. Builder ( )
. setType ( MultipartBody . FORM )
. addFormDataPart (
"document" ,
"document.pdf" ,
RequestBody . create (
MediaType . parse ( "application/pdf" ) ,
new File ( "document.pdf" )
)
)
. addFormDataPart (
"instructions" ,
new JSONObject ( )
. put ( "parts" , new JSONArray ( )
. put ( new JSONObject ( )
. put ( "file" , "document" )
. put ( "pages" , new JSONObject ( )
. put ( "end" , - 6 )
)
)
) . toString ( )
)
. build ( ) ;
final Request firstHalfRequest = new Request. Builder ( )
. url ( "https://api.nutrient.io/build" )
. method ( "POST" , firstHalfBody)
. addHeader ( "Authorization" , "Bearer your_api_key_here" )
. build ( ) ;
final RequestBody secondHalfBody = new MultipartBody. Builder ( )
. setType ( MultipartBody . FORM )
. addFormDataPart (
"document" ,
"document.pdf" ,
RequestBody . create (
MediaType . parse ( "application/pdf" ) ,
new File ( "document.pdf" )
)
)
. addFormDataPart (
"instructions" ,
new JSONObject ( )
. put ( "parts" , new JSONArray ( )
. put ( new JSONObject ( )
. put ( "file" , "document" )
. put ( "pages" , new JSONObject ( )
. put ( "start" , - 5 )
)
)
) . toString ( )
)
. build ( ) ;
final Request secondHalfRequest = new Request. Builder ( )
. url ( "https://api.nutrient.io/build" )
. method ( "POST" , secondHalfBody)
. addHeader ( "Authorization" , "Bearer your_api_key_here" )
. build ( ) ;
executeRequest ( firstHalfRequest, "first_half.pdf" ) ;
executeRequest ( secondHalfRequest, "second_half.pdf" ) ;
}
private static void executeRequest ( final Request request, final String outputFileName) throws IOException {
final OkHttpClient client = new OkHttpClient ( )
. newBuilder ( )
. build ( ) ;
final Response response = client. newCall ( request) . execute ( ) ;
if ( response. isSuccessful ( ) ) {
Files . copy (
response. body ( ) . byteStream ( ) ,
FileSystems . getDefault ( ) . getPath ( outputFileName) ,
StandardCopyOption . REPLACE_EXISTING
) ;
} else {
throw new IOException ( response. body ( ) . string ( ) ) ;
}
}
}
Copy snippet
using System ;
using System. IO ;
using System. Net ;
using RestSharp ;
namespace PspdfkitApiDemo
{
class Program
{
static void Main ( string [ ] args)
{
var client = new RestClient ( "https://api.nutrient.io/build" ) ;
var firstHalfRequest = new RestRequest ( Method. POST)
. AddHeader ( "Authorization" , "Bearer your_api_key_here" )
. AddFile ( "document" , "document.pdf" )
. AddParameter ( "instructions" , new JsonObject
{
[ "parts" ] = new JsonArray
{
new JsonObject
{
[ "file" ] = "document" ,
[ "pages" ] = new JsonObject
{
[ "end" ] = - 6
}
}
}
} . ToString ( ) ) ;
firstHalfRequest. AdvancedResponseWriter = OutputFileResponseWriter ( "first_half.pdf" ) ;
var secondHalfRequest = new RestRequest ( Method. POST)
. AddHeader ( "Authorization" , "Bearer your_api_key_here" )
. AddFile ( "document" , "document.pdf" )
. AddParameter ( "instructions" , new JsonObject
{
[ "parts" ] = new JsonArray
{
new JsonObject
{
[ "file" ] = "document" ,
[ "pages" ] = new JsonObject
{
[ "start" ] = - 5
}
}
}
} . ToString ( ) ) ;
secondHalfRequest. AdvancedResponseWriter = OutputFileResponseWriter ( "second_half.pdf" ) ;
client. Execute ( firstHalfRequest) ;
client. Execute ( secondHalfRequest) ;
}
static Action< Stream, IHttpResponse> OutputFileResponseWriter ( string outputFileName)
{
return ( responseStream, response) =>
{
if ( response. StatusCode == HttpStatusCode. OK)
{
using ( responseStream)
{
using var outputFileWriter = File. OpenWrite ( outputFileName) ;
responseStream. CopyTo ( outputFileWriter) ;
}
}
else
{
var responseStreamReader = new StreamReader ( responseStream) ;
Console. Write ( responseStreamReader. ReadToEnd ( ) ) ;
}
} ;
}
}
}
Copy snippet
const axios = require ( 'axios' )
const FormData = require ( 'form-data' )
const fs = require ( 'fs' )
; ( async ( ) => {
const firstHalf = new FormData ( )
firstHalf. append ( 'instructions' , JSON . stringify ( {
parts : [
{
file : "document" ,
pages : {
end : - 6
}
}
]
} ) )
firstHalf. append ( 'document' , fs. createReadStream ( 'document.pdf' ) )
const secondHalf = new FormData ( )
secondHalf. append ( 'instructions' , JSON . stringify ( {
parts : [
{
file : "document" ,
pages : {
start : - 5
}
}
]
} ) )
secondHalf. append ( 'document' , fs. createReadStream ( 'document.pdf' ) )
await executeRequest ( firstHalf, "first_half.pdf" )
await executeRequest ( secondHalf, "second_half.pdf" )
} ) ( )
async function executeRequest ( formData, outputFile ) {
try {
const response = await axios. post ( 'https://api.nutrient.io/build' , formData, {
headers : formData. getHeaders ( {
'Authorization' : 'Bearer your_api_key_here'
} ) ,
responseType : "stream"
} )
response. data. pipe ( fs. createWriteStream ( outputFile) )
} catch ( e) {
const errorString = await streamToString ( e. response. data)
console. log ( errorString)
}
}
function streamToString ( stream ) {
const chunks = [ ]
return new Promise ( ( resolve, reject ) => {
stream. on ( "data" , ( chunk ) => chunks. push ( Buffer. from ( chunk) ) )
stream. on ( "error" , ( err ) => reject ( err) )
stream. on ( "end" , ( ) => resolve ( Buffer. concat ( chunks) . toString ( "utf8" ) ) )
} )
}
Copy snippet
import requests
import json
def process_first_half ( ) :
response = requests. request(
'POST' ,
'https://api.nutrient.io/build' ,
headers = {
'Authorization' : 'Bearer your_api_key_here'
} ,
files = {
'document' : open ( 'document.pdf' , 'rb' )
} ,
data = {
'instructions' : json. dumps( {
'parts' : [
{
'file' : 'document' ,
'pages' : {
'end' : - 6
}
}
]
} )
} ,
stream = True
)
if response. ok:
with open ( 'first_half.pdf' , 'wb' ) as fd:
for chunk in response. iter_content( chunk_size= 8096 ) :
fd. write( chunk)
else :
print ( response. text)
exit( )
def process_second_half ( ) :
response = requests. request(
'POST' ,
'https://api.nutrient.io/build' ,
headers = {
'Authorization' : 'Bearer your_api_key_here'
} ,
files = {
'document' : open ( 'document.pdf' , 'rb' )
} ,
data = {
'instructions' : json. dumps( {
'parts' : [
{
'file' : 'document' ,
'pages' : {
'start' : - 5
}
}
]
} )
} ,
stream = True
)
if response. ok:
with open ( 'second_half.pdf' , 'wb' ) as fd:
for chunk in response. iter_content( chunk_size= 8096 ) :
fd. write( chunk)
else :
print ( response. text)
exit( )
process_first_half( )
process_second_half( )
Copy snippet
<?php
function process_first_half ( ) {
$FileHandle = fopen ( 'first_half.pdf' , 'w+' ) ;
$curl = curl_init ( ) ;
curl_setopt_array ( $curl , array (
CURLOPT_URL => 'https://api.nutrient.io/build' ,
CURLOPT_CUSTOMREQUEST => 'POST' ,
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_ENCODING => '' ,
CURLOPT_POSTFIELDS => array (
'instructions' => '{
"parts": [
{
"file": "document",
"pages": {
"end": -6
}
}
]
}' ,
'document' => new CURLFILE ( 'document.pdf' )
) ,
CURLOPT_HTTPHEADER => array (
'Authorization: Bearer your_api_key_here'
) ,
CURLOPT_FILE => $FileHandle ,
) ) ;
$response = curl_exec ( $curl ) ;
curl_close ( $curl ) ;
fclose ( $FileHandle ) ;
}
function process_second_half ( ) {
$FileHandle = fopen ( 'second_half.pdf' , 'w+' ) ;
$curl = curl_init ( ) ;
curl_setopt_array ( $curl , array (
CURLOPT_URL => 'https://api.nutrient.io/build' ,
CURLOPT_CUSTOMREQUEST => 'POST' ,
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_ENCODING => '' ,
CURLOPT_POSTFIELDS => array (
'instructions' => '{
"parts": [
{
"file": "document",
"pages": {
"start": -5
}
}
]
}' ,
'document' => new CURLFILE ( 'document.pdf' )
) ,
CURLOPT_HTTPHEADER => array (
'Authorization: Bearer your_api_key_here'
) ,
CURLOPT_FILE => $FileHandle ,
) ) ;
$response = curl_exec ( $curl ) ;
curl_close ( $curl ) ;
fclose ( $FileHandle ) ;
}
process_first_half ( ) ;
process_second_half ( ) ;
Copy snippet
POST https://api.nutrient.io/build HTTP/1.1
--customboundary
{
"parts" : [
{
"file" : "document" ,
"pages" : {
"end" : -6
}
}
]
}
--customboundary
Content-Disposition: form-data; name="document" ; filename="document.pdf"
Content-Type: application/pdf
(document data)
--customboundary--
POST https://api.nutrient.io/build HTTP/1.1
--customboundary
{
"parts" : [
{
"file" : "document" ,
"pages" : {
"start" : -5
}
}
]
}
--customboundary
Content-Disposition: form-data; name="document" ; filename="document.pdf"
Content-Type: application/pdf
(document data)
--customboundary--
Copy snippet