Présentation du nouveau Robot de fusion PDF de Transloadit
Nous aimons nos Robots, et c’est toujours un plaisir d’annoncer la sortie d’un nouveau venu ! Dans l’article d’aujourd’hui, nous avons justement cette occasion en accueillant le Robot /document/merge dans l’équipe.

Comme vous l’avez peut-être déjà deviné, le Robot /document/merge concatène plusieurs PDF pour former un seul document de sortie. De plus, ce Robot permet de fusionner plusieurs PDF protégés par mot de passe : il suffit de lui fournir un tableau de mots de passe d’entrée. Vous pouvez également protéger le PDF de sortie en fournissant un mot de passe de sortie. La protection par mot de passe fait partie d’un flux de travail sécurisé, mais ne remplace pas le contrôle d’accès à vos fichiers téléversés, à votre stockage et à vos liens partagés.
Fusionner deux PDF
Voyons-le en action ! Le Template ci-dessous prend deux PDF protégés par mot de passe et les fusionne. Vous pourriez également utiliser l’un de nos SDK pour automatiser le traitement de documents en masse.
<!-- This pulls Uppy from our CDN -->
<!-- For smaller self-hosted bundles, install Uppy and plugins manually: -->
<!-- npm i --save @uppy/core @uppy/dashboard @uppy/remote-sources @uppy/transloadit ... -->
<link
href="https://releases.transloadit.com/uppy/v3.10.0/uppy.min.css"
rel="stylesheet"
/>
<button id="browse">Select Files</button>
<script type="module">
import {
Uppy,
Dashboard,
ImageEditor,
RemoteSources,
Transloadit,
} from 'https://releases.transloadit.com/uppy/v3.10.0/uppy.min.mjs'
const uppy = new Uppy()
.use(Transloadit, {
waitForEncoding: true,
alwaysRunAssembly: true,
assemblyOptions: {
params: {
// It's often better store encoding instructions in your account
// and use a `template_id` instead of adding these steps inline
steps: {
':original': {
robot: '/upload/handle',
},
merge: {
use: {
steps: [':original'],
bundle_steps: true,
},
robot: '/document/merge',
result: true,
input_passwords: ['password1', 'password2'],
},
exported: {
use: ['merge', ':original'],
robot: '/s3/store',
credentials: 'demo_s3_credentials',
url_prefix: 'https://demos.transloadit.com/',
},
},
},
},
})
.use(Dashboard, { trigger: '#browse' })
.use(ImageEditor, { target: Dashboard })
.use(RemoteSources, {
companionUrl: 'https://api2.transloadit.com/companion',
})
.on('complete', ({ transloadit }) => {
// Due to `waitForEncoding:true` this is fired after encoding is done.
// Alternatively, set `waitForEncoding` to `false` and provide a `notify_url`
console.log(transloadit) // Array of Assembly Statuses
for (const assembly of transloadit) {
console.log(assembly.results) // Array of all encoding results
}
})
.on('error', (error) => {
console.error(error)
})
</script>
Cette démonstration publique utilise des exemples de documents et des mots de passe simples à des fins de démonstration. Elle exporte les originaux et le PDF fusionné non chiffré vers un bucket public. Utilisez ici uniquement des fichiers non sensibles ; l’exemple de stockage privé ci-dessous est destiné à votre propre intégration.
Comme vous pouvez le constater, Transloadit traite les PDF lorsqu’un tableau de mots de passe est
fourni au paramètre input_passwords. Les documents sont ensuite assemblés en un seul
PDF de sortie, présenté ci-dessous.

Pour protéger le document de sortie par mot de passe, définissez output_password.
Remplacez les valeurs indicatives des mots de passe ci-dessous sur votre serveur de confiance,
en utilisant un mot de passe de sortie fort et unique. Sans ordre explicite, les fichiers d’entrée
sont triés par nom de fichier dans l’ordre alphanumérique : fournissez
input_passwords dans ce même ordre, ou utilisez les
options de classement des documents.
Créez un ensemble d’informations d’identification de Template pour votre bucket S3 privé
et remplacez YOUR_AWS_CREDENTIALS par son nom. Cet exemple exporte uniquement le PDF fusionné
chiffré. bucket-default évite de demander une ACL d’objet publique ; la politique du
bucket doit également rester privée. Le chemin ci-dessous reste dans le périmètre du préfixe
uploads/ de la politique du guide de configuration ; modifiez la politique et le
chemin ensemble si vous changez ce préfixe. Ne placez pas les mots de passe dans le code exécuté dans
le navigateur, les dépôts publics ou les journaux.
{
"steps": {
"merge": {
"use": {
"steps": [":original"],
"bundle_steps": true
},
"robot": "/document/merge",
"input_passwords": ["FIRST_INPUT_PASSWORD", "SECOND_INPUT_PASSWORD"],
"output_password": "REPLACE_WITH_A_STRONG_UNIQUE_PASSWORD",
"result": true
},
"exported": {
"use": "merge",
"robot": "/s3/store",
"credentials": "YOUR_AWS_CREDENTIALS",
"acl": "bucket-default",
"path": "uploads/merged/${unique_prefix}/${file.url_name}"
}
}
}
Le mot de passe de sortie s’applique au PDF fusionné, pas aux originaux téléversés ni à toutes les copies des données. Limitez l’accès aux fichiers d’entrée comme aux résultats, et partagez le mot de passe de sortie séparément du document. Un mot de passe faible ou divulgué n’offre pas de protection réelle.
Pour conclure
Voilà pour cette présentation de notre dernier Robot. Quelques autres sont prêts à être présentés. Pour suivre les prochaines actualités de Transloadit, inscrivez-vous à Dev Times (English) ci-dessous.
