Compare commits
5 Commits
bugfix/wro
...
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>
|
/// <summary>
|
||||||
///
|
///
|
||||||
@@ -8,5 +10,5 @@ public class MailParams
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </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)
|
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;
|
_tempService = tempService;
|
||||||
_envRcvService = envelopeReceiverService;
|
_envRcvService = envelopeReceiverService;
|
||||||
_dConfig = dispatcherConfigOptions.Value;
|
_dConfig = dispatcherConfigOptions.Value;
|
||||||
_configService = configService;
|
_configService = configService;
|
||||||
_placeholders = mailConfig.Value.Placeholders;
|
_placeholders = new Dictionary<string, string>(mailConfig.Value.Placeholders);
|
||||||
_authenticator = authenticator;
|
_authenticator = authenticator;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<Dictionary<string, string>> CreatePlaceholders(string? accessCode = null, EnvelopeReceiverDto? envelopeReceiverDto = null)
|
private async Task<Dictionary<string, string>> CreatePlaceholders(string? accessCode = null, EnvelopeReceiverDto? envelopeReceiverDto = null)
|
||||||
|
|||||||
@@ -1,18 +1,17 @@
|
|||||||
using EnvelopeGenerator.Web.Services;
|
using EnvelopeGenerator.Web.Services;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
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;
|
this.database = database;
|
||||||
|
_logger = logger;
|
||||||
protected readonly ILogger _logger;
|
|
||||||
|
|
||||||
public BaseController(DatabaseService database, ILogger 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