1
0
Fork 0
mirror of https://github.com/24eme/signaturepdf synced 2024-05-21 15:16:37 +02:00

Merge branch 'master' of github.com:24eme/signaturepdf

This commit is contained in:
Tanguy Le Faucheur 2024-02-16 15:48:13 +01:00
commit 9edcac9ea8
37 changed files with 1945 additions and 145 deletions

View file

@ -12,6 +12,9 @@ Liste des instances permettant d'utiliser ce logiciel :
- [pdf.libreon.fr](https://pdf.libreon.fr)
- [pdf.hostux.net](https://pdf.hostux.net)
- [pdf.nebulae.co](https://pdf.nebulae.co)
- [pdf.kaosx.ovh](https://pdf.kaosx.ovh)
- [pdf.ti-nuage.fr](https://pdf.ti-nuage.fr)
- [pdf.cemea.org](https://pdf.cemea.org)
_N'hésitez pas à rajouter la votre via une issue ou une pull request_

View file

@ -9,7 +9,10 @@ List of instances where you can use this software:
- [pdf.libreon.fr](https://pdf.libreon.fr)
- [pdf.hostux.net](https://pdf.hostux.net)
- [pdf.nebulae.co](https://pdf.nebulae.co)
- [pdf.kaosx.cf](https://pdf.kaosx.cf)
- [pdf.kaosx.ovh](https://pdf.kaosx.ovh)
- [pdf.ti-nuage.fr](https://pdf.ti-nuage.fr)
- [pdf.cemea.org](https://pdf.cemea.org)
- [pdf.spirio.fr](https://pdf.spirio.fr)
_Feel free to add yours through an issue or a pull request._
@ -32,13 +35,10 @@ Open-source software under the AGPL V3 license.
- [Contributors](#contributors)
- [Fundings](#fundings)
- [Screenshots](#screenshots)
<<<<<<< HEAD
=======
- [Signature feature](#signature-feature)
- [Organizing feature](#organizing-feature)
- [Metadata feature](#metadata-feature)
- [Compression feature](#compression-feature)
>>>>>>> 6f677d88b834018412ab55101942c97b3213743b
## Installation
@ -139,7 +139,6 @@ DEBUG=1 make test
- **ImageMagick** Image manipulation toolset: https://imagemagick.org/ (Apache-2.0)
- **Caveat** Handwriting-style font: https://github.com/googlefonts/caveat (OFL-1.1)
- **PDF-LIB** JavaScript library for PDF manipulation used for writing metadata: https://pdf-lib.js.org/ (MIT)
- **PDF-LIB** JavaScript library for PDF manipulation used for writing metadata: https://pdf-lib.js.org/ (MIT)
- **Ghostscript** GPL Ghostscript is a software suite for processing PostScript and PDF file formats (GPLv3)
For testing:
@ -170,9 +169,6 @@ Vincent LAURENT (24ème), Jean-Baptiste Le Metayer (24ème), Xavier Garnier (Log
- 100 € excl. taxes donations from the company PDG IT
- 1 040 € excl. taxes from the foundation NLNet pour software internationalization
<<<<<<< HEAD
The development of the software was primarily done during the working hours of 24ème employees.
=======
The development of the software was primarily done during the working hours of 24ème employees.
## Screenshots
@ -198,4 +194,3 @@ The development of the software was primarily done during the working hours of 2
### Compression feature
![image](https://github.com/24eme/signaturepdf/assets/71143205/7d0e93a3-5567-4545-9c43-033b9028b036)
>>>>>>> 6f677d88b834018412ab55101942c97b3213743b

54
app.php
View file

@ -14,12 +14,17 @@ if(getenv("DEBUG")) {
}
$f3->set('SUPPORTED_LANGUAGES',
['fr' => 'Français',
'en' => 'English',
[
'ar' => 'العربية',
'de' => 'Deutsch',
'en' => 'English',
'fr' => 'Français',
'it' => 'Italiano',
'kab' => 'Taqbaylit',
'oc' => 'Occitan',
'it' => 'Italiano']);
'ro' => 'Română',
'tr' => 'Türkçe'
]);
$f3->set('XFRAME', null); // Allow use in an iframe
$f3->set('ROOT', __DIR__);
@ -365,54 +370,11 @@ $f3->route('GET /cron', function($f3) {
if (!$f3->get('disableOrganization')) {
$f3->route('GET /organization',
function($f3) {
$f3->set('maxSize', min(array(convertPHPSizeToBytes(ini_get('post_max_size')), convertPHPSizeToBytes(ini_get('upload_max_filesize')))));
$f3->set('activeTab', 'organize');
echo View::instance()->render('organization.html.php');
}
);
$f3->route('POST /organize',
function($f3) {
$filenames = array();
$tmpfile = tempnam($f3->get('UPLOADS'), 'pdfsignature_organize');
unlink($tmpfile);
$pages = explode(',', preg_replace('/[^A-Z0-9a-z,]+/', '', $f3->get('POST.pages')));
$files = Web::instance()->receive(function($file,$formFieldName){
if(strpos(Web::instance()->mime($file['tmp_name'], true), 'application/pdf') !== 0) {
$f3->error(403);
}
return true;
}, false, function($fileBaseName, $formFieldName) use ($tmpfile, &$filenames) {
$filenames[] = str_replace('.pdf', '', $fileBaseName);
return basename($tmpfile).uniqid().".pdf";
});
if(!count($files)) {
$f3->error(403);
}
$pdfs = array();
foreach(array_keys($files) as $i => $file) {
$pdfs[] = chr(65 + $i)."=".$file;
}
shell_exec(sprintf("pdftk %s cat %s output %s", implode(" ", $pdfs), implode(" ", $pages), $tmpfile.'_final.pdf'));
Web::instance()->send($tmpfile."_final.pdf", null, 0, TRUE, implode('_', $filenames));
if($f3->get('DEBUG')) {
return;
}
array_map('unlink', glob($tmpfile."*"));
}
);
}
$f3->route('GET /metadata',
function($f3) {
$f3->set('activeTab','metadata');

View file

@ -13,7 +13,7 @@ Dependencies:
Installing dependencies:
```
sudo aptitude install php librsvg2-bin pdftk imagemagick potrace ghostscript locales
sudo apt-get install php librsvg2-bin pdftk imagemagick potrace ghostscript locales
```
Getting the source code:
@ -28,7 +28,7 @@ To run it:
php -S localhost:8000 -t public
```
#### PHP Configuration
### PHP Configuration
```
upload_max_filesize = 24M # Maximum size of the PDF file to sign
@ -36,7 +36,7 @@ post_max_size = 24M # Maximum size of the PDF file to sign
max_file_uploads = 201 # Maximum number of pages in the PDF, here 200 pages + the original PDF
```
#### Apache Configuration
### Apache Configuration
```
DocumentRoot /path/to/signaturepdf/public
@ -48,7 +48,24 @@ DocumentRoot /path/to/signaturepdf/public
php_value post_max_size 24M
</Directory>
```
### Troubleshooting
#### The translation is not done
The language remains in English in the interface.
Check that your locales are properly installed:
```
sudo apt-get install locales
sudo dpkg-reconfigure locales
```
Then if you use apache, you have to restart it:
```
sudo service apache2 restart
```
## [Deploy with Docker](#docker)
@ -85,7 +102,6 @@ The following variables can be used to configure the deployment:
docker run -d --name=signaturepdf -p 8080:80 -e SERVERNAME=pdf.example.org -e UPLOAD_MAX_FILESIZE=48M -e POST_MAX_SIZE=48M -e MAX_FILE_UPLOADS=401 -e PDF_STORAGE_PATH=/data signaturepdf
```
## [Alpine](#alpine)
Here is a script to install the solution on Linux Alpine (tested with version 3.15).

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-24 17:35+0200\n"
"POT-Creation-Date: 2024-02-08 23:06+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -179,7 +179,6 @@ msgstr ""
msgid "%s Turn"
msgstr ""
#, php-format
msgid "Download the selection"
msgstr ""
@ -269,6 +268,9 @@ msgstr ""
msgid "%s Text"
msgstr ""
msgid "Strikethrough"
msgstr ""
#, php-format
msgid "%s Check box"
msgstr ""

Binary file not shown.

View file

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-24 17:21+0200\n"
"PO-Revision-Date: 2023-09-29 08:55+0000\n"
"POT-Creation-Date: 2024-02-08 23:02+0100\n"
"PO-Revision-Date: 2023-11-18 05:03+0000\n"
"Last-Translator: ButterflyOfFire <boffire@users.noreply.hosted.weblate.org>\n"
"Language-Team: Arabic <https://hosted.weblate.org/projects/signature-pdf/"
"application/ar/>\n"
@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"X-Generator: Weblate 5.1-dev\n"
"X-Generator: Weblate 5.2\n"
msgid "en"
msgstr "ar"
@ -50,7 +50,7 @@ msgid ""
msgstr "سيتم معالجة ملف PDF على الخادم دون الاحتفاظ به أو تخزينه"
msgid "Your pdf is already optimized"
msgstr ""
msgstr "ملف PDF الخاص بك بالفعل أمثل"
msgid "Compress"
msgstr "ضغط"
@ -182,7 +182,6 @@ msgstr "إلغاء"
msgid "%s Turn"
msgstr "%s دوران"
#, php-format
msgid "Download the selection"
msgstr "تنزيل المُحدَّدة"
@ -272,6 +271,9 @@ msgstr "%s خاتَم"
msgid "%s Text"
msgstr "%s نص"
msgid "Strikethrough"
msgstr ""
#, php-format
msgid "%s Check box"
msgstr "%s خانة اختيار"

Binary file not shown.

View file

@ -0,0 +1,418 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-02-08 23:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: br\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "en"
msgstr ""
msgid "Compress PDF"
msgstr ""
msgid "Site not functional without JavaScript enabled"
msgstr ""
#, php-format
msgid "%s Compress a PDF"
msgstr ""
msgid "Reduce the size of a PDF"
msgstr ""
msgid "Choose a PDF"
msgstr ""
msgid "The PDF must not exceed "
msgstr ""
msgid "Mb"
msgstr ""
msgid ""
"The PDF will be processed by the server without being retained or stored"
msgstr ""
msgid "Your pdf is already optimized"
msgstr ""
msgid "Compress"
msgstr ""
msgid "Low compression (maximum quality)"
msgstr ""
#, php-format
msgid "%s Medium compression %s (default)"
msgstr ""
msgid "High compression (minimum quality)"
msgstr ""
msgid "Free open-source software"
msgstr ""
msgid "under AGPL-3.0 license"
msgstr ""
msgid "see the source code"
msgstr ""
msgid "Editing PDF metadata"
msgstr ""
#, php-format
msgid "%s Edit metadata"
msgstr ""
msgid "Add, edit, or remove metadata from a PDF"
msgstr ""
msgid "Test with a demo PDF"
msgstr ""
msgid "List of PDF metadata"
msgstr ""
msgid "Add new metadata"
msgstr ""
msgid "Key"
msgstr ""
msgid "Value"
msgstr ""
#, php-format
msgid "%s Add"
msgstr ""
msgid "Close this PDF and return to the home page"
msgstr ""
msgid "Edit metadata"
msgstr ""
msgid "Save and download the PDF"
msgstr ""
msgid "Download the PDF"
msgstr ""
msgid "Organize PDF"
msgstr ""
#, php-format
msgid "%s Organize PDF"
msgstr ""
msgid "Merge, sort, rotate, delete, extract pages"
msgstr ""
msgid "Touch a page to select it"
msgstr ""
msgid "Close this PDF and return to home"
msgstr ""
msgid "PDF organization"
msgstr ""
msgid "This PDF is stored on your computer to be signed by you only"
msgstr ""
#, php-format
msgid "%s Add a PDF"
msgstr ""
#, php-format
msgid "%s page(s) selected"
msgstr ""
#, php-format
msgid "%s Rotate 90°"
msgstr ""
#, php-format
msgid "%s Move"
msgstr ""
#, php-format
msgid "%s Delete"
msgstr ""
#, php-format
msgid "%s Extract and download"
msgstr ""
#, php-format
msgid "%s Cancel selection"
msgstr ""
#, php-format
msgid "%s Download the full PDF"
msgstr ""
msgid "No"
msgstr ""
msgid "page"
msgstr ""
msgid "Cancel"
msgstr ""
#, php-format
msgid "%s Turn"
msgstr ""
msgid "Download the selection"
msgstr ""
msgid "PDF documents"
msgstr ""
msgid "Select this page"
msgstr ""
msgid "Delete this page"
msgstr ""
msgid "Restore this page"
msgstr ""
msgid "Move this page"
msgstr ""
msgid "Move here"
msgstr ""
msgid "Turn this page"
msgstr ""
msgid "Download this page"
msgstr ""
msgid "Page"
msgstr ""
#, php-format
msgid "%s Sign a PDF"
msgstr ""
msgid "Sign, initial, stamp, complete a document"
msgstr ""
msgid "The PDF should not exceed"
msgstr ""
msgid "MB and"
msgstr ""
msgid "pages"
msgstr ""
msgid "How to sign?"
msgstr ""
msgid "By clicking directly on the document page"
msgstr ""
msgid "to insert the selected item in the right column"
msgstr ""
msgid "signature, initial, text, stamp, etc ..."
msgstr ""
msgid "Close this PDF and return to the homepage"
msgstr ""
msgid "PDF Signature"
msgstr ""
msgid "This PDF is shared with others to be signed by multiple people"
msgstr ""
msgid "Keep the selection active"
msgstr ""
#, php-format
msgid "%s Signature"
msgstr ""
msgid "Create"
msgstr ""
#, php-format
msgid "%s Initial"
msgstr ""
#, php-format
msgid "%s Stamp"
msgstr ""
#, php-format
msgid "%s Text"
msgstr ""
msgid "Strikethrough"
msgstr ""
#, php-format
msgid "%s Check box"
msgstr ""
#, php-format
msgid "%s Create an element"
msgstr ""
#, php-format
msgid "%s Share to sign %s with multiple people"
msgstr ""
msgid "Download the signed PDF"
msgstr ""
#, php-format
msgid "You are %s to have signed this PDF"
msgstr ""
#, php-format
msgid "%s Download the PDF"
msgstr ""
msgid "Transmit my signature"
msgstr ""
#, php-format
msgid "%s Select a signature"
msgstr ""
msgid "Draw"
msgstr ""
msgid "freehand"
msgstr ""
msgid "Enter"
msgstr ""
msgid "text"
msgstr ""
msgid "Import"
msgstr ""
msgid "an image"
msgstr ""
msgid "Clear signature"
msgstr ""
msgid "My signature"
msgstr ""
#, php-format
msgid "%s Share this PDF to sign it with several people"
msgstr ""
msgid ""
"By enabling PDF sharing, you will be able to provide a link to the people of "
"your choice so that they can sign this PDF."
msgstr ""
#, php-format
msgid ""
"%s This sharing requires the PDF to be transferred and stored on the server "
"for future signers to access."
msgstr ""
#, php-format
msgid "%s The PDF will be kept"
msgstr ""
msgid "for one year"
msgstr ""
msgid "for six months"
msgstr ""
msgid "for one month"
msgstr ""
msgid "for one week"
msgstr ""
msgid "for one day"
msgstr ""
msgid "for one hour"
msgstr ""
msgid "after the last signature."
msgstr ""
#, php-format
msgid "%s Start sharing"
msgstr ""
#, php-format
msgid "%s Sign this PDF with multiple people"
msgstr ""
msgid "Multiple people can sign this PDF simultaneously."
msgstr ""
msgid ""
"To do so, simply share the link to this page with the people of your choice:"
msgstr ""
msgid "Sharing link"
msgstr ""
msgid "Copied !"
msgstr ""
msgid "Copy"
msgstr ""
msgid ""
"Each of the signatories can download the latest version of the signed PDF at "
"any time."
msgstr ""
msgid "Close"
msgstr ""
msgid "Signed PDF"
msgstr ""
msgid "Your signature has been successfully recorded!"
msgstr ""
msgid "Text to modify"
msgstr ""
msgid "Language"
msgstr ""
msgid "Sign"
msgstr ""
msgid "Organize"
msgstr ""
msgid "Metadata"
msgstr ""

Binary file not shown.

View file

@ -0,0 +1,435 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-02-08 23:02+0100\n"
"PO-Revision-Date: 2024-02-07 02:01+0000\n"
"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
"Language-Team: German <https://hosted.weblate.org/projects/signature-pdf/"
"application/de/>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4-dev\n"
msgid "en"
msgstr "de"
msgid "Compress PDF"
msgstr "PDF komprimieren"
msgid "Site not functional without JavaScript enabled"
msgstr "Diese Website funktioniert nicht ohne aktiviertes JavaScript"
#, php-format
msgid "%s Compress a PDF"
msgstr "%s Ein PDF komprimieren"
msgid "Reduce the size of a PDF"
msgstr "Größe eines PDFs reduzieren"
msgid "Choose a PDF"
msgstr "Wähle eine PDF"
msgid "The PDF must not exceed "
msgstr "Das PDF darf nicht überschreiten "
msgid "Mb"
msgstr ""
msgid ""
"The PDF will be processed by the server without being retained or stored"
msgstr ""
"Die PDF-Datei wird vom Server verarbeitet, ohne dass sie aufbewahrt oder "
"gespeichert wird"
msgid "Your pdf is already optimized"
msgstr "Ihr PDF ist bereits optimiert"
msgid "Compress"
msgstr "Komprimieren"
msgid "Low compression (maximum quality)"
msgstr "Niedrige Komprimierung (maximale Qualität)"
#, php-format
msgid "%s Medium compression %s (default)"
msgstr "%s Mittlere Kompression %s (Standard)"
msgid "High compression (minimum quality)"
msgstr "Hohe Komprimierung (minimale Qualität)"
msgid "Free open-source software"
msgstr "Freie Open-Source-Software"
msgid "under AGPL-3.0 license"
msgstr "unter AGPL-3.0-Lizenz"
msgid "see the source code"
msgstr "siehe den Quellcode"
msgid "Editing PDF metadata"
msgstr "PDF-Metadaten bearbeiten"
#, php-format
msgid "%s Edit metadata"
msgstr "%s Metadaten bearbeiten"
msgid "Add, edit, or remove metadata from a PDF"
msgstr ""
"Hinzufügen, Bearbeiten oder Entfernen von Metadaten aus einer PDF-Datei"
msgid "Test with a demo PDF"
msgstr "Mit Demo-PDF testen"
msgid "List of PDF metadata"
msgstr "Liste der PDF-Metadaten"
msgid "Add new metadata"
msgstr "Neue Metadaten hinzufügen"
msgid "Key"
msgstr "Schlüssel"
msgid "Value"
msgstr "Wert"
#, php-format
msgid "%s Add"
msgstr "%s Hinzufügen"
msgid "Close this PDF and return to the home page"
msgstr ""
msgid "Edit metadata"
msgstr "Metadaten bearbeiten"
msgid "Save and download the PDF"
msgstr "PDF speichern und herunterladen"
msgid "Download the PDF"
msgstr "PDF herunterladen"
msgid "Organize PDF"
msgstr "PDF organisieren"
#, php-format
msgid "%s Organize PDF"
msgstr "%s PDF organisieren"
msgid "Merge, sort, rotate, delete, extract pages"
msgstr "Seiten zusammenführen, sortieren, drehen, löschen, extrahieren"
msgid "Touch a page to select it"
msgstr ""
msgid "Close this PDF and return to home"
msgstr ""
msgid "PDF organization"
msgstr ""
msgid "This PDF is stored on your computer to be signed by you only"
msgstr ""
"Diese PDF-Datei wird auf Ihrem Computer gespeichert und kann nur von Ihnen "
"unterzeichnet werden"
#, php-format
msgid "%s Add a PDF"
msgstr "%s PDF hinzufügen"
#, php-format
msgid "%s page(s) selected"
msgstr "%s Seite(n) ausgewählt"
#, php-format
msgid "%s Rotate 90°"
msgstr "%s Drehe um 90°"
#, php-format
msgid "%s Move"
msgstr "%s Verschieben"
#, php-format
msgid "%s Delete"
msgstr "%s Läschen"
#, php-format
msgid "%s Extract and download"
msgstr "%s Extrahieren und herunterladen"
#, php-format
msgid "%s Cancel selection"
msgstr "%s Auswahl aufheben"
#, php-format
msgid "%s Download the full PDF"
msgstr "%s Vollständiges PDF herunterladen"
msgid "No"
msgstr "Nein"
msgid "page"
msgstr "Seite"
msgid "Cancel"
msgstr "Abbrechen"
#, php-format
msgid "%s Turn"
msgstr "%s Drehen"
msgid "Download the selection"
msgstr "Auswahl herunterladen"
msgid "PDF documents"
msgstr "PDF-Dokumente"
msgid "Select this page"
msgstr "Diese Seite auswählen"
msgid "Delete this page"
msgstr "Diese Seite löschen"
msgid "Restore this page"
msgstr "Diese Seite wiederherstellen"
msgid "Move this page"
msgstr "Diese Seite verschieben"
msgid "Move here"
msgstr "Hierher verschieben"
msgid "Turn this page"
msgstr "Diese Seite drehen"
msgid "Download this page"
msgstr "Diese Seite herunterladen"
msgid "Page"
msgstr "Seite"
#, php-format
msgid "%s Sign a PDF"
msgstr "%s PDF signieren"
msgid "Sign, initial, stamp, complete a document"
msgstr ""
msgid "The PDF should not exceed"
msgstr ""
msgid "MB and"
msgstr "MB und"
msgid "pages"
msgstr "Seiten"
msgid "How to sign?"
msgstr ""
msgid "By clicking directly on the document page"
msgstr ""
msgid "to insert the selected item in the right column"
msgstr ""
msgid "signature, initial, text, stamp, etc ..."
msgstr ""
msgid "Close this PDF and return to the homepage"
msgstr ""
msgid "PDF Signature"
msgstr "PDF-Signatur"
msgid "This PDF is shared with others to be signed by multiple people"
msgstr ""
"Diese PDF-Datei wird an andere weitergegeben, damit sie von mehreren "
"Personen unterzeichnet werden kann"
msgid "Keep the selection active"
msgstr ""
#, php-format
msgid "%s Signature"
msgstr "%s Unterschrift"
msgid "Create"
msgstr "Erstellen"
#, php-format
msgid "%s Initial"
msgstr ""
#, php-format
msgid "%s Stamp"
msgstr ""
#, php-format
msgid "%s Text"
msgstr "%s Text"
msgid "Strikethrough"
msgstr ""
#, php-format
msgid "%s Check box"
msgstr ""
#, php-format
msgid "%s Create an element"
msgstr ""
#, php-format
msgid "%s Share to sign %s with multiple people"
msgstr ""
msgid "Download the signed PDF"
msgstr "Signierte PDF herunterladen"
#, php-format
msgid "You are %s to have signed this PDF"
msgstr ""
#, php-format
msgid "%s Download the PDF"
msgstr "%s PDF herunterladen"
msgid "Transmit my signature"
msgstr "Meine Unterschrift übermitteln"
#, php-format
msgid "%s Select a signature"
msgstr "%s Unterschrift auswählen"
msgid "Draw"
msgstr "Zeichnen"
msgid "freehand"
msgstr "freihand"
msgid "Enter"
msgstr ""
msgid "text"
msgstr ""
msgid "Import"
msgstr "Importieren"
msgid "an image"
msgstr "ein Bild"
msgid "Clear signature"
msgstr ""
msgid "My signature"
msgstr "Meine Unterschrift"
#, php-format
msgid "%s Share this PDF to sign it with several people"
msgstr ""
msgid ""
"By enabling PDF sharing, you will be able to provide a link to the people of "
"your choice so that they can sign this PDF."
msgstr ""
"Wenn Sie die PDF-Freigabe aktivieren, können Sie den Personen Ihrer Wahl "
"einen Link zur Verfügung stellen, damit diese die PDF-Datei unterschreiben "
"können."
#, php-format
msgid ""
"%s This sharing requires the PDF to be transferred and stored on the server "
"for future signers to access."
msgstr ""
#, php-format
msgid "%s The PDF will be kept"
msgstr ""
msgid "for one year"
msgstr "für ein Jahr"
msgid "for six months"
msgstr "für sechs Monate"
msgid "for one month"
msgstr "für einen Monat"
msgid "for one week"
msgstr "für eine Woche"
msgid "for one day"
msgstr "für einen Tag"
msgid "for one hour"
msgstr "für eine Stunde"
msgid "after the last signature."
msgstr ""
#, php-format
msgid "%s Start sharing"
msgstr ""
#, php-format
msgid "%s Sign this PDF with multiple people"
msgstr ""
msgid "Multiple people can sign this PDF simultaneously."
msgstr ""
msgid ""
"To do so, simply share the link to this page with the people of your choice:"
msgstr ""
"Geben Sie dazu einfach den Link zu dieser Seite an die Personen Ihrer Wahl "
"weiter:"
msgid "Sharing link"
msgstr ""
msgid "Copied !"
msgstr "Kopiert!"
msgid "Copy"
msgstr "Kopieren"
msgid ""
"Each of the signatories can download the latest version of the signed PDF at "
"any time."
msgstr ""
"Jeder der Unterzeichner kann jederzeit die neueste Version der "
"unterzeichneten PDF-Datei herunterladen."
msgid "Close"
msgstr "Schließen"
msgid "Signed PDF"
msgstr "PDF unterschrieben"
msgid "Your signature has been successfully recorded!"
msgstr ""
msgid "Text to modify"
msgstr ""
msgid "Language"
msgstr "Sprache"
msgid "Sign"
msgstr "Signieren"
msgid "Organize"
msgstr "Organisieren"
msgid "Metadata"
msgstr "Metadaten"

Binary file not shown.

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-24 17:21+0200\n"
"POT-Creation-Date: 2024-02-08 23:02+0100\n"
"PO-Revision-Date: 2023-09-30 12:59+0000\n"
"Last-Translator: ButterflyOfFire <boffire@users.noreply.hosted.weblate.org>\n"
"Language-Team: French <https://hosted.weblate.org/projects/signature-pdf/"
@ -69,7 +69,7 @@ msgid "Free open-source software"
msgstr "Logiciel libre"
msgid "under AGPL-3.0 license"
msgstr "sous license AGPL-3.0"
msgstr "sous licence AGPL-3.0"
msgid "see the source code"
msgstr "voir le code source"
@ -183,7 +183,6 @@ msgstr "Annuler"
msgid "%s Turn"
msgstr "%s Tourner"
#, php-format
msgid "Download the selection"
msgstr "Télécharger la sélection"
@ -197,7 +196,7 @@ msgid "Delete this page"
msgstr "Supprimer cette page"
msgid "Restore this page"
msgstr "Restorer cette page"
msgstr "Restaurer cette page"
msgid "Move this page"
msgstr "Déplacer cette page"
@ -273,6 +272,9 @@ msgstr "%s Tampon"
msgid "%s Text"
msgstr "%s Texte"
msgid "Strikethrough"
msgstr "Rayer"
#, php-format
msgid "%s Check box"
msgstr "%s Case à cocher"

Binary file not shown.

View file

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-24 17:35+0200\n"
"PO-Revision-Date: 2023-10-07 13:11+0000\n"
"POT-Creation-Date: 2024-02-08 23:02+0100\n"
"PO-Revision-Date: 2023-12-11 19:05+0000\n"
"Last-Translator: Paolo Mauri <paolo@paolomauri.it>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/signature-pdf/"
"application/it/>\n"
@ -17,13 +17,13 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.1-dev\n"
"X-Generator: Weblate 5.3-dev\n"
msgid "en"
msgstr "it"
msgid "Compress PDF"
msgstr "Comprimere un PDF"
msgstr "Comprimi un PDF"
msgid "Site not functional without JavaScript enabled"
msgstr "Il sito non funziona senza JavaScript abilitato"
@ -49,10 +49,10 @@ msgid ""
msgstr "Il PDF sarà processato dal server senza essere memorizzato o salvato"
msgid "Your pdf is already optimized"
msgstr ""
msgstr "Il tuo PDF è già ottimizzato"
msgid "Compress"
msgstr "Comprimere"
msgstr "Comprimi"
msgid "Low compression (maximum quality)"
msgstr "Bassa compressione (massima qualità)"
@ -74,11 +74,11 @@ msgid "see the source code"
msgstr "vedi il codice sorgente"
msgid "Editing PDF metadata"
msgstr "Modifica i metadata si un PDF"
msgstr "Modifica i metadata di un PDF"
#, php-format
msgid "%s Edit metadata"
msgstr "%s Modificare i metadata"
msgstr "%s Modifica i metadata"
msgid "Add, edit, or remove metadata from a PDF"
msgstr "Aggiungi, modifica o rimuovi i metadata da un PDF"
@ -181,7 +181,6 @@ msgstr "Annulla"
msgid "%s Turn"
msgstr "%s Ruotato"
#, php-format
msgid "Download the selection"
msgstr "Scarica la selezione"
@ -271,6 +270,9 @@ msgstr "%s Timbro"
msgid "%s Text"
msgstr "%s Testo"
msgid "Strikethrough"
msgstr ""
#, php-format
msgid "%s Check box"
msgstr "%s Check box"
@ -408,7 +410,7 @@ msgid "Signed PDF"
msgstr "PDF firmato"
msgid "Your signature has been successfully recorded!"
msgstr "La tua firma è stata correttamente salvata!"
msgstr "La tua firma è stata salvata correttamente!"
msgid "Text to modify"
msgstr "Testo da modificare"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-24 17:21+0200\n"
"POT-Creation-Date: 2024-02-08 23:02+0100\n"
"PO-Revision-Date: 2023-09-30 00:00+0000\n"
"Last-Translator: R_SACI <rgebbid@gmail.com>\n"
"Language-Team: Kabyle <https://hosted.weblate.org/projects/signature-pdf/"
@ -181,7 +181,6 @@ msgstr "Sefsex"
msgid "%s Turn"
msgstr "%s Dewweṛ"
#, php-format
msgid "Download the selection"
msgstr "Sader tafrant"
@ -273,6 +272,9 @@ msgstr "%s Iziwel"
msgid "%s Text"
msgstr "%s Aḍris"
msgid "Strikethrough"
msgstr ""
#, php-format
msgid "%s Check box"
msgstr "%s Tabewwaḍt n uṛcam"

View file

@ -0,0 +1 @@
application.mo

Binary file not shown.

View file

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-24 17:21+0200\n"
"PO-Revision-Date: 2023-09-30 00:00+0000\n"
"POT-Creation-Date: 2024-02-08 23:02+0100\n"
"PO-Revision-Date: 2023-11-10 03:35+0000\n"
"Last-Translator: Quentin PAGÈS <quentinantonin@free.fr>\n"
"Language-Team: Occitan <https://hosted.weblate.org/projects/signature-pdf/"
"application/oc/>\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.1-dev\n"
"X-Generator: Weblate 5.2-dev\n"
msgid "en"
msgstr "oc"
@ -49,7 +49,7 @@ msgid ""
msgstr "Lo servidor tractarà lo PDF sens lo servar o gardar"
msgid "Your pdf is already optimized"
msgstr ""
msgstr "Lo PDF es ja optimizat"
msgid "Compress"
msgstr "Compressar"
@ -181,7 +181,6 @@ msgstr "Anullar"
msgid "%s Turn"
msgstr "%s Virar"
#, php-format
msgid "Download the selection"
msgstr "Telecargar la seleccion"
@ -273,6 +272,9 @@ msgstr "%s Sagèl"
msgid "%s Text"
msgstr "%s Tèxt"
msgid "Strikethrough"
msgstr ""
#, php-format
msgid "%s Check box"
msgstr "%s Cassa de marcar"

View file

@ -0,0 +1 @@
application.mo

Binary file not shown.

View file

@ -0,0 +1,432 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-02-08 23:02+0100\n"
"PO-Revision-Date: 2024-01-02 19:08+0000\n"
"Last-Translator: Alexandru-Ionut Chiuta <chiuta@gmail.com>\n"
"Language-Team: Romanian <https://hosted.weblate.org/projects/signature-pdf/"
"application/ro/>\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
"20)) ? 1 : 2;\n"
"X-Generator: Weblate 5.4-dev\n"
msgid "en"
msgstr "ro"
msgid "Compress PDF"
msgstr "Comprimați un PDF"
msgid "Site not functional without JavaScript enabled"
msgstr "Site-ul nu funcționează fără JavaScript activat"
#, php-format
msgid "%s Compress a PDF"
msgstr "%s Comprimați un PDF"
msgid "Reduce the size of a PDF"
msgstr "Reduceți dimensiunea unui PDF"
msgid "Choose a PDF"
msgstr "Alegeți un PDF"
msgid "The PDF must not exceed "
msgstr "PDF-ul nu trebuie să depășească "
msgid "Mb"
msgstr "Mb"
msgid ""
"The PDF will be processed by the server without being retained or stored"
msgstr "PDF-ul va fi procesat de server fără a fi reținut sau stocat"
msgid "Your pdf is already optimized"
msgstr "PDF-ul dvs. este deja optimizat"
msgid "Compress"
msgstr "Comprimă"
msgid "Low compression (maximum quality)"
msgstr "Compresie scăzută (calitate maximă)"
#, php-format
msgid "%s Medium compression %s (default)"
msgstr "%s compresie medie %s (implicit)"
msgid "High compression (minimum quality)"
msgstr "Compresie ridicată (calitate minimă)"
msgid "Free open-source software"
msgstr "Software gratuit cu sursă deschisă"
msgid "under AGPL-3.0 license"
msgstr "sub licență AGPL-3.0"
msgid "see the source code"
msgstr "vezi codul sursă"
msgid "Editing PDF metadata"
msgstr "Editarea metadatelor PDF"
#, php-format
msgid "%s Edit metadata"
msgstr "%s Editați metadatele"
msgid "Add, edit, or remove metadata from a PDF"
msgstr "Adăugați, editați sau eliminați metadate dintr-un PDF"
msgid "Test with a demo PDF"
msgstr "Testați cu un PDF demonstrativ"
msgid "List of PDF metadata"
msgstr "Lista de metadate PDF"
msgid "Add new metadata"
msgstr "Adăugați metadate noi"
msgid "Key"
msgstr "Cheie"
msgid "Value"
msgstr "Valoare"
#, php-format
msgid "%s Add"
msgstr "%s Adăugați"
msgid "Close this PDF and return to the home page"
msgstr "Închideți acest PDF și reveniți la pagina de pornire"
msgid "Edit metadata"
msgstr "Editați metadatele"
msgid "Save and download the PDF"
msgstr "Salvați și descărcați PDF-ul"
msgid "Download the PDF"
msgstr "Descărcați PDF-ul"
msgid "Organize PDF"
msgstr "Organizați un PDF"
#, php-format
msgid "%s Organize PDF"
msgstr "%s Organizați PDF-uri"
msgid "Merge, sort, rotate, delete, extract pages"
msgstr "Îmbinați, sortați, rotiți, ștergeți, extrageți pagini"
msgid "Touch a page to select it"
msgstr "Atingeți o pagină pentru a o selecta"
msgid "Close this PDF and return to home"
msgstr "Închideți acest PDF și reveniți acasă"
msgid "PDF organization"
msgstr "Organizare PDF-uri"
msgid "This PDF is stored on your computer to be signed by you only"
msgstr "Acest PDF este stocat pe computer pentru a fi semnat numai de dvs"
#, php-format
msgid "%s Add a PDF"
msgstr "%s Adăugați un PDF"
#, php-format
msgid "%s page(s) selected"
msgstr "%s pagini selectate"
#, php-format
msgid "%s Rotate 90°"
msgstr "%s Rotire 90°"
#, php-format
msgid "%s Move"
msgstr "%s Mutare"
#, php-format
msgid "%s Delete"
msgstr "%s Ștergeți"
#, php-format
msgid "%s Extract and download"
msgstr "%s Extrageți și descărcați"
#, php-format
msgid "%s Cancel selection"
msgstr "%s Anulează selecția"
#, php-format
msgid "%s Download the full PDF"
msgstr "%s Descărcați PDF-ul complet"
msgid "No"
msgstr "Nu"
msgid "page"
msgstr "pagină"
msgid "Cancel"
msgstr "Anulare"
#, php-format
msgid "%s Turn"
msgstr "%s Întoarce"
msgid "Download the selection"
msgstr "Descărcați selecția"
msgid "PDF documents"
msgstr "Documente PDF"
msgid "Select this page"
msgstr "Selectați această pagină"
msgid "Delete this page"
msgstr "Ștergeți această pagină"
msgid "Restore this page"
msgstr "Restaurați această pagină"
msgid "Move this page"
msgstr "Mutați această pagină"
msgid "Move here"
msgstr "Mută aici"
msgid "Turn this page"
msgstr "Întoarce această pagină"
msgid "Download this page"
msgstr "Descărcați această pagină"
msgid "Page"
msgstr "Pagină"
#, php-format
msgid "%s Sign a PDF"
msgstr "%s Semnează un PDF"
msgid "Sign, initial, stamp, complete a document"
msgstr "Semnează, inițială, ștampilă, completează un document"
msgid "The PDF should not exceed"
msgstr "PDF-ul nu trebuie să depășească"
msgid "MB and"
msgstr "MB și"
msgid "pages"
msgstr "pagini"
msgid "How to sign?"
msgstr "Cum să semnez?"
msgid "By clicking directly on the document page"
msgstr "Făcând clic direct pe pagina documentului"
msgid "to insert the selected item in the right column"
msgstr "pentru a insera elementul selectat în coloana din dreapta"
msgid "signature, initial, text, stamp, etc ..."
msgstr "semnătură, inițiale, text, ștampilă etc..."
msgid "Close this PDF and return to the homepage"
msgstr "Închideți acest PDF și reveniți la pagina de pornire"
msgid "PDF Signature"
msgstr "Semnătura PDF-ului"
msgid "This PDF is shared with others to be signed by multiple people"
msgstr ""
"Acest PDF este partajat altor persoane pentru a fi semnat de mai multe "
"persoane"
msgid "Keep the selection active"
msgstr "Păstrați selecția activă"
#, php-format
msgid "%s Signature"
msgstr "Semnătura %s"
msgid "Create"
msgstr "Creare"
#, php-format
msgid "%s Initial"
msgstr "%s inițial"
#, php-format
msgid "%s Stamp"
msgstr "Ștampila %s"
#, php-format
msgid "%s Text"
msgstr "%s Text"
msgid "Strikethrough"
msgstr ""
#, php-format
msgid "%s Check box"
msgstr "Caseta de selectare %s"
#, php-format
msgid "%s Create an element"
msgstr "%s Creați un element"
#, php-format
msgid "%s Share to sign %s with multiple people"
msgstr "%s Distribuie pentru a semna %s cu mai multe persoane"
msgid "Download the signed PDF"
msgstr "Descărcați PDF-ul semnat"
#, php-format
msgid "You are %s to have signed this PDF"
msgstr "Sunteți %s care ați semnat acest PDF"
#, php-format
msgid "%s Download the PDF"
msgstr "%s Descărcați PDF-ul"
msgid "Transmit my signature"
msgstr "Transmite semnătura mea"
#, php-format
msgid "%s Select a signature"
msgstr "%s Selectați o semnătură"
msgid "Draw"
msgstr "Desenează"
msgid "freehand"
msgstr "mână liberă"
msgid "Enter"
msgstr "Confirmă"
msgid "text"
msgstr "text"
msgid "Import"
msgstr "Importă"
msgid "an image"
msgstr "o imagine"
msgid "Clear signature"
msgstr "Ștergeți semnătura"
msgid "My signature"
msgstr "Semnătura mea"
#, php-format
msgid "%s Share this PDF to sign it with several people"
msgstr "%s Partajați acest PDF pentru a-l semna cu mai multe persoane"
msgid ""
"By enabling PDF sharing, you will be able to provide a link to the people of "
"your choice so that they can sign this PDF."
msgstr ""
"Prin activarea partajării PDF, veți putea oferi un link către persoanele "
"alese de dvs., astfel încât acestea să poată semna acest PDF."
#, php-format
msgid ""
"%s This sharing requires the PDF to be transferred and stored on the server "
"for future signers to access."
msgstr ""
"%s Această partajare necesită ca PDF-ul să fie transferat și stocat pe "
"server pentru ca viitorii semnatari să îl acceseze."
#, php-format
msgid "%s The PDF will be kept"
msgstr "%s PDF-ul va fi păstrat"
msgid "for one year"
msgstr "pentru un an"
msgid "for six months"
msgstr "pentru șase luni"
msgid "for one month"
msgstr "pentru o lună"
msgid "for one week"
msgstr "pentru o saptămână"
msgid "for one day"
msgstr "pentru o zi"
msgid "for one hour"
msgstr "pentru o oră"
msgid "after the last signature."
msgstr "după ultima semnătură."
#, php-format
msgid "%s Start sharing"
msgstr "%s Începeți distribuirea"
#, php-format
msgid "%s Sign this PDF with multiple people"
msgstr "%s Semnează acest PDF cu mai multe persoane"
msgid "Multiple people can sign this PDF simultaneously."
msgstr "Mai multe persoane pot semna acest PDF simultan."
msgid ""
"To do so, simply share the link to this page with the people of your choice:"
msgstr ""
"Pentru a face acest lucru, pur și simplu partajați linkul către această "
"pagină persoanelor alese de dvs.:"
msgid "Sharing link"
msgstr "Link de partajare"
msgid "Copied !"
msgstr "Copiat!"
msgid "Copy"
msgstr "Copiază"
msgid ""
"Each of the signatories can download the latest version of the signed PDF at "
"any time."
msgstr ""
"Fiecare dintre semnatari poate descărca oricând cea mai recentă versiune a "
"PDF-ului semnat."
msgid "Close"
msgstr "Închide"
msgid "Signed PDF"
msgstr "PDF semnat"
msgid "Your signature has been successfully recorded!"
msgstr "Semnătura ta a fost înregistrată cu succes!"
msgid "Text to modify"
msgstr "Text de modificat"
msgid "Language"
msgstr "Limba"
msgid "Sign"
msgstr "Semnează"
msgid "Organize"
msgstr "Organizează"
msgid "Metadata"
msgstr "Metadate"

View file

@ -0,0 +1 @@
application.mo

Binary file not shown.

View file

@ -0,0 +1,433 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-02-08 23:02+0100\n"
"PO-Revision-Date: 2023-12-06 14:10+0000\n"
"Last-Translator: Metin Gür <gurmetin@gmail.com>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/signature-pdf/"
"application/tr/>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.3-dev\n"
msgid "en"
msgstr "tr"
msgid "Compress PDF"
msgstr "PDF Sıkıştır"
msgid "Site not functional without JavaScript enabled"
msgstr "JavaScript etkinleştirilmeden site çalışmıyor"
#, php-format
msgid "%s Compress a PDF"
msgstr "%s Sıkıştırıldı"
msgid "Reduce the size of a PDF"
msgstr "PDF'nin boyutunu küçültme"
msgid "Choose a PDF"
msgstr "Bir PDF Seç"
msgid "The PDF must not exceed "
msgstr "PDF, aşmamalıdır "
msgid "Mb"
msgstr "Mb"
msgid ""
"The PDF will be processed by the server without being retained or stored"
msgstr "PDF, saklanmadan veya depolanmadan sunucu tarafından işlenecektir"
msgid "Your pdf is already optimized"
msgstr "Pdf'iniz zaten optimize edilmiş"
msgid "Compress"
msgstr "Sıkıştır"
msgid "Low compression (maximum quality)"
msgstr "Düşük sıkıştırma (maksimum kalite)"
#, php-format
msgid "%s Medium compression %s (default)"
msgstr "%s Orta sıkıştırma %s (varsayılan)"
msgid "High compression (minimum quality)"
msgstr "Yüksek sıkıştırma (minimum kalite)"
msgid "Free open-source software"
msgstr "Ücretsiz açık kaynaklı yazılım"
msgid "under AGPL-3.0 license"
msgstr "AGPL-3.0 lisansı altında"
msgid "see the source code"
msgstr "kaynak koda bakın"
msgid "Editing PDF metadata"
msgstr "PDF meta verilerini düzenleme"
#, php-format
msgid "%s Edit metadata"
msgstr "%s Meta verileri düzenleme"
msgid "Add, edit, or remove metadata from a PDF"
msgstr "PDF'ye meta veri ekleme, düzenleme veya PDF'den meta veri kaldırma"
msgid "Test with a demo PDF"
msgstr "Demo PDF ile test edin"
msgid "List of PDF metadata"
msgstr "PDF meta verilerinin listesi"
msgid "Add new metadata"
msgstr "Yeni meta veri ekleyin"
msgid "Key"
msgstr "Anahtar"
msgid "Value"
msgstr "Değer"
#, php-format
msgid "%s Add"
msgstr "%s Ekle"
msgid "Close this PDF and return to the home page"
msgstr "Bu PDF'yi kapatın ve ana sayfaya dönün"
msgid "Edit metadata"
msgstr "Meta verileri düzenleme"
msgid "Save and download the PDF"
msgstr "PDF'i kaydedin ve indirin"
msgid "Download the PDF"
msgstr "PDF dosyasını indirin"
msgid "Organize PDF"
msgstr "PDF Düzenle"
#, php-format
msgid "%s Organize PDF"
msgstr "%s PDF Düzenle"
msgid "Merge, sort, rotate, delete, extract pages"
msgstr "Birleştirme, sıralama, döndürme, silme, sayfa çıkarma"
msgid "Touch a page to select it"
msgstr "Seçmek için bir sayfaya dokunun"
msgid "Close this PDF and return to home"
msgstr "Bu PDF'i kapat ve anasayfaya dön"
msgid "PDF organization"
msgstr "PDF organizasyonu"
msgid "This PDF is stored on your computer to be signed by you only"
msgstr ""
"Bu PDF, yalnızca sizin tarafınızda imzalanmak için bilgisayarınızda depolanır"
#, php-format
msgid "%s Add a PDF"
msgstr "%s PDF Ekle"
#, php-format
msgid "%s page(s) selected"
msgstr "%s sayfa seçildi"
#, php-format
msgid "%s Rotate 90°"
msgstr "%s 90° döndür"
#, php-format
msgid "%s Move"
msgstr "%s Taşı"
#, php-format
msgid "%s Delete"
msgstr "%s Sil"
#, php-format
msgid "%s Extract and download"
msgstr "%s Ayıklayın ve indirin"
#, php-format
msgid "%s Cancel selection"
msgstr "%s Seçimi iptal et"
#, php-format
msgid "%s Download the full PDF"
msgstr "%s PDF'in tamamını indirin"
msgid "No"
msgstr "Hayır"
msgid "page"
msgstr "sayfa"
msgid "Cancel"
msgstr "İptal"
#, php-format
msgid "%s Turn"
msgstr "%s Çevir"
msgid "Download the selection"
msgstr "Seçileni indirin"
msgid "PDF documents"
msgstr "PDF dökümanları"
msgid "Select this page"
msgstr "Bu sayfayı seç"
msgid "Delete this page"
msgstr "Bu sayfayı sil"
msgid "Restore this page"
msgstr "Bu sayfayı geri yükle"
msgid "Move this page"
msgstr "Bu sayfayı taşı"
msgid "Move here"
msgstr "Buraya taşı"
msgid "Turn this page"
msgstr "Bu sayfayı döndür"
msgid "Download this page"
msgstr "Bu sayfayı indir"
msgid "Page"
msgstr "Sayfa"
#, php-format
msgid "%s Sign a PDF"
msgstr "%s PDF imzala"
msgid "Sign, initial, stamp, complete a document"
msgstr "Belgeyi imzalamak, paraflamak, damgalamak, tamamlamak"
msgid "The PDF should not exceed"
msgstr "PDF aşmamalıdır"
msgid "MB and"
msgstr "MB ve"
msgid "pages"
msgstr "sayfalar"
msgid "How to sign?"
msgstr "Nasıl imzalanır?"
msgid "By clicking directly on the document page"
msgstr "Doğrudan belge sayfasına tıklayarak"
msgid "to insert the selected item in the right column"
msgstr "Seçilen öğeyi sağ sütuna eklemek için"
msgid "signature, initial, text, stamp, etc ..."
msgstr "imza, baş harf, metin, damga, vb."
msgid "Close this PDF and return to the homepage"
msgstr "Bu PDF'yi kapatın ve ana sayfaya dönün"
msgid "PDF Signature"
msgstr "PDF İmzala"
msgid "This PDF is shared with others to be signed by multiple people"
msgstr ""
"Bu PDF birden fazla kişi tarafından imzalanmak üzere başkalarıyla paylaşılır"
msgid "Keep the selection active"
msgstr "Seçimi etkin tutun"
#, php-format
msgid "%s Signature"
msgstr "%s İmza"
msgid "Create"
msgstr "Oluştur"
#, php-format
msgid "%s Initial"
msgstr "%s Paraf"
#, php-format
msgid "%s Stamp"
msgstr "%s Mühür"
#, php-format
msgid "%s Text"
msgstr "%s Yazı"
msgid "Strikethrough"
msgstr ""
#, php-format
msgid "%s Check box"
msgstr "%s Onay Kutusu Doldurma"
#, php-format
msgid "%s Create an element"
msgstr "%s Bir eleman oluştur"
#, php-format
msgid "%s Share to sign %s with multiple people"
msgstr "%s Birden fazla kişiyle %s imzalamak için paylaşın"
msgid "Download the signed PDF"
msgstr "İmzalı PDF'i indirin"
#, php-format
msgid "You are %s to have signed this PDF"
msgstr "%s PDF'inin imzaladınız"
#, php-format
msgid "%s Download the PDF"
msgstr "%s PDF indir"
msgid "Transmit my signature"
msgstr "İmzamı iletin"
#, php-format
msgid "%s Select a signature"
msgstr "%s Bir imza seçin"
msgid "Draw"
msgstr "Çiz"
#, fuzzy
msgid "freehand"
msgstr "serbest çizim"
msgid "Enter"
msgstr "Giriş"
msgid "text"
msgstr "metin"
msgid "Import"
msgstr "İçeri aktar"
msgid "an image"
msgstr "resim"
msgid "Clear signature"
msgstr "İmzayı sil"
msgid "My signature"
msgstr "İmzam"
#, php-format
msgid "%s Share this PDF to sign it with several people"
msgstr "%s Birkaç kişiyle imzalamak için bu PDF'yi paylaşın"
msgid ""
"By enabling PDF sharing, you will be able to provide a link to the people of "
"your choice so that they can sign this PDF."
msgstr ""
"PDF paylaşımını etkinleştirerek, seçtiğiniz kişilere bu PDF'yi "
"imzalayabilmeleri için bir bağlantı sağlayabileceksiniz."
#, php-format
msgid ""
"%s This sharing requires the PDF to be transferred and stored on the server "
"for future signers to access."
msgstr ""
"%s PDF paylaşımını etkinleştirerek, seçtiğiniz kişilere bu PDF'yi "
"imzalayabilmeleri için bir bağlantı sağlayabileceksiniz."
#, php-format
msgid "%s The PDF will be kept"
msgstr "%s PDF saklanacak"
msgid "for one year"
msgstr "bir yıl"
msgid "for six months"
msgstr "altı ay"
msgid "for one month"
msgstr "bir ay"
msgid "for one week"
msgstr "bir hafta"
msgid "for one day"
msgstr "bir gün"
msgid "for one hour"
msgstr "bir saat"
msgid "after the last signature."
msgstr "son imza işlemi yapılana kadar."
#, php-format
msgid "%s Start sharing"
msgstr "%s Paylaşmaya başla"
#, php-format
msgid "%s Sign this PDF with multiple people"
msgstr "%s Bu PDF'i birden fazla kişiyle imzalayın"
msgid "Multiple people can sign this PDF simultaneously."
msgstr "Bu PDF'i aynı anda birden fazla kişi imzalayabilir."
msgid ""
"To do so, simply share the link to this page with the people of your choice:"
msgstr ""
"Bunu yapmak için, bu sayfanın bağlantısını seçtiğiniz kişilerle paylaşmanız "
"yeterlidir:"
msgid "Sharing link"
msgstr "Paylaşım bağlantısı"
msgid "Copied !"
msgstr "Kopyalandı !"
msgid "Copy"
msgstr "Kopya"
msgid ""
"Each of the signatories can download the latest version of the signed PDF at "
"any time."
msgstr ""
"İmzacıların her biri, imzalanan PDF'nin en son sürümünü istediği zaman "
"indirebilir."
msgid "Close"
msgstr "Kapat"
msgid "Signed PDF"
msgstr "PDF imzala"
msgid "Your signature has been successfully recorded!"
msgstr "İmzanız başarıyla kaydedildi!"
msgid "Text to modify"
msgstr "Değiştirilecek metin"
msgid "Language"
msgstr "Dil"
msgid "Sign"
msgstr "İmzala"
msgid "Organize"
msgstr "Organize et"
#, fuzzy
msgid "Metadata"
msgstr "Metadata"

View file

@ -0,0 +1 @@
application.mo

View file

@ -35,6 +35,10 @@
z-index: 10000;
}
#modalFichier {
z-index: 10001;
}
#input-text-signature:dir(ltr) {
font-family: Caveat;
font-size: 48px;

View file

@ -205,16 +205,18 @@ var loadPDF = async function(pdfBlob, filename, pdfIndex) {
movePagesDragged(this.parentNode, 'right');
}
});
canvasContainer.querySelector('.btn-download').addEventListener('click', function(e) {
canvasContainer.querySelector('.btn-download').addEventListener('click', async function(e) {
e.stopPropagation();
startProcessingMode(canvasContainer.querySelector('.btn-download'));
let container = this.parentNode;
let pageValue = container.querySelector('.checkbox-page').value;
let orientation = degreesToOrientation(container.querySelector('.input-rotate').value);
let orientation = container.querySelector('.input-rotate').value;
if(orientation) {
pageValue = pageValue + "-" + orientation;
}
document.querySelector('#input_pages').value = pageValue;
document.querySelector('#form_pdf').submit();
await save(pageValue);
endProcessingMode(canvasContainer.querySelector('.btn-download'));
});
canvasContainer.querySelector('.btn-rotate').addEventListener('click', function(e) {
e.stopPropagation();
@ -304,11 +306,16 @@ var getFilesStats = function() {
return files;
}
const getLetter = function(i) {
return String.fromCharCode(96 + i+1).toUpperCase();
}
var updateListePDF = function() {
document.querySelector('#list_pdf').innerHTML = "";
let nbFiles = document.querySelector('#input_pdf').files.length;
for (var i = 0; i < nbFiles; i++) {
let pdfLetter = String.fromCharCode(96 + i+1).toUpperCase();
let pdfLetter = getLetter(i);
const pdfFile = document.querySelector('#input_pdf').files.item(i);
document.querySelector('#list_pdf').insertAdjacentHTML('beforeend', '<li id="file_' + pdfLetter + '" class="list-group-item small ps-2 pe-5" title="'+decodeURI(pdfFile.name)+'" style="text-overflow: ellipsis; white-space: nowrap; overflow: hidden;"><i class="bi bi-files"></i><span class="ms-2">'+decodeURI(pdfFile.name)+'</span> <input class="form-check-input float-end position-absolute file-list-checkbox" type="checkbox" /> </li>');
let fileItem = document.querySelector('#file_' + pdfLetter);
@ -537,22 +544,9 @@ var updateGlobalState = function() {
}
}
var degreesToOrientation = function(degrees) {
if(degrees == 90) { return "east"; }
if(degrees == 180) { return "south"; }
if(degrees == 270) { return "west"; }
return null;
}
var uploadAndLoadPDF = async function(input_upload) {
const cache = await caches.open('pdf');
for (let i = 0; i < input_upload.files.length; i++) {
if(input_upload.files[i].size > maxSize) {
alert("Le PDF ne doit pas dépasser " + Math.round(maxSize/1024/1024) + " Mo");
break;
}
let filename = input_upload.files[i].name;
let response = new Response(input_upload.files[i], { "status" : 200, "statusText" : "OK" });
let urlPdf = '/pdf/'+filename;
@ -563,46 +557,104 @@ var uploadAndLoadPDF = async function(input_upload) {
}
}
var createEventsListener = function() {
document.getElementById('save-select_mobile').addEventListener('click', function(event) {
document.getElementById('save-select').click();
});
document.getElementById('save-select').addEventListener('click', function(event) {
let buttonSave = document.getElementById('save');
let buttonSaveDisabledState = buttonSave.disabled;
if(buttonSave.disabled) {
buttonSave.disabled = false;
const DL = function (d,f) {
let a = document.createElement("a"),
u = URL.createObjectURL(d);
a.download = f,
a.href = u,
a.click(),
setTimeout(() => URL.revokeObjectURL(u))
}
let saveAll = async function () {
let order = [];
let selectionMode = isSelectionMode();
document.querySelectorAll('.canvas-container').forEach(function(canvasContainer) {
let checkbox = canvasContainer.querySelector('.checkbox-page');
if(selectionMode) {
checkbox = canvasContainer.querySelector('.input-select');
}
let inputRotate = canvasContainer.querySelector('.input-rotate');
let pageValue = "";
if(checkbox.checked) {
pageValue = checkbox.value;
}
let orientation = inputRotate.value;
if(pageValue && orientation) {
pageValue = pageValue + "-" + orientation;
}
if(pageValue) {
order.push(pageValue);
}
buttonSave.click();
buttonSave.disabled = true;
});
document.getElementById('save').addEventListener('click', function(event) {
let order = [];
let selectionMode = isSelectionMode();
document.querySelector('#input_pages').value = order.join(',');
document.querySelectorAll('.canvas-container').forEach(function(canvasContainer) {
let checkbox = canvasContainer.querySelector('.checkbox-page');
if(selectionMode) {
checkbox = canvasContainer.querySelector('.input-select');
}
let inputRotate = canvasContainer.querySelector('.input-rotate');
let pageValue = "";
if(checkbox.checked) {
pageValue = checkbox.value;
}
let orientation = degreesToOrientation(inputRotate.value);
if(pageValue && orientation) {
pageValue = pageValue + "-" + orientation;
}
if(pageValue) {
order.push(pageValue);
}
});
document.querySelector('#input_pages').value = order.join(',');
await save(order.join(','));
}
let save = async function (order) {
const PDFDocument = window['PDFLib'].PDFDocument
const Rotation = window['PDFLib'].Rotation
const pdf = await PDFDocument.create();
let filename = "";
let pages = [];
for (let i = 0; i < document.querySelector('#input_pdf').files.length; i++) {
if(filename) {
filename += '_';
}
filename += document.querySelector('#input_pdf').files.item(i).name.replace(/\.pdf$/, '');
pdfFile = await PDFDocument.load(await document.querySelector('#input_pdf').files.item(i).arrayBuffer());
const pdfPages = await pdf.copyPages(pdfFile, pdfFile.getPageIndices());
for(j in pdfPages) {
const numPage = parseInt(j) + 1;
pages[getLetter(i)+numPage.toString()] = pdfPages[j];
}
}
const pagesOrganize = order.split(',');
for(let i in pagesOrganize) {
const pageOrganize = pagesOrganize[i].split('-')[0];
const rotation = pagesOrganize[i].split('-')[1];
const pdfPage = pages[pageOrganize];
if(rotation) {
pdfPage.setRotation(window['PDFLib'].degrees(parseInt(rotation)));
}
pdf.addPage(pdfPage);
}
const newPDF = new Blob([await pdf.save()], {type: "application/pdf"});
await DL(newPDF, filename+".pdf");
}
var createEventsListener = function() {
document.getElementById('save-select_mobile').addEventListener('click', async function(event) {
event.preventDefault();
startProcessingMode(document.getElementById('save-select_mobile'));
await saveAll();
endProcessingMode(document.getElementById('save-select_mobile'));
});
document.getElementById('save_mobile').addEventListener('click', function(event) {
document.getElementById('save').click();
document.getElementById('save-select').addEventListener('click', async function(event) {
event.preventDefault();
startProcessingMode(document.getElementById('save-select'));
await saveAll();
endProcessingMode(document.getElementById('save-select'));
});
document.getElementById('save').addEventListener('click', async function(e) {
e.preventDefault();
startProcessingMode(document.getElementById('save'));
await saveAll();
endProcessingMode(document.getElementById('save'));
});
document.getElementById('save_mobile').addEventListener('click', async function(event) {
event.preventDefault();
startProcessingMode(document.getElementById('save_mobile'));
await saveAll();
endProcessingMode(document.getElementById('save_mobile'));
});
document.getElementById('input_pdf_upload_2').addEventListener('change', async function(event) {
await uploadAndLoadPDF(this);
@ -681,6 +733,18 @@ var createEventsListener = function() {
}
function startProcessingMode(btn) {
btn.disabled = true;
btn.querySelector('.bi').classList.add('position-relative');
btn.querySelector('.bi').insertAdjacentHTML('afterbegin', '<span class="spinner-grow spinner-grow-sm position-absolute top-50 start-50 translate-middle"></span>');
}
function endProcessingMode(btn) {
btn.querySelector('.spinner-grow').remove();
btn.querySelector('.bi').classList.remove('position-relative');
btn.disabled = false;
}
async function getPDFBlobFromCache(cacheUrl) {
const cache = await caches.open('pdf');
let responsePdf = await cache.match(cacheUrl);

View file

@ -129,6 +129,9 @@ var loadPDF = async function(pdfBlob, filename) {
input_selected.dispatchEvent(new Event("change"));
});
canvasEdition.on('object:scaling', function(event) {
if (event.target instanceof fabric.Line) {
return;
}
if(event.transform.action == "scaleX") {
event.target.scaleY = event.target.scaleX;
}
@ -269,7 +272,7 @@ var svgChange = function(input, event) {
let input_selected = document.querySelector('input[name="svg_2_add"]:checked');
if(input_selected && !input_selected.value.match(/^data:/) && input_selected.value != "text") {
if(input_selected && !input_selected.value.match(/^data:/) && input_selected.value != "text" && input_selected.value != "strikethrough") {
input_selected = null;
}
@ -549,6 +552,21 @@ var createAndAddSvgInCanvas = function(canvas, item, x, y, height = null) {
return;
}
if(item == 'strikethrough') {
let line = new fabric.Line([x, y, x + 250, y], {
fill: 'black',
stroke: 'black',
lockScalingFlip: true,
strokeWidth: 2,
padding: 10,
});
line.setControlsVisibility({ bl: false, br: false, mt: false, mb: false, tl: false, tr: false})
addObjectInCanvas(canvas, line).setActiveObject(line);
return;
}
fabric.loadSVGFromURL(item, function(objects, options) {
let svg = fabric.util.groupSVGElements(objects, options);
svg.svgOrigin = item;

View file

@ -25,10 +25,10 @@
<p class="fw-light mb-3 subtitle text-dark text-nowrap" style="overflow: hidden; text-overflow: ellipsis;"><?php echo _("Merge, sort, rotate, delete, extract pages"); ?></p>
<div class="col-md-6 col-lg-5 col-xl-4 col-xxl-3 mx-auto">
<div class="col-12">
<label class="form-label mt-3" for="input_pdf_upload"><?php echo _("Choose a PDF"); ?> <small class="opacity-75" style="cursor: help" title="<?php echo _("The PDF must not exceed "); ?> <?php echo round($maxSize / 1024 / 1024) ?> <?php echo _("Mb"); ?>"><i class="bi bi-info-circle"></i></small></label>
<label class="form-label mt-3" for="input_pdf_upload"><?php echo _("Choose a PDF"); ?></label>
<input id="input_pdf_upload" placeholder="<?php echo _("Choose a PDF"); ?>" class="form-control form-control-lg" type="file" accept=".pdf,application/pdf" multiple="true" />
<p class="mt-2 small fw-light text-dark"><?php echo _("The PDF will be processed by the server without being retained or stored"); ?></p>
<?php if($PDF_DEMO_LINK): ?>
<p class="mt-2 small fw-light text-dark">&nbsp;</p>
<a class="btn btn-sm btn-link opacity-75" href="#<?php echo $PDF_DEMO_LINK ?>"><?php echo _("Test with a demo PDF"); ?></a>
<?php endif; ?>
</div>
@ -91,7 +91,7 @@
<div id="top_bar" class="position-fixed top-0 start-0 bg-white w-100 shadow-sm d-md-none p-2">
<div id="top_bar_action">
<div class="d-flex" role="group">
<button id="btn_liste_pdf" type="button" data-bs-toggle="modal" data-bs-target="#modalFichier" class="btn btn-dark flex-grow-1 me-2" style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
<button id="btn_liste_pdf" type="button" data-bs-toggle="modal" data-bs-target="#modalFichier" class="btn btn-outline-dark flex-grow-1 me-2" style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
<i class="bi bi-files"></i> <span id="liste_pdf_titre_mobile"></span>
</button>
<button type="button" class="btn btn-outline-dark position-relative" style="padding-left: 30px;" onclick="document.getElementById('input_pdf_upload_2').click(); this.blur();"><?php echo sprintf(_("%s Add a PDF"), '<i class="bi bi-plus-circle position-absolute" style="left: 10px;"></i>'); ?></button>
@ -111,7 +111,7 @@
<button class="btn btn-primary" type="submit" id="save_mobile"><?php echo sprintf(_("%s Download the full PDF"), '<i class="bi bi-download"></i>'); ?></button>
</div>
<div id="bottom_bar_action_selection" class="d-grid gap-2 d-none">
<button id="save-select_mobile" class="btn btn-outline-primary" type="submit" form="form_pdf"><?php echo sprintf(_("Download the selection"), '<i class="bi bi-download"></i>'); ?></button>
<button id="save-select_mobile" class="btn btn-outline-primary" type="submit" form="form_pdf"><i class="bi bi-download"></i> <?php echo _("Download the selection"); ?></button>
</div>
</div>
</div>
@ -133,7 +133,6 @@
<script src="<?php echo $REVERSE_PROXY_URL; ?>/vendor/bootstrap.bundle.min.js?5.1.3"></script>
<script src="<?php echo $REVERSE_PROXY_URL; ?>/vendor/pdf.js?legacy"></script>
<script>
var maxSize = <?php echo $maxSize ?>;
var trad = <?php echo json_encode([
'Select this page' => _('Select this page'),
'Delete this page' => _('Delete this page'),
@ -146,5 +145,6 @@
]); ?>;
</script>
<script src="<?php echo $REVERSE_PROXY_URL; ?>/js/organization.js?<?php echo ($COMMIT) ? $COMMIT : filemtime($ROOT."/public/js/organization.js") ?>"></script>
<script src="<?php echo $REVERSE_PROXY_URL; ?>/vendor/pdf-lib.min.js?1.17.1"></script>
</body>
</html>

View file

@ -82,6 +82,10 @@
<input type="radio" class="btn-check" id="radio_svg_text" data-svg="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktdGV4dGFyZWEtdCIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBkPSJNMS41IDIuNUExLjUgMS41IDAgMCAxIDMgMWgxMGExLjUgMS41IDAgMCAxIDEuNSAxLjV2My41NjNhMiAyIDAgMCAxIDAgMy44NzRWMTMuNUExLjUgMS41IDAgMCAxIDEzIDE1SDNhMS41IDEuNSAwIDAgMS0xLjUtMS41VjkuOTM3YTIgMiAwIDAgMSAwLTMuODc0VjIuNXptMSAzLjU2M2EyIDIgMCAwIDEgMCAzLjg3NFYxMy41YS41LjUgMCAwIDAgLjUuNWgxMGEuNS41IDAgMCAwIC41LS41VjkuOTM3YTIgMiAwIDAgMSAwLTMuODc0VjIuNUEuNS41IDAgMCAwIDEzIDJIM2EuNS41IDAgMCAwLS41LjV2My41NjN6TTIgN2ExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6bTEyIDBhMSAxIDAgMSAwIDAgMiAxIDEgMCAwIDAgMC0yeiIvPjxwYXRoIGQ9Ik0xMS40MzQgNEg0LjU2Nkw0LjUgNS45OTRoLjM4NmMuMjEtMS4yNTIuNjEyLTEuNDQ2IDIuMTczLTEuNDk1bC4zNDMtLjAxMXY2LjM0M2MwIC41MzctLjExNi42NjUtMS4wNDkuNzQ4VjEyaDMuMjk0di0uNDIxYy0uOTM4LS4wODMtMS4wNTQtLjIxLTEuMDU0LS43NDhWNC40ODhsLjM0OC4wMWMxLjU2LjA1IDEuOTYzLjI0NCAyLjE3MyAxLjQ5NmguMzg2TDExLjQzNCA0eiIvPjwvc3ZnPgo=" name="svg_2_add" autocomplete="off" value="text">
<label draggable="true" id="label_svg_text" class="btn btn-outline-secondary text-black text-start btn-svg" for="radio_svg_text"><?php echo sprintf(_("%s Text"), '<i class="bi bi-textarea-t"></i>'); ?></label>
</div>
<div class="d-grid gap-2 mb-2 list-item-add">
<input type="radio" class="btn-check" id="radio_svg_strikethrough" data-svg="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktdHlwZS1zdHJpa2V0aHJvdWdoIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGQ9Ik02LjMzMyA1LjY4NmMwIC4zMS4wODMuNTgxLjI3LjgxNEg1LjE2NmEyLjggMi44IDAgMCAxLS4wOTktLjc2YzAtMS42MjcgMS40MzYtMi43NjggMy40OC0yLjc2OCAxLjk2OSAwIDMuMzkgMS4xNzUgMy40NDUgMi44NWgtMS4yM2MtLjExLTEuMDgtLjk2NC0xLjc0My0yLjI1LTEuNzQzLTEuMjMgMC0yLjE4LjYwMi0yLjE4IDEuNjA3em0yLjE5NCA3LjQ3OGMtMi4xNTMgMC0zLjU4OS0xLjEwNy0zLjcwNS0yLjgxaDEuMjNjLjE0NCAxLjA2IDEuMTI5IDEuNzAzIDIuNTQ0IDEuNzAzIDEuMzQgMCAyLjMxLS43MDUgMi4zMS0xLjY3NSAwLS44MjctLjU0Ny0xLjM3NC0xLjkxNC0xLjY3NUw4LjA0NiA4LjVIMXYtMWgxNHYxaC0zLjUwNGMuNDY4LjQzNy42NzUuOTk0LjY3NSAxLjY5NyAwIDEuODI2LTEuNDM2IDIuOTY3LTMuNjQ0IDIuOTY3Ij48L3BhdGg+Cjwvc3ZnPgo=" name="svg_2_add" autocomplete="off" value="strikethrough">
<label draggable="true" id="label_svg_strikethrough" class="btn btn-outline-secondary text-black text-start btn-svg" for="radio_svg_strikethrough"><i class="bi bi-type-strikethrough"></i> <?php echo _("Strikethrough"); ?></label>
</div>
<div class="d-grid gap-2 mb-2 list-item-add">
<input type="radio" class="btn-check" id="radio_svg_check" data-height="18" name="svg_2_add" autocomplete="off" value="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktY2hlY2stbGciIHZpZXdCb3g9IjAgMCAxNiAxNiI+CiAgPHBhdGggZD0iTTEyLjczNiAzLjk3YS43MzMuNzMzIDAgMCAxIDEuMDQ3IDBjLjI4Ni4yODkuMjkuNzU2LjAxIDEuMDVMNy44OCAxMi4wMWEuNzMzLjczMyAwIDAgMS0xLjA2NS4wMkwzLjIxNyA4LjM4NGEuNzU3Ljc1NyAwIDAgMSAwLTEuMDYuNzMzLjczMyAwIDAgMSAxLjA0NyAwbDMuMDUyIDMuMDkzIDUuNC02LjQyNWEuMjQ3LjI0NyAwIDAgMSAuMDItLjAyMloiLz4KPC9zdmc+Cg==">
<label draggable="true" id="label_svg_check" class="btn btn-outline-secondary text-black text-start btn-svg" for="radio_svg_check"><?php echo sprintf(_("%s Check box"), '<i class="bi bi-check-square"></i>'); ?></label>