Page 1 sur 1

[R] Garder la page courante d'un PDF

Posté : ven. 24 mai 2013 15:55
par GhostLine
Salut à tous !

Je viens de terminer pour mon boulot un outil de suivi de préparation de matériel à la demande (au call, pour les spécialistes).
Mais j'ai un problème : lorsqu'un call est choisi dans la liste, il est assigné à l'opérateur connecté sur la machine cliente, et il s'affiche la documentation associée à ce call (un PDF, typiquement). Si jamais l'utilisateur s'affecte un second call (le système est prévu pour), il "perd" sa page dans le premier call et doit redérouler tout le document ...

D'où ma question : existe-t-il un moyen de conserver le n° de la page active d'un PDF affiché à l'écran, et de remettre le document à cette page au prochain affichage ?

Re: [..] Garder la page courante d'un PDF

Posté : ven. 24 mai 2013 17:01
par jguinch
Salut.
Ce serait bien que tu précise ce que tu utilises pour lire les PDF ? :roll:

Dans Adobe Reader (dans le 10 en tout cas), il y a une option qui est "Restaurer les derniers paramètres affichés lors de la réouverture du document". Ca devrait suffire ?
Si besoin, ce paramètre se trouve dans la base de registre dans HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\10.0 : RememberedViews (2 = coché, 1 = décoché)

Sinon pour ouvrir un PDF sur une page donnée, c'est possible (avec Adobe Reader et Sumatra en tout cas)
Adobe Reader :
To open a PDF at page 100 the follow works
<path to Adobe Reader> /A "page=100" "<Path To PDF file>"

Sumatra :
-page $numpage Ouvre le document à la page spécifiée

Re: [..] Garder la page courante d'un PDF

Posté : lun. 27 mai 2013 08:30
par GhostLine
Au temps pour moi !

J'ai une petite fonction qui me permet d'afficher mon PDF dans une partie de mon interface, ci après :

Code : Tout sélectionner

Func _affpdf($fichier_pdf)
    Global $oPDF = ObjCreate("AcroPDF.PDF.1");
    $oPDF.src = $fichier_pdf
    $GUI_ActiveX = GUICtrlCreateObj($oPDF, 0, 0, 1024, 721)
EndFunc   ;==>_affpdf

Re: [..] Garder la page courante d'un PDF

Posté : lun. 27 mai 2013 11:59
par jguinch
Je ne suis pas trop sûr de mon coup, mais tu peux essayer de récupérer le numéro de la page courante avec :

Code : Tout sélectionner

$pageNum = $oPDF.GetPageNum()
MsgBox(0, "GetPageNum", "Numéro de la page " & $pageNum  + 1 )
Et pour aller à un numéro de page :
$oPDF.setCurrentPage(10) ; Aller à la page 10

Re: [..] Garder la page courante d'un PDF

Posté : lun. 27 mai 2013 15:53
par GhostLine
Tout d'abord, merci pour ta réponse !

Donc : SetCurrentPage fonctionne sans souci, par contre, GetPageNum m'envoie bouler :

Code : Tout sélectionner

C:\Program Files (x86)\SinNet\SinCli\interface.au3 (319) : ==> The requested action with this object has failed.:
Global $pageNum = $oPDF.GetPageNum()
Global $pageNum = $oPDF.GetPageNum()^ ERROR
Une idée ?

Re: [..] Garder la page courante d'un PDF

Posté : lun. 27 mai 2013 20:40
par jguinch
Tu peux essayer avec l'objet AcroExch.App à la place de AcroPDF.PDF.1 ?

Re: [..] Garder la page courante d'un PDF

Posté : mar. 28 mai 2013 08:39
par GhostLine
Si je fais ce changement, plus rien ne fonctionne, même pas l'affichage :

Code : Tout sélectionner

C:\Program Files (x86)\MonoChrome Softworks\SinNet\SinCli\interface.au3 (314) : ==> Variable must be of type "Object".:
$oPDF.src = $fichier_pdf
$oPDF^ ERROR
->08:38:59 AutoIT3.exe ended.rc:1
>Exit code: 1    Time: 6.296

Re: [..] Garder la page courante d'un PDF

Posté : mar. 28 mai 2013 10:41
par jguinch
Peut être AcroExch.App.1
Sinon, tu utilises quoi comme version Adobe ?

Edit :
AcroExch c'est si tu as Acrobat. Je suppose que tu n'a que le Reader ?

Re: [..] Garder la page courante d'un PDF

Posté : mar. 28 mai 2013 10:56
par GhostLine
Adobe Reader X, m'sieur ! Version corporate, non remplaçable.

Re: [..] Garder la page courante d'un PDF

Posté : mar. 28 mai 2013 14:06
par jguinch
Les objets COM d'Adobe Reader ne permettront pas à priori de récupérer le numéro de la page courante.

Par contre, j'y arrive simplement comme ça :

Code : Tout sélectionner

AutoItSetOption("WinDetectHiddenText",1) 
$text = WinGetText ("Ma GUI")
$split = StringSplit($text, @CRLF)
MsgBox(0, "Numéro de page", $split[19])
A tester dans ton environnement, ça peut le faire...

Re: [..] Garder la page courante d'un PDF

Posté : mar. 28 mai 2013 15:02
par GhostLine
Ca fonctionne ! Incroyable, le nombre d'infos planquées dans ce soft ... le champs n'est pas le bon dans mon cas, mais une fois $split visualisé, facile de mettre la bonne valeur dans $split[xx].

Re: [R] Garder la page courante d'un PDF

Posté : mar. 28 mai 2013 15:32
par jguinch
C'est bien ce que je craignais : la position dans $split n'est pas toujours la même (peut-être en fonction du PDF ou de la version du Reader - pour ma part 11.0.3)
Il faudra donc faire attention à bien lire au bon endroit (tester sur plusieurs machines), ou alors trouver le moyen de cherche au bon endroit.
En tout cas c'est déjà une bonne chose...