Merge several documents into one Merges several Word, PDF documents to a single document.
Merge several Word, PDF documents to a single document REST API
Server
Method
Endpoint
https://api.aspose.cloud/v4.0
PUT
/words/online/put/appendDocument
You can use the following parameters in a REST request:
Parameter Name
Data Type
Required/Optional
Description
loadEncoding
string
Optional
Encoding that will be used to load an HTML (or TXT) document if the encoding is not specified in HTML.
password
string
Optional
Password of protected Word document. Use the parameter to pass a password via SDK. SDK encrypts it automatically. We don’t recommend to use the parameter to pass a plain password for direct call of API.
encryptedPassword
string
Optional
Password of protected Word document. Use the parameter to pass an encrypted password for direct calls of API. See SDK code for encyption details.
destFileName
string
Optional
Result path of the document after the operation. If this parameter is omitted then result of the operation will be saved as the source document.
revisionAuthor
string
Optional
Initials of the author to use for revisions.If you set this parameter and then make some changes to the document programmatically, save the document and later open the document in MS Word you will see these changes as revisions.
revisionDateTime
string
Optional
The date and time to use for revisions.
Use $multipart/form-data
request to combine one or more properties into a single body:
Property Name
Data Type
Required/Optional
Description
document
string(binary)
Required
Original document.
documentList
BaseEntryList
Required
with a list of entries to append
Note : to access this REST API, you need to register and get personal credentials. Use the ‘
Quick Start ’ guide to go through the procedure in a couple of minutes.
Merge several Word, PDF documents to a single document usage examples
Let’s look at practical examples of using the web service. You can do this both with cURL and Postman utilities, and from your code in various programming languages: Python, Java, JavaScript, C#, PHP, C++, Go, Ruby, Swift, Dart.
How to merge several Word, PDF documents to a single document with cURL or Postman
One of the easiest and fastest ways to call a REST API is to use cURL or Postman:
cURL Request
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
curl -v "https://api.aspose.cloud/v4.0/words/online/put/appendDocument" \
-X PUT \
-H "Content-Type: multipart/form-data" \
-H "Authorization: Bearer ####################" \
-F Document="@Sample.docx" \
-F DocumentList="{\"DocumentEntries\":[{\"FileReference\":{\"Reference\":\"Sample.docx\",\"Source\":\"Request\"},\"ImportFormatMode\":\"KeepSourceFormatting\"}]}"
To get a JWT token use these instructions
Postman Request
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{
"info": {
"name": "AppendDocumentOnline",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"auth": {
"type": "oauth2",
"oauth2": [
{
"key": "clientSecret",
"value": "{{CLIENT_SECRET}}",
"type": "string"
},
{
"key": "clientId",
"value": "{{CLIENT_ID}}",
"type": "string"
},
{
"key": "addTokenTo",
"value": "header",
"type": "string"
},
{
"key": "client_authentication",
"value": "body",
"type": "string"
},
{
"key": "accessTokenUrl",
"value": "https://api.aspose.cloud/connect/token",
"type": "string"
},
{
"key": "grant_type",
"value": "client_credentials",
"type": "string"
},
{
"key": "tokenName",
"value": "Access Token",
"type": "string"
}
]
},
"item": [
{
"name": "appendRequest",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "PUT",
"header": [
],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "Document",
"type": "file",
"src": "{{LocalFile}}"
},
{
"key": "DocumentList",
"type": "text",
"value": "{\"DocumentEntries\":[{\"FileReference\":{\"Reference\":\"{{LocalFile}}\",\"Source\":\"Request\"},\"ImportFormatMode\":\"KeepSourceFormatting\"}]}"
}
]
},
"url": {
"raw": "https://api.aspose.cloud/v4.0/words/online/put/appendDocument",
"protocol": "https",
"host": [
"api",
"aspose",
"cloud"
],
"path": [
"v4.0",
"words",
"online",
"put",
"appendDocument"
],
"query": [
]
}
},
"response": []
}
],
"variable": [
{ "key": "LocalFile", "value": "Sample.docx" }
]
}
To get a JWT token use these instructions
How to merge several Word, PDF documents to a single document in Python, Java, C#, C++, JavaScript and other programming languages
Using SDK is the quickest way to speed up the development. Please take a look at the provided code examples to quickly call this web service from your favourite programming language:
Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os
import asposewordscloud
import asposewordscloud.models.requests
from asposewordscloud.rest import ApiException
from shutil import copyfile
words_api = WordsApi(client_id = '####-####-####-####-####', client_secret = '##################')
local_file= 'Sample.docx'
request_document = open(local_file, 'rb')
request_document_list_document_entries0_file_reference_stream = open(os.path.join(self.local_test_folder, local_file), 'rb')
request_document_list_document_entries0_file_reference = asposewordscloud.FileReference.fromLocalFileContent(request_document_list_document_entries0_file_reference_stream)
request_document_list_document_entries0 = asposewordscloud.DocumentEntry(file_reference=request_document_list_document_entries0_file_reference, import_format_mode='KeepSourceFormatting')
request_document_list_document_entries = [request_document_list_document_entries0]
request_document_list = asposewordscloud.DocumentEntryList(document_entries=request_document_list_document_entries)
append_request = asposewordscloud.models.requests.AppendDocumentOnlineRequest(document=request_document, document_list=request_document_list)
words_api.append_document_online(append_request)
Java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import com.aspose.words.cloud.*;
import com.aspose.words.cloud.api.*;
import com.aspose.words.cloud.model.*;
import com.aspose.words.cloud.model.requests.*;
import com.aspose.words.cloud.model.responses.*;
import java.nio.file.Files;
import java.nio.file.Paths;
ApiClient apiClient = new ApiClient(/*clientId*/ "####-####-####-####-####", /*clientSecret*/ "##################", null);
WordsApi wordsApi = new WordsApi(apiClient);
String localFile = "Sample.docx";
byte[] requestDocument = Files.readAllBytes(Paths.get(localFile).toAbsolutePath());
byte[] requestDocumentListDocumentEntries0FileReferenceStream = Files.readAllBytes(Paths.get(TestInitializer.LocalTestFolder, localFile).toAbsolutePath());
FileReference requestDocumentListDocumentEntries0FileReference = new FileReference(requestDocumentListDocumentEntries0FileReferenceStream);
DocumentEntry requestDocumentListDocumentEntries0 = new DocumentEntry();
requestDocumentListDocumentEntries0.setFileReference(requestDocumentListDocumentEntries0FileReference);
requestDocumentListDocumentEntries0.setImportFormatMode("KeepSourceFormatting");
ArrayList<DocumentEntry> requestDocumentListDocumentEntries = new ArrayList<DocumentEntry>();
requestDocumentListDocumentEntries.add(requestDocumentListDocumentEntries0);
DocumentEntryList requestDocumentList = new DocumentEntryList();
requestDocumentList.setDocumentEntries(requestDocumentListDocumentEntries);
AppendDocumentOnlineRequest appendRequest = new AppendDocumentOnlineRequest(requestDocument, requestDocumentList, null, null, null, null, null, null);
wordsApi.appendDocumentOnline(appendRequest);
Node.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import * as fs from "fs";
const clientId = "####-####-####-####-####";
const secret = "##################";
const wordsApi = new WordsApi(clientId, secret);
const localFile = "Sample.docx";
const requestDocument = fs.createReadStream(localFile);
const requestDocumentListDocumentEntries0FileReferenceStream = fs.createReadStream(BaseTest.localBaseTestDataFolder + localFile);
const requestDocumentListDocumentEntries0FileReference = model.FileReference.fromLocalFileContent(requestDocumentListDocumentEntries0FileReferenceStream);
const requestDocumentListDocumentEntries0 = new model.DocumentEntry({
fileReference: requestDocumentListDocumentEntries0FileReference,
importFormatMode: "KeepSourceFormatting"
})
const requestDocumentListDocumentEntries = [
requestDocumentListDocumentEntries0
]
const requestDocumentList = new model.DocumentEntryList({
documentEntries: requestDocumentListDocumentEntries
})
const appendRequest = new model.AppendDocumentOnlineRequest({
document: requestDocument,
documentList: requestDocumentList
});
wordsApi.appendDocumentOnline(appendRequest)
.then((appendRequestResult) => {
// tslint:disable-next-line:no-console
console.log("Result of appendRequest: ", appendRequestResult);
});
C#
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Aspose.Words.Cloud.Sdk;
using Aspose.Words.Cloud.Sdk.Model;
using Aspose.Words.Cloud.Sdk.Model.Requests;
var config = new Configuration { ClientId = "####-####-####-####-####", ClientSecret = "##################" };
var wordsApi = new WordsApi(config);
var localFile = "Sample.docx";
using var requestDocument = File.OpenRead(localFile);
using var requestDocumentListDocumentEntries0FileReferenceStream = File.OpenRead(LocalTestDataFolder + localFile);
var requestDocumentListDocumentEntries0FileReference = new FileReference(requestDocumentListDocumentEntries0FileReferenceStream);
var requestDocumentListDocumentEntries0 = new DocumentEntry()
{
FileReference = requestDocumentListDocumentEntries0FileReference,
ImportFormatMode = "KeepSourceFormatting"
};
var requestDocumentListDocumentEntries = new List<DocumentEntry>()
{
requestDocumentListDocumentEntries0
};
var requestDocumentList = new DocumentEntryList()
{
DocumentEntries = requestDocumentListDocumentEntries
};
var appendRequest = new AppendDocumentOnlineRequest(requestDocument, requestDocumentList);
await wordsApi.AppendDocumentOnline(appendRequest);
PHP
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php
use Aspose\Words\WordsApi;
use Aspose\Words\Model\Requests\{AppendDocumentOnlineRequest};
use Aspose\Words\Model\{DocumentEntry, DocumentEntryList, FileReference};
$clientId = '####-####-####-####-####';
$secret = '##################';
$wordsApi = new WordsApi($clientId, $secret);
$localFile = "Sample.docx";
$requestDocument = $localFile;
$requestDocumentListDocumentEntries0FileReferenceStream = realpath(__DIR__ . '/../../..') . '/TestData/' . $localFile;
$requestDocumentListDocumentEntries0FileReference = FileReference::fromLocalFileContent($requestDocumentListDocumentEntries0FileReferenceStream);
$requestDocumentListDocumentEntries0 = new DocumentEntry(array(
"file_reference" => $requestDocumentListDocumentEntries0FileReference,
"import_format_mode" => "KeepSourceFormatting",));
$requestDocumentListDocumentEntries = [
$requestDocumentListDocumentEntries0,
];
$requestDocumentList = new DocumentEntryList(array(
"document_entries" => $requestDocumentListDocumentEntries,));
$appendRequest = new AppendDocumentOnlineRequest(
$requestDocument, $requestDocumentList, NULL, NULL, NULL, NULL, NULL, NULL);
$wordsApi->appendDocumentOnline($appendRequest);
C++
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "aspose_words_cloud.h"
using namespace aspose::words::cloud;
auto config = std::make_shared<ApiConfiguration>(/*clientId*/ L"####-####-####-####-####", /*clientSecret*/ L"##################");
auto wordsApi = std::make_shared<WordsApi>(config);
std::wstring localFile = L"Sample.docx";
auto requestDocument = std::shared_ptr<std::istream>(new std::ifstream(std::filesystem::path(localFile), std::istream::binary));
auto requestDocumentListDocumentEntries0FileReferenceStream = std::shared_ptr<std::istream>(new std::ifstream(std::filesystem::path(getDataDir(localFile)), std::istream::binary));
auto requestDocumentListDocumentEntries0FileReference = std::make_shared<aspose::words::cloud::models::FileReference>(requestDocumentListDocumentEntries0FileReferenceStream);
auto requestDocumentListDocumentEntries0 = std::make_shared<aspose::words::cloud::models::DocumentEntry>();
requestDocumentListDocumentEntries0->setFileReference(requestDocumentListDocumentEntries0FileReference);
requestDocumentListDocumentEntries0->setImportFormatMode(std::make_shared<std::wstring>(L"KeepSourceFormatting"));
auto requestDocumentListDocumentEntries = std::make_shared<std::vector<std::shared_ptr<aspose::words::cloud::models::DocumentEntry>>>();
requestDocumentListDocumentEntries->push_back(requestDocumentListDocumentEntries0);
auto requestDocumentList = std::make_shared<aspose::words::cloud::models::DocumentEntryList>();
requestDocumentList->setDocumentEntries(requestDocumentListDocumentEntries);
std::shared_ptr<requests::AppendDocumentOnlineRequest> appendRequest(
new requests::AppendDocumentOnlineRequest(
requestDocument, requestDocumentList));
wordsApi->appendDocumentOnline(appendRequest);
Go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{
"ClientId" : " ####-####-####-####-####" ,
"ClientSecret" : " ##################" ,
"BaseUrl" : " https://api.aspose.cloud"
}
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import (
"os"
"github.com/aspose-words-cloud/aspose-words-cloud-go/dev/api/models")
config, _ := models.NewConfiguration("config.json")
wordsApi, ctx, _ := api.CreateWordsApi(config)
localFile:= "Sample.docx"
requestDocument, _ := os.Open(localFile)
requestDocumentListDocumentEntries0FileReferenceStream := OpenFile(t, localFile)
requestDocumentListDocumentEntries0FileReference := models.CreateLocalFileReference(requestDocumentListDocumentEntries0FileReferenceStream)
requestDocumentListDocumentEntries0 := models.DocumentEntry{
FileReference: &requestDocumentListDocumentEntries0FileReference,
ImportFormatMode: ToStringPointer("KeepSourceFormatting"),
}
requestDocumentListDocumentEntries := []models.DocumentEntry{
requestDocumentListDocumentEntries0,
}
requestDocumentList := models.DocumentEntryList{
DocumentEntries: requestDocumentListDocumentEntries,
}
appendRequestOptions := map[string]interface{}{}
appendRequest := &models.AppendDocumentOnlineRequest{
Document: requestDocument,
DocumentList: &requestDocumentList,
Optionals: appendRequestOptions,
}
_, _, _ = wordsApi.AppendDocumentOnline(ctx, appendRequest)
Ruby
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'aspose_words_cloud'
AsposeWordsCloud.configure do |config|
config.client_data['ClientId'] = '####-####-####-####-####'
config.client_data['ClientSecret'] = '##################'
end
@words_api = WordsAPI.new
local_file= 'Sample.docx'
request_document = File.open(local_file)
request_document_list_document_entries0_file_referenceStream = File.open(File.join(local_test_folder, local_file))
request_document_list_document_entries0_file_reference = AsposeWordsCloud::FileReference.fromLocalFileContent(request_document_list_document_entries0_file_referenceStream)
request_document_list_document_entries0 = DocumentEntry.new({:FileReference => request_document_list_document_entries0_file_reference, :ImportFormatMode => 'KeepSourceFormatting'})
request_document_list_document_entries = [request_document_list_document_entries0]
request_document_list = DocumentEntryList.new({:DocumentEntries => request_document_list_document_entries})
append_request = AppendDocumentOnlineRequest.new(document: request_document, document_list: request_document_list)
@words_api.append_document_online(append_request)
Swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import AsposeWordsCloud
let config = Configuration(clientId: "####-####-####-####-####", clientSecret: "##################");
let api = try WordsAPI(configuration: config);
let localFile = "Sample.docx";
let requestDocument = InputStream(url: URL(string: localFile))!;
let requestDocumentListDocumentEntries0FileReferenceStream = InputStream(url: self.getLocalTestDataFolder().appendingPathComponent(localFile, isDirectory: false))!;
let requestDocumentListDocumentEntries0FileReference = FileReference(localFileContent: requestDocumentListDocumentEntries0FileReferenceStream);
let requestDocumentListDocumentEntries0 = DocumentEntry()
.setImportFormatMode(importFormatMode: "KeepSourceFormatting")
.setFileReference(fileReference: requestDocumentListDocumentEntries0FileReference);
let requestDocumentListDocumentEntries = [
requestDocumentListDocumentEntries0 as! DocumentEntry
];
let requestDocumentList = DocumentEntryList()
.setDocumentEntries(documentEntries: requestDocumentListDocumentEntries);
let appendRequest = AppendDocumentOnlineRequest(document: requestDocument, documentList: requestDocumentList);
_ = try api.appendDocumentOnline(request: appendRequest);
Dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'dart:io';
import 'package:aspose_words_cloud/aspose_words_cloud.dart';
final clientId = "####-####-####-####-####";
final clientSecret = "##################";
final config = Configuration(clientId, clientSecret);
final wordsApi = WordsApi(config);
final localFile = 'Sample.docx';
final requestDocument = (await File(localFile).readAsBytes()).buffer.asByteData();
final requestDocumentListDocumentEntries0FileReferenceStream = await context.loadBinaryFile(localFile);
final requestDocumentListDocumentEntries0FileReference = FileReference.fromLocalFile(requestDocumentListDocumentEntries0FileReferenceStream);
final requestDocumentListDocumentEntries0 = DocumentEntry();
requestDocumentListDocumentEntries0.fileReference = requestDocumentListDocumentEntries0FileReference;
requestDocumentListDocumentEntries0.importFormatMode = 'KeepSourceFormatting';
final requestDocumentListDocumentEntries = [
requestDocumentListDocumentEntries0];
final requestDocumentList = DocumentEntryList();
requestDocumentList.documentEntries = requestDocumentListDocumentEntries;
final appendRequest = AppendDocumentOnlineRequest(requestDocument, requestDocumentList);
await wordsApi.appendDocumentOnline(appendRequest);
See Also
GitHub repository — explore Aspose.Words Cloud SDK Family. These software libraries take care of all low-level document-processing details.