Problématique annotations partagées - Reader XI  (Lu 5017 fois) Partager ce sujet Imprimer

1 B


tchern  27 juillet 2015 : 21:49

Bonjour,


Je viens vous soumettre une problématique que je rencontre après de multiples recherches / essais infructueux.
Je suis confronté a un problème classique à savoir "la montée de version" :)


Je vous racontes un peu ma vie avant :
Dans le cadre d'un application web de gestion électronique de Document, nous disposons depuis toujours d'un composant web service (Documentum : Pdf annotation services), qui permet de récupérer des pdfs archivés, de leur ajouter un fichier avec les annotations (fdf) et via reader extension d'activer les annotations partagées.


Nos utilisateurs sont friands de ce système qui permet d'annoter les documents de façon simple, et nous ça nous va bien parce que les pdfs ne sont pas altérés.


- Seulement voila les postes client sont toujours en v9.X d'abobe reader, et ça la sécurité aime pas du tous. Nous sommes donc obligé de monter de version certainement adobe reader XI
- Pour faciliter un peu tous ça, le composant magique que l'on utilise (Pdf annotation services), est en fin de vie et ne supporte pas les versions au dessus du reader v9


Donc je me suis dit, bon ça doit pas être bien compliqué, je vais re-développer une brique similaire et le tour sera jouer.
Sauf que le je déchante un peu :p, je suis plus que débutant dans le domaine du scripting pdf, et entre les version X, XI, DC, j'ai l'impression que cela évolue pas mal et j'ai du mal a comprendre ce qui est faisable / obsolète / ou bonne solution.


En gros je voudrais avoir une révision partagée, mais je dois récupérer le flux des annotations pour le stocker dans un format fdf en base de donnée. Donc je ne peu pas utiliser les modes WEBDAV ou système de fichier.


J'ai vu qu'il y avait la possibilité d'appeler des services web, mais je me demandais si en natif il n'y avait pas plus simple ?
Quid aussi du reader extension, j'ai lu que dans les versions X et XI les fonction d'annotations était activées de base, j'ai lu aussi que pour utiliser les fonctions SOAP dans un reader on avait besoin de Reader Extension.
Comme je n'ai pas de version récente de Reader Extension je n'ai pas moyen de tester.


Je ne demande pas de solution miracle, mais quelques infos de personne aguerries sur le sujet qui me permettrait d'avancer dans la bonne direction, le je suis un peu a sec :)


Vous pouvez me dire que je suis complémentent à coté de la plaque aussi :)


Bonne soirée



IP archivée


Merlin  28 juillet 2015 : 11:09

Bonjour et bienvenue.


Citer
- Seulement voila les postes client sont toujours en v9.X d'abobe reader, et ça la sécurité aime pas du tous. Nous sommes donc obligé de monter de version certainement adobe reader XI

Pourquoi ne pas passer directement à la version DC ?
Ca évitera le même remue-ménage dans 2 ans…
(Surtout s'il y a des Mac dans le lot, car sur Mac OS : version DC = full 64 bits, et donc mise-à-jour obligatoire de tous les plugins)


Citer
- Pour faciliter un peu tous ça, le composant magique que l'on utilise (Pdf annotation services), est en fin de vie et ne supporte pas les versions au dessus du reader v9

Il va falloir le (faire) mettre à jour, ou bien changer le fusil d'épaule.


Citer
Quid aussi du reader extension…

Adobe Reader X permet d'enregistrer des PDF commentés ou des formulaires remplis sans que les PDF n'aient besoins d'être "activés". Mais Reader X ne propose que 2 outils de commentaires.

Adobe Reader XI et Acrobat Reader DC proposent la même chose mais avec tous les outils de commentaires à disposition (finies les mesquineries ;-)).


Par contre les Reader Extensions restent nécessaires dans certains cas (la poule doit encore pondre un œuf en or de temps en temps), notamment si on veut pouvoir utiliser les signatures avec Certificat numérique.



Par-contre, concernant le SOAP et la connexion FDF-base de données je ne sais pas répondre, mais un autre membre le fera certainement…
 :Smiley15:

IP archivée


tchern  28 juillet 2015 : 15:01

Merci pour votre réponse :)


Entre Adobe XI et adobe DC, le choix ne me reviens pas malheureusement.
Mais je pousserais de toute façon la version DC qui possède un autre avantage pour nos utilisateurs : la barre d'annotation est horizontal et plus vertical (perte de place sur des écran 4:3 pour adobe X et XI).


J'ai d'autres petites interrogations :
- Savez vous s'il est possible d'avoir des versions d'essais de reader extension ? J'ai beau envoyer des mails ou passer par l'interface de demande du site d'adobe, je n'ai aucune réponse.


Sinon j'avance un peu sur mes appels SOAP, j'arrive à consommer un service et utiliser la réponse (j'ai un peu galéré avec les namespaces).
Je vais essayer d'envoyer les commentaires présents sur le document maintenant ou générer le fdf associé si c'est possible.


Quand j'aurais un exemple qui tiens la route je vous mettrais tous ça.

IP archivée


Merlin  29 juillet 2015 : 10:16

- Savez vous s'il est possible d'avoir des versions d'essais de reader extension ? J'ai beau envoyer des mails ou passer par l'interface de demande du site d'adobe, je n'ai aucune réponse.

J'en doute.
Tu devrais essayer de passer par le chat, souvent plus réactif.

 

IP archivée


tchern  31 juillet 2015 : 15:39


Bonjour,

Je peux utiliser le serveur livecycle que nous avions avant (v8.X), ça me suffit pour donner les droits sur mes pdfs.


Pour le moment je procède de la manière suivante, j'ai donc mis en place ceci :
- Un 1er service qui me permet de générer un fdf qui contiens mes scripts / variables / lien vers le pdf qui je veux visualiser (2eme service)
- Un 2nd service qui va chercher le pdf (dans ma ged) et ajoute les droits via livecycle (sera appelé de mon fdf)
- Un 3eme service qui gère mes flux d'annotation


Quand j'appel le 1er service depuis IE, mon fdf se charge, affiche le pdf, puis va chercher les annotations et les affiches.
Quand le pdf se ferme je rappel le service pour enregistrer les annotations.


Mais je suis confronté à un nouveau problème, quand mon pdf s'affiche, je peux annoter pas de soucis, mais je voudrais que la barre d'annotation s'affiche automatiquement.
Actuellement je dois ouvrir le panneau de droite puis sélectionner l'outil commentaire, mes utilisateurs font ça 300 fois par jour, il faudrait que je trouve une solution :/. Avez vous des idées ?


J'ai bien trouver un semblant de piste, mais ce menu (Affichage > Outils > Commentaire), n'est apparemment pas exécutable avec : app.execMenuItem()


Cordialement


 

IP archivée


Merlin  31 juillet 2015 : 16:56

Essaye plutôt ça :

app.execMenuItem("ShowHideToolbarCommenting");
 :Smiley15:

IP archivée


tchern  03 août 2015 : 14:35

Salut,

app.execMenuItem("ShowHideToolbarCommenting");
--> ça me renvoi "undefined"
J'ai essayé plusieurs chose mais impossible d'afficher la barre par défaut :/


Mais je me demande si j'ai bon dans les droits qui je positionne sur le pdf, je m'explique :

J'ai donc un fichier .fdf que j'ouvre avec IE qui contient un lien vers mon pdf.
Le pdf est autorisé via livecycle (8.2), j'ai mis tous les droits possible, je vous met le code java :

    private InputStream extendedPermission(File fichierPdfAHabiliter) throws ReaderExtensionsException, DSCException, FileNotFoundException
    {
        // Set connection properties required to invoke LiveCycle ES2 using SOAP mode
        Properties connectionProps = new Properties();
        connectionProps.setProperty(ServiceClientFactoryProperties.D SC_DEFAULT_SOAP_ENDPOINT, "http://XXXXXXXX.XXXXXX.XXXXXX:8080");
        connectionProps.setProperty(ServiceClientFactoryProperties.D SC_TRANSPORT_PROTOCOL, ServiceClientFactoryProperties.D SC_SOAP_PROTOCOL);
        connectionProps.setProperty(ServiceClientFactoryProperties.D SC_SERVER_TYPE, "JBoss");
        connectionProps.setProperty(ServiceClientFactoryProperties.D SC_CREDENTIAL_USERNAME, "XXXXXXXXXX");
        connectionProps.setProperty(ServiceClientFactoryProperties.D SC_CREDENTIAL_PASSWORD, "XXXXXXXX");


        // Create a ServiceClientFactory object
        ServiceClientFactory myFactory = ServiceClientFactory.createInsta nce(connectionProps);


        // Create a ReaderExtensionsServiceClient object
        ReaderExtensionsServiceClient reClient = new ReaderExtensionsServiceClient(myFactory);


        // Retrieve the PDF document to which to apply usage rights
        FileInputStream fileInputStream = new FileInputStream(fichierPdfAHabiliter);
        Document inputPDF = new Document(fileInputStream);


        // Create a UsageRight object and specify specific usage rights
        UsageRights useRight = new UsageRights();
        useRight.setEnabledComments(true);
        useRight.setEnabledCommentsOnlin e(true);
        useRight.setEnabledEmbeddedFiles(true);
        useRight.setEnabledFormDataImpor tExport(true);
        useRight.setEnabledOnlineForms(true);
        useRight.setEnabledSubmitStandal one(true);
        useRight.setEnabledBarcodeDecodi ng(true);
        useRight.setEnabledDigitalSignat ures(true);
        useRight.setEnabledDynamicFormFi elds(true);
        useRight.setEnabledDynamicFormPa ges(true);
        useRight.setEnabledFormFillIn(true);


        // Create a ReaderExtensionsOptions object
        ReaderExtensionsOptionSpec reOptions = new ReaderExtensionsOptionSpec();
        reOptions.setModeFinal(false);


        // Set the usage rights
        reOptions.setUsageRights(useRight);
        reOptions.setMessage("This is a Rights-Enabled PDF Document");


        // Apply usage rights to a PDF document
        Document rightsEnabledPDF = reClient.applyUsageRights(
                        inputPDF,
                        "XXXXXXXXXXXXXXXXXXXXX",
                        null,
                        reOptions);


        String contentType = rightsEnabledPDF.getContentType();


        return rightsEnabledPDF.getInputStream();
    }


Dans mon fichier FDF j'ai inséré le script suivant :


function callService(value)
{
   console.println("Call : callService("+value+")");
   SOAP.wireDump=false;
   var cWSURL = "http://XXXXXXXX.XXXXX.XXXXXXXXX:9800/ged-annotation-web/services/testAdobeWsService?wsdl";
   var mynamespace = "http://ws.web.XXXXXXX.domaine.XXXXXXXXX.com/:";
   
   //construction objet d'appel
   var sendRequest = {};
   sendRequest[mynamespace+"test"] = {essaiDto:{annotationDto:value}};
   
   //appel service
   var result = Net.SOAP.request ({
      cURL: cWSURL,
      oRequest: sendRequest
   });


   console.println("\nOUTValue : "+result[mynamespace+"testResponse"]["return"]);
}


Quand j'ouvre tous ça dans IE avec adobe reader DC j'ai le message suivant dans la console :


NotAllowedError: Not allowed Error: Security settings prevent access to this property or method


Normalement j'ai bien mis tous les droits, je comprend pas pourquoi cela ne fonctionne pas, quand j'essai avec acrobat forcément ça fonctionne :/



IP archivée


Merlin  03 août 2015 : 14:40

Dans ce domaine les dernières versions ont apporté beaucoup de changements.

Tout ce que je peux faire c'est te renvoyer vers les forums anglophones AcrobatUsers ou Planet PDF, sur lesquels ont trouve des spécialistes dans ce domaine.
 :joker:

IP archivée


Merlin  03 août 2015 : 14:42

app.execMenuItem("ShowHideToolbarCommenting");
--> ça me renvoi "undefined"

En fait c'est une vieille commande qui ne "devrait" plus fonctionner (depuis Acrobat X), mais comme elle fonctionne encore dans la version Mac OS je pensais que peut-être…
 :geek:

IP archivée


Merlin  17 novembre 2020 : 18:03

(Vieux motard que jamais : réponse 5 ans après juste pour le plaisir car ça ne fonctionne qu'avec Acrobat 9 et les versions antérieures)

To do it you need to create a folder level JavaScript function first and add a script to the form button to call the function.
The folder level script could be like this:

function execDM() {
app.beginPriv();
app.execMenuItem("ShowHideToolbarCommenting");
}
app.trustedFunction(execDM);


And then you can add the following script as a "Run a JavaScript" action in the "Mouse Up" event of the
button:

execDM();

IP archivée