[Résolu][Python] Convertion odt en pdf/A-1a

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
pact31
Fraîchement OOthentifié
Messages : 4
Inscription : 16 avr. 2012 10:44

[Résolu][Python] Convertion odt en pdf/A-1a

Message par pact31 »

Bonjour,

Je cherche à convertir automatiquement des documents odt en pdf/A-1a.
Pour ça j'utilise un script python : DocumentConverter.py (h**p://www.artofsolving.com/opensource/pyodconverter)
Pour faire du pdf classique, pas de problème.
J'ai modifié ce script pour ajouter l'option de filtre pour la version PDF, mais ça ne fonctionne pas. J'obtiens toujours le même PDF.

Code : Tout sélectionner

...

EXPORT_FILTER_DATA = {
    "pdf": {
        "SelectPdfVersion": 1
    }
}

...


   def convert(self, inputFile, outputFile):

        inputUrl = self._toFileUrl(inputFile)
        outputUrl = self._toFileUrl(outputFile)

        loadProperties = { "Hidden": True }
        inputExt = self._getFileExt(inputFile)
        if IMPORT_FILTER_MAP.has_key(inputExt):
            loadProperties.update(IMPORT_FILTER_MAP[inputExt])
        
        document = self.desktop.loadComponentFromURL(inputUrl, "_blank", 0, tuple(self._toProperties(loadProperties)))
        try:
            document.refresh()
        except AttributeError:
            print "Erreur refresh "
            exit(1)

        family = self._detectFamily(document)
        self._overridePageStyleProperties(document, family)
        
        outputExt = self._getFileExt(outputFile)
        storeProperties = self._getStoreProperties(document, outputExt)
        
        props = self._toProperties(storeProperties)

# J'ai ajouté cette partie au script initial
        if EXPORT_FILTER_DATA.has_key(outputExt):
            propsData = self._toProperties(EXPORT_FILTER_DATA[outputExt])
            prop = PropertyValue()
            prop.Name = "FilterData"
            prop.Value = tuple(propsData)
            props.append(prop) 

# Mais le "FilterData" ne semble pas être pris en compte dans les propriétés

        try:
            document.storeToURL(outputUrl, tuple(props))
        finally:
            document.close(True)

Une idée ?
Merci.
Dernière modification par pact31 le 19 avr. 2012 13:27, modifié 1 fois.
libreoffice 3.4 sur Ubuntu 11.10
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [Python] Convertion odt en pdf/A-1a

Message par Churay »

Bonjour

Tu devrais trouver toutes les nuances (dont la version A-1a) que tu veux apporter ici : http://wiki.services.openoffice.org/wik ... PDF_export

Il doit y avoir une page équivalente pour LO, mais je patine encore à trouver mes marques pour la recherche de doc sur LO...
Mais bon, ça devrait le faire avec le wiki OOo
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
pact31
Fraîchement OOthentifié
Messages : 4
Inscription : 16 avr. 2012 10:44

Re: [Python] Convertion odt en pdf/A-1a

Message par pact31 »

Churay a écrit :Bonjour

Tu devrais trouver toutes les nuances (dont la version A-1a) que tu veux apporter ici : http://wiki.services.openoffice.org/wik ... PDF_export

Il doit y avoir une page équivalente pour LO, mais je patine encore à trouver mes marques pour la recherche de doc sur LO...
Mais bon, ça devrait le faire avec le wiki OOo
Je me suis inspirée de ce tutorial pour faire mes modifs en python. Mais le problème est que ça ne fonctionne pas (OOo ou LO c'est du kif).

A la base, le problème était d'avoir les polices embarquées dans le PDF.
Les solutions que j'ai trouvées :
- Pour faire du PDF/A : en fait il suffit d'appeler une fois le formulaire 'Exporter en PDF' et de cocher la case 'PDF/A'. C'est une propriété qui est stockée au niveau utilisateur. Tous les exports faits par cet utilisateur seront au format PDF/A (par script ou pas).
- Pour embarquer toutes les polices entièrement (ce que ne fait pas le PDF/A) : j'ai utilisé une méthode très "bourrin" qui consiste à transformer mon pdf en ps (pdftops) et ensuite de faire l'opération inverse (ps2pdf) avec les options kivonbien : ps2pdf -dSubsetFonts=false -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dBatch mon_fichier.ps mon_fichier.pdf

Merci.
libreoffice 3.4 sur Ubuntu 11.10
atoc
Fraîchement OOthentifié
Messages : 4
Inscription : 29 mai 2012 20:30

Re: [Résolu][Python] Convertion odt en pdf/A-1a

Message par atoc »

Je viens de trouver une soltuion au problème :

Code : Tout sélectionner

PropertyValue('FilterData', 0, uno.Any('[]com.sun.star.beans.PropertyValue', (PropertyValue('SelectPdfVersion', 0, 1, 0),),), 0)
Wouhaha !
OpenOffice 3.3 sous MacOS 10.7.4