Combine And Store

Purpose

Using this API, you will be able to combine PDF documents and store it in Zoho WorkDrive.

Prerequisites

You need to access the merge template once before sending an API request using the template's URL.

Quick Reference

PropertyValue
MethodPOST
Request URLhttps://{zohoapis_domain}/writer/api/v1/documents/pdf/combine/store
ScopesZohoWriter.documentEditor.ALL, ZohoWriter.merge.ALL, WorkDrive.organization.ALL
Rate LimitSee Writer API throttle limits

Parameters

Body Parameters

ParameterData TypeMandatory/OptionalDescription
files
or
urls
File
or
String
MandatoryMethod of providing the input file depending on its location.
files - If the input files are from your local drive or desktop.
urls - If the input files are publicly accessible Web URLs. You will have to pass them as a comma separated list.
Note:
- Up to 20 input pdf files can be combined at once. A minimum of 2 files must be provided to perform the combine operation.
- Total file size limit for the input files will be 10 MB each.
output_settings{
" name ": """,
" folder_id ": "",
" overwrite_existing_file ": "",
" page_number_settings ": {
" sections ": [
{
"range": "1-10",
"format": {
"font": {
"name": "Helvetica",
"size": 10,
"style": "Bold"
}
},
"numbering_config": {
"type": "1",
"start": 1
},
"header": {
"left": {
"text": "Page <> of <>",
"offsets": {
"top": 20,
"left": 40
}
}
},
"footer": {
"center": {
"text": "Page <> of <>",
"offsets": {
"bottom": 20
}
}
}
}
]
}
}
Optionalname - Specify a unique name for the merged or combined output file.
By default, the output file name will be "output.pdf".
folder_id - Specify the ID of the folder where you'd like to store the combined PDF document. By default, it will be saved in the "My Folder" of WorkDrive.
overwrite_existing_file - If you wish to replace an existing file in Zoho WorkDrive with the combined document, use this key. By default, this value is set to false.
page_number_settings - Contains the page number configuration as a JSON Object.
sections (mandatory) - List of configuration blocks, each defining how page numbers should be inserted for a specific page range.
Sample: For adding page number in header at center.
{
"sections": [
{
"header": {
"center": {
"text": "Page <> of <>",
}
}
}
]
}
input_options{
1: {
page_ranges: "3,5,7",
},
2: {
page_ranges: "1-3, 5"
}
}
OptionalIt is possible to combine selected pages or a specific range of pages in a document.
To combine selectedpages, you will have to pass the respective page numbers with comma separated (say 3,5,7,etc., ).
To combine a specific range of pages, you will have to pass the page ranges with a hypen (say 1-3 ).
team_idStringOptionalIf the user has multiple WorkDrive teams and wants to use a specific team for credit usage, use this parameter.
By default,
the user's preferred team will be used for credit calculation.

 

 

Notes

  • You need to access the template once before sending an API request. You need not access the template every time before you send an API request.
  • This API will be available only for users who have Zoho WorkDrive Account.
  • Check out the prerequisites needed to make the Combine and Store API work, here.
  • This API is subject to throttle limits. For details on the applicable rate limits, please refer to this help link.
  • For possible errors, refer to error codes.

Sample Request

Copiedcurl --location 'https://www.zohoapis.com/writer/api/v1/documents/pdf/combine/store' \
--header 'Authorization: Zoho-oauthtoken xxx.yyy.zzz' \
--form 'files=@"/Users/zlyker/Downloads/pdf_1.pdf"' \
--form 'files=@"/Users/zlyker/Downloads/pdf_2.pdf"' \
--form 'input_options="{\"1\":{\"page_ranges\":\"1,3-5\"},\"2\":{\"page_ranges\":\"1-3,6\"}}"' \
--form 'output_settings="{\"name\":\"CombineAndStore.pdf\",\"folder_id\":ivahpc40bfada15d34449852686********}"'
Copiedfileobj1 = invokeurl
[
 url :"https://freetestdata.com/wp-content/uploads/2023/07/260KB.pdf"
 type :GET
];
info fileobj1;
fileobj2 = invokeurl
[
 url :"https://freetestdata.com/wp-content/uploads/2023/07/800KB.pdf"
 type :GET
];
fileobj2.setParamName("files");
output_settings = Map();
output_settings.put("name","Combine-Store-document.pdf");  // name for the combined document
output_settings.put("folder_id","wz737eddcb4eddd6b3d9a15d****");  //optional - provide the specific WorkDrive Folder Id to store the combined document 
output_settings.put("overwrite_existing_file",true);  //optional - to overwrite the file which is already present in the folder with the same name
input_options = Map();
document_1 = Map();
document_1.put("page_ranges","1,3");  //page_ranges for document 1 (pages 1,3)
document_2 = Map();
document_2.put("page_ranges","1-5");  //page_ranges for document 2 (pages 1 to 5)
input_options.put("1",document_1);
input_options.put("2",document_2);
paramList = list();
paramList.add({"paramName":"files","content":fileobj1});
paramList.add({"paramName":"files1","content":fileobj2});
paramList.add({"paramName":"output_settings","content":output_settings.toString(),"Content-Type":"application/json","stringPart":"true"});
paramList.add({"paramName":"input_options","content":input_options.toString(),"Content-Type":"application/json","stringPart":"true"});
combinepdf_response = invokeurl
[
        url :"https://www.zohoapis.com/writer/api/v1/documents/pdf/combine/store" 
	type :POST
	files:paramList
        connection:"<connection_name>"   //update oauth connection
];
info combinepdf_response;

Sample Response

Copied{
	"status_url": "https://writer.zoho.com/writer/api/v1/documents/pdf/combine/job/f931a01183b33
        "status": "inprogress/completed/failed"
 }

While invoking the 'status_url', you will receive the below responses;

1. Success case:

{

      "document_id": "<combined pdf document id>

     "document_url": "<combined pdf document open url>

      "download_link": "<combined pdf download url>", 

       "status": "inprogress/completed/failed"

          }

2. Failure case:

In rare instances, after the combine process is completed, a store failure may occur due to unforeseen circumstances (e.g., folder permissions being revoked mid-process). In such cases, the below response will be returned, and the user can download the combined bytes via the provided download_link.

{

      "download_link": "<combined pdf download url>",  // Available only on combine process success 

       "status": "failed"

       "error": {

                      "errorcode":"<R2000>"

                      "message" :"<message>"

                    }

}