- Créé par Bertrand Littel, dernière modification le 28/03/2023
Vous regardez une version antérieure (v. /wiki/spaces/PAI/pages/10796367999/Module+Diva+yMetaDataOpen+et+yFacturx) de cette page.
afficher les différences afficher l'historique de la page
« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 2) afficher la version suivante »
Deux modules Diva sont à utiliser pour lire ou écrire des informations Factur-X
yMetaDataOpen.dhop
Fonctions du module
function int MetaDataOpen
chargement de la dll "DhDivaltoRTFtoHTMLConnector.dll",
contient le code pour extraire le fichier xml factur-x d'un fichier pdf
renvoi 0 si ok , sinon renvoi la valeur 1 si le chargement n'a pas aboutit
function int MetaDataClose
ferme la dll "DhDivaltoRTFtoHTMLConnector.dll", elle renvoi toujours 0
function int MetaDataExtractFacturxToFile(fichier,fichierxml,&txterr,options)
1 fichier A ;fichier pdf a lire avec un chemin windows
1 fichierxml A ;fichier dans lequel la dll va écrire le fichier xmnp qui contient les metadatas au format xml du fichier pdf
1 txterr A ;texte d'erreur si la fonction renvoi <> 0
1 options A ;options pour le futur, pour l'instant mettre un chaine à espace
extraction du fichier xml facturx d'un fichier pdf
fichierxml : ! doit déjà exister, et à supprimer ensuite
Le fichierxml doit déjà exister. On peut le créer avec la séquence suivante
record * htdf tdfficeml 1 fichierxml 256 = " " Tmpfcreate (tdfficeml, 2, 0) fclose(tdfficeml) fichierxml = tdfficeml.Name
puis le supprimer
;et a la fin du traitement du fichier il faut le supprimer avec le code windeletefile(left(fichierxml))
function int MetaDataExtractMetadataToFile(fichier,fichierxml,&txterr,options)
1 fichier A
1 fichierxml A
1 txterr A
1 options A
extraction du fichier metadata xmp (xmnp) d'un fichier pdf
fonctionne exactement comme MetaDataExtractFacturxToFile mais au lieu de renvoyer le fichier factur-x, elle renvoi le fichier metadata xmp (ou xmnp)
Fichier xmp ou xmnp
C'est un fichier xml qui decrit le type de fichier pdf , il contient le titre du fichier, la date de création et certaine informations comme le mode pdf a 3, la liste des mot clés, c'est dans ce fichier que divalto écrit les informations provenant de
err = MetaDataModele("BASIC") ;par défaut BASIC
err = MetaDataTitle("facture_Nebout_125e_du_12/08/2021") ;titre
err = MetaDataSubject("facture client Nebout de 125 euro pour livres du 12/08/2021") ;le sujet
err = MetaDataKeywords("facture Nebout livres") ;mot cles pour la recherche dans les metadatas
et les caractéristiques du fichier pdf
Vous pouvez trouver la définition d'un fichier "xmp metadata pdf" sur internet
Voici un exemple :
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta x:xmptk="Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-20:48:00" xmlns:x="adobe:ns:meta/"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description xmlns:fx="urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#" rdf:about=""> <fx:DocumentType>INVOICE</fx:DocumentType> <fx:DocumentFileName>factur-x.xml</fx:DocumentFileName> <fx:Version>1.0</fx:Version> <fx:ConformanceLevel>BASIC</fx:ConformanceLevel> </rdf:Description> <rdf:Description xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/" rdf:about=""> <pdfaid:part>3</pdfaid:part> <pdfaid:conformance>B</pdfaid:conformance> </rdf:Description> <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/" rdf:about=""> <dc:title> <rdf:Alt> <rdf:li xml:lang="x-default">facture_Nebout_125e_du_12/08/2021</rdf:li> </rdf:Alt> </dc:title> <dc:creator> <rdf:Seq> <rdf:li>Divalto</rdf:li> </rdf:Seq> </dc:creator> <dc:description> <rdf:Alt> <rdf:li xml:lang="x-default">facture client Nebout de 125 euro pour livres du 12/08/2021</rdf:li> </rdf:Alt> </dc:description> </rdf:Description> <rdf:Description xmlns:pdf="http://ns.adobe.com/pdf/1.3/" rdf:about=""> <pdf:Producer>Generateur PDF de DivaltoViewer v1.92</pdf:Producer> <pdf:Keywords>facture Nebout livres</pdf:Keywords> </rdf:Description> <rdf:Description xmlns:xmp="http://ns.adobe.com/xap/1.0/" rdf:about=""> <xmp:MetadataDate>2022-11-26T12:44:17+01:00</xmp:MetadataDate> <xmp:CreatorTool>Divalto</xmp:CreatorTool> <xmp:CreateDate>2022-11-26T12:44:17+01:00</xmp:CreateDate> <xmp:ModifyDate>2022-11-26T12:44:17+01:00</xmp:ModifyDate> </rdf:Description> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"> <xmpMM:InstanceID>uuid: 07e60b0c-2c11-31ab-07e6-0b0c2c1131ab</xmpMM:InstanceID> <xmpMM:DocumentID>uuid: 07e60b0c-2c11-31ab-07e6-0b0c2c1131ab</xmpMM:DocumentID> </rdf:Description> <rdf:Description xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/" xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#" xmlns:pdfaType="http://www.aiim.org/pdfa/ns/type#" xmlns:pdfaField="http://www.aiim.org/pdfa/ns/field#" xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#" rdf:about=""> <pdfaExtension:schemas> <rdf:Bag> <rdf:li rdf:parseType="Resource"> <pdfaSchema:schema>Factur-X PDFA Extension Schema</pdfaSchema:schema> <pdfaSchema:namespaceURI>urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#</pdfaSchema:namespaceURI> <pdfaSchema:prefix>fx</pdfaSchema:prefix> <pdfaSchema:property> <rdf:Seq> <rdf:li rdf:parseType="Resource"> <pdfaProperty:name>DocumentFileName</pdfaProperty:name> <pdfaProperty:valueType>Text</pdfaProperty:valueType> <pdfaProperty:category>external</pdfaProperty:category> <pdfaProperty:description>name of the embedded XML invoice file</pdfaProperty:description> </rdf:li> <rdf:li rdf:parseType="Resource"> <pdfaProperty:name>DocumentType</pdfaProperty:name> <pdfaProperty:valueType>Text</pdfaProperty:valueType> <pdfaProperty:category>external</pdfaProperty:category> <pdfaProperty:description>INVOICE</pdfaProperty:description> </rdf:li> <rdf:li rdf:parseType="Resource"> <pdfaProperty:name>Version</pdfaProperty:name> <pdfaProperty:valueType>Text</pdfaProperty:valueType> <pdfaProperty:category>external</pdfaProperty:category> <pdfaProperty:description>The actual version of the Factur-X XML schema</pdfaProperty:description> </rdf:li> <rdf:li rdf:parseType="Resource"> <pdfaProperty:name>ConformanceLevel</pdfaProperty:name> <pdfaProperty:valueType>Text</pdfaProperty:valueType> <pdfaProperty:category>external</pdfaProperty:category> <pdfaProperty:description>The conformance level of the embedded Factur-X data</pdfaProperty:description> </rdf:li> </rdf:Seq> </pdfaSchema:property> </rdf:li> </rdf:Bag> </pdfaExtension:schemas> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="w"?>
Fournir un autre modèle xmp
Hharmony a un modèle de base d'un fichier xmp mais on peut lui fournir un autre modèle s'il faut au moment de la génération du fichier dhvw avec la commande
err = MetaDataFileMetaData( "chemin et fichier xml au format windows a prendre comme modèle xmp")
ou alors de façon globale a toute les impressions en mettant dans regedit
Ordinateur\HKEY_CURRENT_USER\SOFTWARE\Divalto\divalto.ini
chapitre PDF mot cle "metadataXMNPFile" ;il faut mettre le chemin et le nom du fichier a lire
on peut saisir ce paramètre dans divaltoViewer -> menu Options => Paramètres => Convertion PDF
=> bouton Mode PDFA => Prendre le fichier XMNP par défaut sinon prendre ce fichier XMNP
le fichier sera intégré au fichier dhwv et c'est lui qui servira de modèle xmp lors de la conversion du dhvw en pdf
il faut mettre des mots clés que divaltoviewer modifira aves les valeurs title,key words etc au momment de la génération du pdf
voila le code xmp que harmony prend par defaut
les mots clés
%%metadatasubject%% sera remplacé par la valeur de la fonction MetaDataSubject
%%metadataTitle%% sera remplacé par la valeur de la fonction MetaDataTitle
%%metadataProducer%% actuellement toujours le texte "Generateur PDF de DivaltoViewer v1.92"
%%metadataCreator%% "Divalto"
%%metadataKeywords%% sera remplacé par la valeur de la fonction MetaDataKeywords
%%metadataCreationDate%% sera remplacé par la valeur de la date en cours
%%metadataDocumentFileName%% sera remplacé par la valeur factur-x.xml ou xrechnung.xml
( si le modele est "XRECHNUNG" au lieu de BASIC Extended etc dans la fonction MetaDataModele()
alors le nom du fichier factur-x n'est plus "factur-x.xml" mais doit être "xrechnung.xml"
c'est une particuliriaté du modèle XRECHNUNG allemand )%%metadataVersionDocumentFileName%% actuellement toujours "1.0"
%%metadataConformanceLevel%% sera remplacé par la valeur de la fonction MetaDataModele
%%metadataDocumentID%% c'est un guid qui est calculé au moment de la conversion pdf,
%%metadataInstanceID%% c'est un guid qui est calculé au moment de la conversion pdf
%%metadataDocumentID%% et %%metadataInstanceID%% identifie de façon unique le document%%metadataAuthor%% "ERP Divalto " HARMONY_VERSION " - DivaltoViewer v1.92 11/12/2021" mais on l'a pas mis dans le modèle par défaut
car certains vérificateurs pdf-A 3b provoque une erreur si
<dc:creator> <rdf:Seq> <rdf:li>%%metadataCreator%%</rdf:li> </rdf:Seq> </dc:creator> est différent de celui qui est inscrit dans ce chapitre ! <rdf:Description xmlns:xmp="http://ns.adobe.com/xap/1.0/" rdf:about=""> <xmp:CreatorTool>%%metadataCreator%%</xmp:CreatorTool> </rdf:Description>
si on personnalise le fichier xmp , vous pouvez ajouter 3 mots clés qui seront remplacés par leurs valeurs
%%metadataParam1%% ce sont 3 valeurs que l'on peut positionner lorsqu'on crée le dhvw dans le code diva en utilisant la fc
%%metadataParam2%% MetaDataOptions("PARAM1","xxxxx") MetaDataOptions("PARAM2","xxxxx") MetaDataOptions("PARAM3","xxxxx")
%%metadataParam3%%
contenu du fichier xmp que prend divaltoviewer et qui intégré dans divaltoviewer
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta x:xmptk="Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-20:48:00" xmlns:x="adobe:ns:meta/"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description xmlns:fx="urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#" rdf:about=""> <fx:DocumentType>INVOICE</fx:DocumentType> <fx:DocumentFileName>%%metadataDocumentFileName%%</fx:DocumentFileName> <fx:Version>%%metadataVersionDocumentFileName%%</fx:Version> <fx:ConformanceLevel>%%metadataConformanceLevel%%</fx:ConformanceLevel> </rdf:Description> <rdf:Description xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/" rdf:about=""> <pdfaid:part>3</pdfaid:part> <pdfaid:conformance>B</pdfaid:conformance> </rdf:Description> <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/" rdf:about=""> <dc:title> <rdf:Alt> <rdf:li xml:lang="x-default">%%metadataTitle%%</rdf:li> </rdf:Alt> </dc:title> <dc:creator> <rdf:Seq> <rdf:li>%%metadataCreator%%</rdf:li> </rdf:Seq> </dc:creator> <dc:description> <rdf:Alt> <rdf:li xml:lang="x-default">%%metadatasubject%%</rdf:li> </rdf:Alt> </dc:description> </rdf:Description> <rdf:Description xmlns:pdf="http://ns.adobe.com/pdf/1.3/" rdf:about=""> <pdf:Producer>%%metadataProducer%%</pdf:Producer> <pdf:Keywords>%%metadataKeywords%%</pdf:Keywords> </rdf:Description> <rdf:Description xmlns:xmp="http://ns.adobe.com/xap/1.0/" rdf:about=""> <xmp:MetadataDate>%%metadataCreationDate%%</xmp:MetadataDate> <xmp:CreatorTool>%%metadataCreator%%</xmp:CreatorTool> <xmp:CreateDate>%%metadataCreationDate%%</xmp:CreateDate> <xmp:ModifyDate>%%metadataCreationDate%%</xmp:ModifyDate> </rdf:Description> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"> <xmpMM:InstanceID>uuid: %%metadataInstanceID%%</xmpMM:InstanceID> <xmpMM:DocumentID>uuid: %%metadataDocumentID%%</xmpMM:DocumentID> </rdf:Description> <rdf:Description xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/" xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#" xmlns:pdfaType="http://www.aiim.org/pdfa/ns/type#" xmlns:pdfaField="http://www.aiim.org/pdfa/ns/field#" xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#" rdf:about=""> <pdfaExtension:schemas> <rdf:Bag> <rdf:li rdf:parseType="Resource"> <pdfaSchema:schema>Factur-X PDFA Extension Schema</pdfaSchema:schema> <pdfaSchema:namespaceURI>urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#</pdfaSchema:namespaceURI> <pdfaSchema:prefix>fx</pdfaSchema:prefix> <pdfaSchema:property> <rdf:Seq> <rdf:li rdf:parseType="Resource"> <pdfaProperty:name>DocumentFileName</pdfaProperty:name> <pdfaProperty:valueType>Text</pdfaProperty:valueType> <pdfaProperty:category>external</pdfaProperty:category> <pdfaProperty:description>name of the embedded XML invoice file</pdfaProperty:description> </rdf:li> <rdf:li rdf:parseType="Resource"> <pdfaProperty:name>DocumentType</pdfaProperty:name> <pdfaProperty:valueType>Text</pdfaProperty:valueType> <pdfaProperty:category>external</pdfaProperty:category> <pdfaProperty:description>INVOICE</pdfaProperty:description> </rdf:li> <rdf:li rdf:parseType="Resource"> <pdfaProperty:name>Version</pdfaProperty:name> <pdfaProperty:valueType>Text</pdfaProperty:valueType> <pdfaProperty:category>external</pdfaProperty:category> <pdfaProperty:description>The actual version of the Factur-X XML schema</pdfaProperty:description> </rdf:li> <rdf:li rdf:parseType="Resource"> <pdfaProperty:name>ConformanceLevel</pdfaProperty:name> <pdfaProperty:valueType>Text</pdfaProperty:valueType> <pdfaProperty:category>external</pdfaProperty:category> <pdfaProperty:description>The conformance level of the embedded Factur-X data</pdfaProperty:description> </rdf:li> </rdf:Seq> </pdfaSchema:property> </rdf:li> </rdf:Bag> </pdfaExtension:schemas> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="w"?>
Fournir un autre modèle ICC
Harmony a aussi un modèle de base d'un ICC (description du modèle des couleurs, par défaut harmony à un fichier de couleur de base de winddows sRGB IEC61966-2-1) mais qu'on peut lui fournir un autre modèle ICC s'il faut au moment de la génération du fichier dhvw avec la commande
err = MetaDataFileICC( "chemin et fichier icc format windows a prendre comme modèle de couleur")
ou alors de façon globale a toute les impressions en mettant dans regedit
Ordinateur\HKEY_CURRENT_USER\SOFTWARE\Divalto\divalto.ini
chapitre PDF mot cle "metadataICCFile" ;il faut mettre le chemin et le nom du fichier a lire
on peut saisir ce paramètre dans DivaltoViewer -> menu Options => Paramètres => Conversion PDF
=> bouton Mode PDFA => Prendre le fichier ICC par défaut sinon prendre ce fichier ICC
=> Prendre l'identifiant ICC par défaut sinon prendre cet identifiant , par défaut harmony utilise le modèle "sRGB IEC61966-2-1"
et donc l'identifiant d’harmony est "sRGB IEC61966-2-1
- Aucune étiquette