Ανέβασμα Αρχείου ως Πρότυπο
Οδηγός αυτός σας καθοδηγεί σε όλη τη διαδικασία δημιουργίας προτύπου και ανέβασμα ενός αρχείου PDF, εικόνας ή Word για χρήση ως πρότυπο εγγράφου στο Legalesign.
Χρειάζεστε άμεση ενημέρωση για την πρόοδο του ανέβασματος; Δείτε το Παρακολούθηση Προόδου Ανέβασματος με Συνδρομές.
Τι θα Μάθετε
Στο τέλος αυτού του οδηγού, θα ξέρετε πώς να:
- Δημιουργήσετε ένα νέο πρότυπο στην ομάδα σας στο Legalesign
- Λάβετε το αναγνωριστικό προτύπου (template ID) και τη διεύθυνση URL ανέβασματος από την απόκριση της μετάλλαξης
- Ανεβάσετε το αρχείο πηγής σας στο πρότυπο
- Επαληθεύσετε ότι το ανέβασμα ήταν επιτυχές
Προαπαιτούμενα
Πριν ξεκινήσετε, βεβαιωθείτε ότι έχετε:
- Λογαριασμό Legalesign με πρόσβαση API
- Τα διαπιστευτήρια αυθεντικοποίησής σας (δείτε τον οδηγό αυθεντικοποίησης)
- Ένα αρχείο PDF, εικόνας ή Word έτοιμο για ανέβασμα (μέγιστο 50MB)
- Το αναγνωριστικό της ομάδας σας (το χώρο εργασίας όπου θέλετε να δημιουργήσετε το πρότυπο)
Η Πλήρης Διαδικασία
Βήμα 1: Δημιουργία Προτύπου
Πρώτα, δημιουργήστε ένα κενό πρότυπο στο Legalesign. Αυτό επιστρέφει τόσο το αναγνωριστικό προτύπου (template ID) όσο και μια προ-υπογεγραμμένη διεύθυνση URL για το ανέβασμα του PDF. Για να το κάνετε αυτό, πρέπει να εκτελέσετε μια μετάλλαξη GraphQL. Αν δεν το έχετε κάνει ξανά, δείτε την Εισαγωγή στο GraphQL.
Τι είναι το Πρότυπο;
Ένα πρότυπο είναι μια επαναχρησιμοποιήσιμη δομή εγγράφου στο Legalesign. Μόλις ανεβάσετε ένα PDF σε ένα πρότυπο, μπορείτε:
- Να προσθέσετε πεδία υπογραφής και πεδία φόρμας
- Να το στείλετε σε πολλαπλούς παραλήπτες
- Να το επαναχρησιμοποιήσετε για διαφορετικούς υπογράφοντες
Μετάλλαξη GraphQL
mutation CreateTemplate($input: templateCreateInput!) {
createTemplate(input: $input) {
id
uploadUrl
}
}
Είσοδοι Μεταβλητών
{
"input": {
"groupId": "grpYourGroupAPIId",
"title": "Employment Contract Template"
}
}
Επεξήγηση Παραμέτρων
- groupId: Το ID της ομάδας/χώρου εργασίας σας σε μορφή base64 (μπορείτε να το βρείτε από το URL στο Console https://console.legalesign.com/)
- title: Ένα περιγραφικό όνομα για το πρότυπό σας (μπορείτε να το αλλάξετε αργότερα)
Βήμα 2: Εξαγωγή του Template ID και της Διεύθυνσης Upload URL
Η μετάλλαξη επιστρέφει ένα αντικείμενο templateCreateOutput. Αποθηκεύστε το πεδίο id και το string uploadUrl.
Παράδειγμα απόκρισης:
{
"data": {
"createTemplate": {
"id": "dHBsYjQ5YTg5NWQtYWRhMy0xMWYwLWIxZGMtMDY5NzZlZmU0MzIx",
"uploadUrl": "https://s3.amazonaws.com/bucket/path?signature=..."
}
}
}
Το αναγνωριστικό προτύπου είναι ένα κωδικοποιημένο σε Base64 string. Αποθηκεύστε και τις δύο τιμές από την απόκριση. Η διεύθυνση uploadUrl είναι βραχύβια και θα πρέπει να χρησιμοποιηθεί άμεσα.
Βήμα 3: Ανέβασμα του PDF σας
Χρησιμοποιήστε την επιστρεφόμενη uploadUrl για να ανεβάσετε το αρχείο PDF σας απευθείας στο S3. Αυτό θα διαφέρει ανάλογα με το stack ανάπτυξής σας. Στο παράδειγμά μας με javascript έχουμε χρησιμοποιήσει fetch, αλλά μπορείτε να χρησιμοποιήσετε και άλλες βιβλιοθήκες, συμπεριλαμβανομένου του aws-amplify.
Πλήρη Παραδείγματα που Λειτουργούν
- JavaScript
- Python
- C#
import fs from 'fs';
const AUTH_TOKEN = '<token-from-authentication-guide>';
const uploadPdfTemplate = async (groupId, title, pdfFilePath) => {
const graphqlEndpoint = 'https://graphql.uk.legalesign.com/graphql';
// Step 1: Create the template
console.log('Creating template...');
const createResponse = await fetch(graphqlEndpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${AUTH_TOKEN}`
},
body: JSON.stringify({
query: `
mutation CreateTemplate($input: templateCreateInput!) {
createTemplate(input: $input) {
id
uploadUrl
}
}
`,
variables: {
input: {
groupId: groupId,
title: title
}
}
})
});
const createResult = await createResponse.json();
const templateId = createResult.data.createTemplate.id;
const uploadUrl = createResult.data.createTemplate.uploadUrl;
console.log('Template created with ID:', templateId);
// Step 2: Upload the PDF
console.log('Uploading PDF...');
const fileData = fs.readFileSync(pdfFilePath);
const uploadResponse = await fetch(uploadUrl, {
method: 'PUT',
body: fileData,
headers: {
'Content-Type': 'application/pdf'
}
});
if (!uploadResponse.ok) {
throw new Error(`Upload failed: ${uploadResponse.statusText}`);
}
console.log('PDF uploaded successfully!');
return {
success: true,
templateId: templateId,
title: title
};
};
// Usage example
uploadPdfTemplate(
'grpYourGroupId',
'Employment Contract',
'./contract.pdf'
).then(result => {
console.log('Complete!', result);
}).catch(error => {
console.error('Error:', error);
});
Δεν απαιτούνται πρόσθετες εξαρτήσεις — το Node.js 18+ περιλαμβάνει το fetch εγγενώς.
import requests
from gql import gql, Client
from gql.transport.requests import RequestsHTTPTransport
def upload_pdf_template(graphql_endpoint, auth_token, group_id, title, pdf_file_path):
transport = RequestsHTTPTransport(
url=graphql_endpoint,
headers={'Authorization': auth_token}
)
client = Client(transport=transport, fetch_schema_from_transport=True)
# Step 1: Create the template
print('Creating template...')
create_mutation = gql('''
mutation CreateTemplate($input: templateCreateInput!) {
createTemplate(input: $input) {
id
uploadUrl
}
}
''')
create_result = client.execute(
create_mutation,
variable_values={
'input': {
'groupId': group_id,
'title': title
}
}
)
template_id = create_result['createTemplate']['id']
upload_url = create_result['createTemplate']['uploadUrl']
print(f'Template created with ID: {template_id}')
# Step 2: Upload the PDF
print('Uploading PDF...')
with open(pdf_file_path, 'rb') as f:
file_data = f.read()
response = requests.put(
upload_url,
data=file_data,
headers={'Content-Type': 'application/pdf'}
)
if response.status_code != 200:
raise Exception(f'Upload failed: {response.status_code}')
print('PDF uploaded successfully!')
return {
'success': True,
'templateId': template_id,
'title': title
}
if __name__ == '__main__':
result = upload_pdf_template(
'https://graphql.uk.legalesign.com/graphql',
'Bearer YOUR_TOKEN',
'grpYourGroupId',
'Employment Contract',
'./contract.pdf'
)
print('Complete!', result)
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using GraphQL;
using GraphQL.Client.Http;
using GraphQL.Client.Serializer.Newtonsoft;
using Newtonsoft.Json.Linq;
public class PdfTemplateUploader
{
private readonly GraphQLHttpClient graphQLClient;
public PdfTemplateUploader(string graphqlEndpoint, string authToken)
{
graphQLClient = new GraphQLHttpClient(graphqlEndpoint, new NewtonsoftJsonSerializer());
graphQLClient.HttpClient.DefaultRequestHeaders.Add("Authorization", authToken);
}
public async Task<UploadResult> UploadPdfTemplate(
string groupId,
string title,
string pdfFilePath)
{
// Step 1: Create the template
Console.WriteLine("Creating template...");
var createMutation = new GraphQLRequest
{
Query = @"
mutation CreateTemplate($input: templateCreateInput!) {
createTemplate(input: $input) {
id
uploadUrl
}
}
",
Variables = new
{
input = new
{
groupId = groupId,
title = title
}
}
};
var createResponse = await graphQLClient.SendMutationAsync<dynamic>(createMutation);
string templateId = createResponse.Data.createTemplate.id;
string uploadUrl = createResponse.Data.createTemplate.uploadUrl;
Console.WriteLine($"Template created with ID: {templateId}");
// Step 2: Upload the PDF
Console.WriteLine("Uploading PDF...");
using var httpClient = new HttpClient();
var fileBytes = await File.ReadAllBytesAsync(pdfFilePath);
var content = new ByteArrayContent(fileBytes);
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
var putResponse = await httpClient.PutAsync(uploadUrl, content);
if (!putResponse.IsSuccessStatusCode)
{
throw new Exception($"Upload failed: {putResponse.StatusCode}");
}
Console.WriteLine("PDF uploaded successfully!");
return new UploadResult
{
Success = true,
TemplateId = templateId,
Title = title
};
}
}
public class UploadResult
{
public bool Success { get; set; }
public string TemplateId { get; set; }
public string Title { get; set; }
}
class Program
{
static async Task Main(string[] args)
{
var uploader = new PdfTemplateUploader(
"https://graphql.uk.legalesign.com/graphql",
"Bearer YOUR_TOKEN"
);
var result = await uploader.UploadPdfTemplate(
"grpYourGroupId",
"Employment Contract",
"./contract.pdf"
);
Console.WriteLine($"Complete! Template ID: {result.TemplateId}");
}
}
Τι Συμβαίνει Μετά το Ανέβασμα;
Μόλις το PDF σας ανέβει, το Legalesign αυτόματα:
- Σαρώνει για ιούς - Εξασφαλίζει ότι το αρχείο είναι ασφαλές
- Ελέγχει ή μετατρέπει το αρχείο - Ελέγχει ότι τα PDF είναι έγκυρα ή μετατρέπει υποστηριζόμενα αρχεία όπως έγγραφα Word και εικόνες σε PDF
- Εξάγει πληροφορίες σελίδας - Λαμβάνει πλήθος σελίδων και διαστάσεις
- Επεξεργάζεται το αρχείο - Το βελτιστοποιεί για προβολή και υπογραφή
- Αποθηκεύει με ασφάλεια - Το μετακινεί σε μόνιμη αποθήκευση
Αυτή η διαδικασία συνήθως διαρκεί λίγα δευτερόλεπτα. Μόλις ολοκληρωθεί, το πρότυπό σας είναι έτοιμο προς χρήση!
Προσθήκη Υπογραφών και Πεδία
Αν θέλετε να αυτοματοποιήσετε τους συμμετέχοντες και τη θέση των πεδίων, μπορείτε να προετοιμάσετε το αρχείο πηγής πριν το ανέβασμα με δύο διαφορετικούς τρόπους:
- Ετικέτες κειμένου - Προσθέστε ετικέτες κειμένου Legalesign στο αρχείο πηγής ώστε να δημιουργούνται αυτόματα συμμετέχοντες, πεδία υπογραφής και πεδία φόρμας κατά τη διάρκεια της επεξεργασίας. Δείτε την εξήγηση του REST API στο γρήγορο εκπαιδευτικό και την αναφορά του endpoint Convert text tags.
- Ενσωματωμένα πεδία PDF - Αν το PDF σας περιέχει ήδη ενσωματωμένα πεδία φόρμας, το Legalesign μπορεί να τα χρησιμοποιήσει ως μέρος της ροής εργασίας ανέβασματος και προετοιμασίας προτύπου.
Επόμενα Βήματα
Τώρα που έχετε ένα πρότυπο με PDF, μπορείτε:
- Να προσθέσετε πεδία υπογραφής - Χρησιμοποιήστε τη μετάλλαξη
createTemplateElementγια να προσθέσετε πεδία - Να δημιουργήσετε ρόλους - Ορίστε ποιος θα υπογράψει το έγγραφο
- Να στείλετε για υπογραφή - Χρησιμοποιήστε τη μετάλλαξη
sendγια να το στείλετε στους παραλήπτες
Συνήθη Προβλήματα και Λύσεις
Σφάλμα "Χωρίς άδεια"
Επαληθεύστε ότι το αναγνωριστικό της ομάδας σας είναι σωστό και ότι έχετε αυθεντικοποιηθεί με τον σωστό λογαριασμό.
Σφάλμα "Το αρχείο είναι πολύ μεγάλο"
Συμπιέστε το PDF σας — το μέγιστο είναι 50MB.
Η Διεύθυνση Upload URL Έχει Λήξει
Χρησιμοποιήστε άμεσα τη διεύθυνση uploadUrl που επιστράφηκε από τη createTemplate. Αν αυτή λήξει πριν το ανέβασμα, ζητήστε μια νέα διεύθυνση URL με το ερώτημα upload χρησιμοποιώντας το αποθηκευμένο αναγνωριστικό προτύπου.
Σφάλμα "Μη έγκυρο PDF"
Ανοίξτε το PDF σε ένα πρόγραμμα ανάγνωσης PDF για να βεβαιωθείτε ότι είναι έγκυρο και στη συνέχεια κάντε επανεξαγωγή ή αποθήκευση.
Παρακολούθηση Προόδου Ανέβασματος
Για να λάβετε άμεση ενημέρωση σχετικά με την επεξεργασία του ανέβασματος (σάρωση, επικύρωση, ολοκλήρωση), χρησιμοποιήστε συνδρομές. Δείτε το Παρακολούθηση Προόδου Ανέβασματος με Συνδρομές.