Compare commits
5 Commits
feat/signF
...
8a79ee4126
| Author | SHA1 | Date | |
|---|---|---|---|
| 8a79ee4126 | |||
| cde9896c01 | |||
| c7d26a87b0 | |||
| 17ceb1f72a | |||
| b2c396c3b2 |
@@ -1,4 +1,6 @@
|
||||
namespace EnvelopeGenerator.Application.Configurations;
|
||||
using System.Collections.Immutable;
|
||||
|
||||
namespace EnvelopeGenerator.Application.Configurations;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
@@ -8,5 +10,5 @@ public class MailParams
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public required Dictionary<string, string> Placeholders { get; init; }
|
||||
public required ImmutableDictionary<string, string> Placeholders { get; init; }
|
||||
}
|
||||
@@ -44,11 +44,11 @@ private readonly IAuthenticator _authenticator;
|
||||
public EnvelopeMailService(IEmailOutRepository repository, IMapper mapper, IEmailTemplateService tempService, IEnvelopeReceiverService envelopeReceiverService, IOptions<DispatcherParams> dispatcherConfigOptions, IConfigService configService, IOptions<MailParams> mailConfig, IAuthenticator authenticator) : base(repository, mapper)
|
||||
{
|
||||
_tempService = tempService;
|
||||
_envRcvService = envelopeReceiverService;
|
||||
_dConfig = dispatcherConfigOptions.Value;
|
||||
_configService = configService;
|
||||
_placeholders = mailConfig.Value.Placeholders;
|
||||
_authenticator = authenticator;
|
||||
_envRcvService = envelopeReceiverService;
|
||||
_dConfig = dispatcherConfigOptions.Value;
|
||||
_configService = configService;
|
||||
_placeholders = new Dictionary<string, string>(mailConfig.Value.Placeholders);
|
||||
_authenticator = authenticator;
|
||||
}
|
||||
|
||||
private async Task<Dictionary<string, string>> CreatePlaceholders(string? accessCode = null, EnvelopeReceiverDto? envelopeReceiverDto = null)
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
using EnvelopeGenerator.Web.Services;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace EnvelopeGenerator.Web.Controllers
|
||||
namespace EnvelopeGenerator.Web.Controllers;
|
||||
|
||||
public class BaseController : Controller
|
||||
{
|
||||
public class BaseController : Controller
|
||||
protected readonly DatabaseService database;
|
||||
|
||||
protected readonly ILogger _logger;
|
||||
|
||||
public BaseController(DatabaseService database, ILogger logger)
|
||||
{
|
||||
protected readonly DatabaseService database;
|
||||
|
||||
protected readonly ILogger _logger;
|
||||
|
||||
public BaseController(DatabaseService database, ILogger logger)
|
||||
{
|
||||
this.database = database;
|
||||
_logger = logger;
|
||||
}
|
||||
this.database = database;
|
||||
_logger = logger;
|
||||
}
|
||||
}
|
||||
|
||||
74
EnvelopeGenerator.Web/wwwroot/README.md
Normal file
74
EnvelopeGenerator.Web/wwwroot/README.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# 📄 PSPDFKit-Integration – Vanilla JavaScript
|
||||
|
||||
Dieses Projekt zeigt, wie die PDF-Anzeige- und Signaturbibliothek [PSPDFKit](https://www.nutrient.io/sdk/web/getting-started/other-frameworks/javascript/) mithilfe von **Vanilla JavaScript** integriert werden kann.
|
||||
|
||||
## 🚀 Verwendungszweck
|
||||
|
||||
PSPDFKit wurde in der Webanwendung verwendet, um PDF-Dokumente:
|
||||
- anzuzeigen,
|
||||
- zu signieren,
|
||||
- mit Anmerkungen zu versehen,
|
||||
- Formularfelder auszufüllen.
|
||||
|
||||
Benutzer können Dokumente **direkt über den Browser signieren und versenden**.
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Wo und wie wurde PSPDFKit verwendet?
|
||||
|
||||
### 1. PSPDFKit laden
|
||||
|
||||
PSPDFKit wurde mit der Funktion `loadPSPDFKit` in `UI.js` gestartet:
|
||||
|
||||
```js
|
||||
PSPDFKit.load({
|
||||
container: ‚#app‘,
|
||||
document: arrayBuffer,
|
||||
licenseKey: ‚YOUR_LICENSE_KEY‘,
|
||||
...
|
||||
})
|
||||
```
|
||||
|
||||
### 2. Anmerkungen und Formularfelder
|
||||
|
||||
In `annotation.js` werden die folgenden Felder dynamisch zu PDF-Dokumenten hinzugefügt:
|
||||
|
||||
- **Signaturfeld** (`SignatureFormField`)
|
||||
- **Position** (`TextFormField`)
|
||||
- **Stadt** (`TextFormField`)
|
||||
- **Datum** (`TextFormField`, wird automatisch mit dem heutigen Datum ausgefüllt)
|
||||
- **Bezeichnungen** (`Ort`, `Position`, `Date`) – dies sind nur lesbare Textfelder.
|
||||
- **Rahmen für Signaturbild** – wird dynamisch erstellt und platziert, wenn der Benutzer unterschreibt.
|
||||
|
||||
Die Felder werden entsprechend ihrer Position auf dem PDF berechnet und für jedes Feld wird eine eindeutige ID erstellt.
|
||||
|
||||
---
|
||||
|
||||
### 3. Anpassungen der Symbolleiste
|
||||
|
||||
In `UI.js` ist die Standard-Symbolleiste (`toolbarItems`) von PSPDFKit konfiguriert:
|
||||
|
||||
- Es werden nur zulässige Elemente (`sidebar`, `zoom`, `pager`, `search` usw.) angezeigt.
|
||||
- Je nach Benutzerberechtigung (z. B. schreibgeschützt oder beschreibbar) werden die folgenden speziellen Schaltflächen dynamisch hinzugefügt:
|
||||
|
||||
**Beschreibbarer Modus:**
|
||||
- `Teilen` (SHARE)
|
||||
- `Logout` (LOGOUT)
|
||||
- `Zurücksetzen` (RESET)
|
||||
- `Ablehnen` (REJECT)
|
||||
- `Finalisieren` (FINISH)
|
||||
|
||||
**Nur-Lesemodus:**
|
||||
- Die Schaltfläche `Teilen` kopiert nur den Link in die Zwischenablage (COPY_URL)
|
||||
|
||||
Für mobile Geräte werden zusätzlich vereinfachte Schaltflächen angezeigt.
|
||||
|
||||
---
|
||||
|
||||
### 📁 Wichtige Dateien
|
||||
|
||||
| Datei | Beschreibung |
|
||||
|-------------------|-----------------------------------------------|
|
||||
| `app.js` | Hauptanwendungsklasse, Dokumentladen und -steuerung |
|
||||
| `ui.js` | PSPDFKit-UI-Einrichtung und Symbolleistenverwaltung |
|
||||
| `annotation.js` | Erstellen und Löschen von Anmerkungsfeldern |
|
||||
Reference in New Issue
Block a user