Facture PDF/A

Bonjour,
Un de mes client me demande dorénavant de lui envoyer mes factures au format PDF/A (Signée numériquement).
Cette fonction est elle présente dans Dolibarr ? J’ai vu dans « Info PHP » que ca parle de PDFA mais sans bien comprendre de quoi il s’agit. :confused:

Quelqu’un aurait il des info à ce sujet ?
Et pour info, je suis sous linux et j’ai du mal à trouver un logiciel qui puisse me signer mes PDF (ca ne marche pas avec openfoffice).

Merci d’avance.

Bonjour
Il est possible des faire des pseudos pdfa avec un petit corechange. Pour la signature il va falloir utiliser un outil externe genre dolesign je pense. Il vous faudra un certificat de signature aussi.
@+

1 « J'aime »

Bonjour,

Merci pour votre réponse, mais qu’est ce qu’est un corechange ? :unsure: (toujours utile de savoir :happy: )

Du coup, pour le PDF/A je me répond à moi même, si ca peut aider…
Dans Configuration / Divers il faut ajouter la variable PDF_USE_1A et lui donner la valeur « 1 » (0 pour désactiver). Et magie, les PDF sont générés en PDF/A.

J’ai trouvé ca en fouillant dans htdocs/core/pdf.lib.php

Reste le sujet de la signature numérique… :dry:

2 « J'aime »

Salut mdallosto,


bien vu pour la variable cachée :happy: Je l’ajoute au wiki.


pour la signature, il te faut:

- un certificat valide
émis par un tiers de confiance reconnu (c’est payant)
Les miens sont émis par Certeurope par exemple, mais il y en à d’autres

- un logiciel qui permet d’apposer la signature sur le document (et potentiellement l’accès à un serveur d’horodatage)
-> PDF-X-Change ou la dernière version de Adobe Reader DC le permettent.

OU

- ce module :
https://www.dolistore.com/fr/modules/930-DoliEsign-Signature---lectronique.html?search_query=signature&results=10
Jamais testé ce module personnellement, mais il s’appuie sur des plateformes par les quels transitent tes PDF et reviennent signés.
Ces services payants fonctionnent au nombre de signatures.

OK merci.

Je regardes pour le module.

@mdallosto
En regardant le code, juste en dessous d’où tu as trouvé PDF_USE_1A :
il y a d’autres options susceptibles de t’intéresse, j’ai commencé à les documenter sur le wiki :
https://wiki.dolibarr.org/index.php/Setup_Other#PDF_Options
-> à la fin : PDF_SECURITY_ENCRYPTION

Apparemment on peut intégrer un certificat à la volée.
Sauf que je ne vois pas comment ça peut être valide …
A tester :happy:

J’ai rien dit :
ça permet d’inclure les certificats des DESTINATAIRES en précisant leur niveau de droits sur le PDF.

Rien à voir avec une signature.

:blush: Mince je ne connaissait pas la constante ! Merci @mdallosto

En parlant de PDF il serait intéressant de mettre à jour la bibliothèque TCPF car il y a eu des fix non négligeables :
6.2.22
- Fix for security vulnerability: Using the phar:// wrapper it was possible to trigger the unserialization of user provided data.

6.2.19
- Merge various fixes for PHP 7.3 compatibility and security.

Dolibarr utilise la 6.2.17 si je ne me trompe pas.
Perso j’ai la version 6.3.2 sur Dolibarr 9.0.5 et aucun souci !
@+

oui une mise à jour de la bibliothèque serait pertinente, sans parler quelle apporte mon correctif pour générer du pdf/A-3 pour le format factur-X
Je n’ai pas travaillé sur la partie signature mais c’est le genre de chose a creuser histoire d’avoir la gestion complète du basard… il est probable que ce format dématérialisée se généralise

Bonjour,

Pour en remettre une couche : c’est devenu obligatoire depuis octobre pour les entreprises françaises. :ohmy: :woohoo:

Cordialement,
Sylvain Legrand.

Salut Sylvain,
c’est quoi ta source pour cette info ?

Alors… :happy:

J’ai creusé coté signature… Pour ceux que ça intéresse, j’ai trouvé ce logiciel => MyPDFSigner chez kryptokoder.com qui signe les PDF/A. Pour ma part, mon client ne me demande pas d’autorité de certification mais juste que la facture soit signée par un certificat auto généré.
Il y a une licence à moins de 15€ ce qui est plus qu’acceptable et c’est installable sur Win/Mac/Linux .

Coté Dolibarr, je penses qu’effectivement, c’est un sujet, car ça va vite devenir une exigence des grandes sociétés pour ceux qui, comme moi, envoient leurs factures par mail. Malheureusement je n’y connais pas grand choses dans ce domaine et c’est très mal documenté. :unhappy:

Bonjour
A partir de 2020 les entreprises ont l’obligation d’accepter les factures électroniques. Par contre pour éviter les tricheries celles-ci doivent être signées et à minima conservées dans un format non modifiable (par ex pdfa)
La signature reste optionnelle sur ce que j’ai lu mais me paraît essentielle.
Rien en octobre a ce sujet pour moi.
@+

Bonjour à tous,

Me revoila avec de bonne nouvelles :woohoo:

J’ai trouvé dans la doc TCPDF qu’il etait relativement simple de signer un PDF. Cela inclut de modifier le fichier pdf.lib.php… Si des vrais développeurs veulent s’y coller… :happy: (Je n’ai pas les compétences suffisante en php… :dry: )

Donc voila ce que j’ai fais:
- J’ai créé un dossier « certificat » sous htdocs
- J’y ai placé mon certificat fraîchement auto-généré avec openssl (tcpdf.crt)

openssl req -x509 -nodes -days 365000 -newkey rsa:2048 -keyout tcpdf.crt -out tcpdf.crt
openssl pkcs12 -export -in tcpdf.crt -out tcpdf.p12

- Ensuite, modification de htdocs/lib/pdf.lib.php juste après la déclaration de la fonction « pdfGetHeightForHtmlContent » à la ligne 280 :

function pdfGetHeightForHtmlContent(&$pdf, $htmlcontent)
{
    // **************************************
    //TEST SIGNTURE NUMERIQUE

    // set certificate file
    $certificate = 'file://../../certificat/tcpdf.crt';
    // set additional information
    $info = array('Name' => "DOLIBARR", 'Location' => 'FRANCE', 'Reason' => 'INVOICE', 'ContactInfo' => '[email protected]');
    // set document signature
    $pdf->setSignature($certificate, $certificate, 'Dolibarr', '', 2, $info);
    //***************************************

Voila… Couplé à la variable PDF_USE_1A cela nous sort des beaux PDF/A signés :woohoo:

Capturedu2019-11-0721-28-40.png

2 « J'aime »

Ou la attention à la sécurité htdocs est accessible au public en général (je ne connais pas votre configuration), si quelqu’un choppe la clef privée il pourra signer numériquement en votre « nom » …

Bonjour

Petite précision sur les signatures, ici vous parlez de signer numériquement vos PDF en vue de les rendre infalsifiables. Avec doliesign, vous pouvez faire signer à vos clients les pdf de devis, contrats etc (par l’intermédiaire de Universign ou Yousign)

Fred

Bonjour

L’option PDF_USE_1A fait augmenter la taille du pdf au passage…

Fred

+1 @lox
On ne met rien de confidentiel dans le htdocs. Préférez le dossier documents/mycompany/certificates plus adapté.
Le chemin pourrait devenir $certificate=DOL_DATA_ROOT."/mycompany/certificates/tcpdf.cert";
@+

Je regarde pour adapter la facture de myPrint en ce sens cet après-midi, plus d’info à venir

C’est une modification incluse dans Rubis V9 (en préparation) mais je partage mon code. Je ne touche pas au core.
Dans mon modèle de facture vers la ligne 350

[code]
$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref));
$pdf->SetSubject($outputlangs->transnoentities(« PdfInvoiceTitle »));
$pdf->SetCreator("Dolibarr « .DOL_VERSION);
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref). » « .$outputlangs->transnoentities(« PdfInvoiceTitle »). » ".$outputlangs->convToOutputCharset($object->thirdparty->name));

			// Add by Philazerty for eletronic signature
			// Update : 27/08/2019
			$cert=DOL_DATA_ROOT."/mycompany/certificates/signature.crt";
			if (file_exists($cert)){
				$info = array('Name' => "A3SYS SARL", 'Location' => 'FRANCE', 'Reason' => 'FACTURE', 'ContactInfo' => '[email protected]');
				$pdf->setSignature($cert, $cert, 'A3SYS', '', 2, $info);
			}[/code]

A vos risques et périls…
@+

1 « J'aime »