FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
Un lecteur de Ebook... Emptypar Pedro Aujourd'hui à 7:20

» item_index(résolu)
Un lecteur de Ebook... Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Un lecteur de Ebook... Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Un lecteur de Ebook... Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Un lecteur de Ebook... Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Un lecteur de Ebook... Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Un lecteur de Ebook... Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Un lecteur de Ebook... Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Un lecteur de Ebook... Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Un lecteur de Ebook... Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Un lecteur de Ebook... Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Un lecteur de Ebook... Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Un lecteur de Ebook... Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Un lecteur de Ebook... Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Un lecteur de Ebook... Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Cdiscount : -30€ dès 300€ d’achat sur une sélection Apple
Voir le deal

 

 Un lecteur de Ebook...

Aller en bas 
4 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12298
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Un lecteur de Ebook... Empty
MessageSujet: Un lecteur de Ebook...   Un lecteur de Ebook... EmptyMar 1 Déc 2015 - 3:43

Vous avez un lecteur de ebooks ? Il y en a des gratuits, et même plusieurs. Mais il est sympa de faire cela avec Panoramic, aussi.

En réalité, c'est très simple ! Un ebook (extension *.epub) est essentiellement un fichier ZIP contenant une arborescence restreinte de dossiers et de fichiers. Certains donnent la liste des éléments (pour simplifier), et d'autres représentent les textes, sous forme de fichiers xhtml. Et ces fichiers sont affichables avec l'objet WebBrowser de KGF.dll.

Donc, voici un lecteur très simple. Il permet de choisir le livre (un fichier *.epub), et de l'ouvrir. Il présentera la couverture du livre sous forme d'image à gauche, et la liste des textes disponibles à droite. Il n'y a pas encore les titres, mais ça viendra. Un clic sur une des lignes de la liste des textes affichera une fenêtre de lecture. C'est aussi simple que ça.

Voici le code:
Code:
' KGF_ebook_reader.bas

labels()
constantes()
variables()

dll_on "KGF.dll"


form0()
menu()
GUI()
invisibles()


end


exit:
  if OpnFlag%=1
  
  end_if
  terminate
  
open:
  if OpnFlag%=1
    s$ = "Un ebook est actuellement ouvert:"+crlf$+Ebook$+crlf$+"Voulez-vous le fermer ?"
    if message_confirmation_yes_no(s$)<>1 then return
    gosub close
  end_if
  filter no_open%,"Ebook|*.epub"
  f$ = file_name$(no_open%)
  if f$="_" then return
  if lower$(right$(f$,5))<>".epub" then f$ = f$ + ".epub"
  if file_exists(f$)=0
    message "Ebook non trouvé !"
    return
  end_if
  ' décompresser le ebook
  d$ = left$(f$,len(f$)-5)
  archiver_on
  archiver_extract f$,d$
  archiver_off
  OpnFlag% = 1
  Ebook$ = f$
  EbookDossier$ = d$
  
  ' chercher le nom du dossier des chapitres
  file_open_read 1,EbookDossier$+"\META-INF\Container.xml"
  while lower$(left$(trim$(s$),10))<>"<rootfile "
    file_readln 1,s$
  end_while
  file_close 1
  i% = instr(s$,"=")
  while mid$(s$,i%,1)<>chr$(34)
    i% = i% + 1
  end_while
  s$ = mid$(s$,i%+1,len(s$))
  s$ = left$(s$,instr(s$,"/")-1)
  EbookDetailDossier$ = EbookDossier$+""+s$

  ' analyser le dossier des chapitres
  file_open_read 1,EbookDetailDossier$+"\content.opf"
  while lower$(trim$(s$))<>"<manifest>"
    file_readln 1,s$
  end_while
  file_readln 1,s$
  while lower$(trim$(s$))<>"</manifest>"
    s$ = lower$(s$)
    if (instr(s$,"couverture.jpg")>0) or (instr(s$,"cover.jpg")>0)
      ExtraireHref(s$)
      FichierCouverture$ = EbookDetailDossier$+""+href$
    end_if
    if instr(s$,".xhtml")>0
      ExtraireHref(s$)
      item_add no_Chemins%,EbookDetailDossier$+""+href$
      href$ = file_extract_name$(href$)
      item_add no_container_sommaire%+1,href$
    end_if
    file_readln 1,s$
  end_while
  file_close 1
  
  ' montrer la couverture
  show no_container_couverture%
  file_load no_container_couverture%+1,FichierCouverture$

  ' charger le sommaire (liste des chapitres)
  show no_container_sommaire%

  return
  

close:
  if OpnFlag0 then return            : ' rien n'est ouvert ?
  if EbookDossier$=""
    message "Anomalie: pas de dossier connu !"
    return
  end_if
  if dir_exists(EbookDossier$)=0
    message "Anomalie: le dossier n'existe pas:"+crlf$+EbookDossier$
    return
  end_if
  if message_confirmation_yes_no("Voulez-vous vraiment effacer:"+crlf$+EbookDossier$+"\*.*")<>1 then return

  hide no_container_couverture%
  hide no_container_sommaire%
  url$ = "about:blank"
  res% = dll_call2("WB_Url",WB%,adr(url$))

  ' ici, supprimer tout...

  s$ = param_value$(0)
  s$ = file_extract_path$(s$)
  file_open_write 1,s$+"KGF_ebook_reader.vbs"
  file_writeln 1,"Set oShell = CreateObject("+chr$(34)+"WScript.Shell"+chr$(34)+")"
  file_writeln 1,"Set oFs = CreateObject ("+chr$(34)+"Scripting.FileSystemObject"+chr$(34)+")"
  file_writeln 1,"oFS.CreateTextFile ("+chr$(34)+"tmp.cmd"+chr$(34)+")"
  file_writeln 1,"Const ForReading = 1, ForWriting = 2"
  file_writeln 1,"Set oFile = oFs.OpenTextFile ("+chr$(34)+"tmp.cmd"+chr$(34)+", ForWriting)"
  file_writeln 1,"oFile.Writeline "+chr$(34)+"chcp 1252"+chr$(34)
  file_writeln 1,"oFile.Writeline "+chr$(34)+"del /s /q "+chr$(34)+"+"+chr$(34)+chr$(34)+chr$(34)+EbookDossier$+"\*.*"+chr$(34)+chr$(34)+chr$(34)
  file_writeln 1,"oFile.Writeline "+chr$(34)+"rd /s /q "+chr$(34)+"+"+chr$(34)+chr$(34)+chr$(34)+EbookDossier$+chr$(34)+chr$(34)+chr$(34)
  file_writeln 1,"oFile.Close"
  file_writeln 1,"oShell.Run "+chr$(34)+"tmp.cmd"+chr$(34)+",0,true"
  file_writeln 1,"oFS.DeleteFile ("+chr$(34)+"tmp.cmd"+chr$(34)+")"
  file_close 1
  execute_wait s$+"KGF_ebook_reader.vbs"
  OpnFlag% = 0
  Ebook$ = ""
  EbookDossier$ = ""
  clear no_Chemins%
  clear no_container_sommaire%+1
  return

choix:
  i% = item_index(number_click)
  url$ = item_read$(no_Chemins%,i%)
  res% = dll_call2("WB_Url",WB%,adr(url$))
  caption no_lecteur%,"Lecture: "+Ebook$+" - "+item_index$(number_click)
  show no_lecteur%
  return

' ===========================================================================

sub labels()
  label open, exit, close, choix

end_sub

sub constantes()
  dim EBRversion$ : EBRversion$ = "V0.01"
  dim crlf$ : crlf$ = chr$(13)+chr$(10)
end_sub

sub variables()
  dim res%, no%, no1%, no2%, s$, f$, d$, i%, href$, url$
  dim no_open%                  : ' numéro d'objet de open_dialog
  dim no_Chemins%               : ' dlist contenant les chemins vers les chapitres
  dim no_lecteur%               : ' fenêtre de lecture
  dim OpnFlag%                  : ' indique si un ebook est ouvert
  dim EbookDossier$             : ' dossier contenant le ebook
  dim Ebook$                    : ' nom du fichier ebook
  dim EbookDetailDossier$       : ' dossier contenant les volumes individuels
  dim no_container_couverture%  : ' numéro du container pour la couverture
  dim no_container_sommaire%    : ' numéro du container pour le sommaire
  dim FichierCouverture$        : ' nom du fichier de couverture
  dim WB%                       : ' lecteur
end_sub

sub form0()
  full_space 0 : on_close 0,close
  caption 0,"KGF_ebook_reader "+EBRversion$

end_sub

sub menu()
  no% = no% + 1 : main_menu no% : no1% = no%
  no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no% : caption no%,"Fichiers"
  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Ouvrir" : on_click no%,open
  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Fermer" : on_click no%,close

  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Sortir" : on_click no%,exit
end_sub

sub GUI()
  no% = no% + 1 : container no% : no_container_couverture% = no%
    hide no_container_couverture% : width no%,screen_x/2-15 : height no%,screen_y-100
    caption no%,"Couverture"
  no% = no% + 1 : picture no% : parent no%,no_container_couverture%
    full_space no% : stretch_on no%
  no% = no% + 1 : container no% : no_container_sommaire% = no%
    hide no_container_sommaire% : width no%,screen_x/2-15 : height no%,screen_y-100
    left no_container_sommaire%,width(no_container_couverture%)+3
    caption no%,"Sommaire"
  no% = no% + 1 : list no% : parent no%,no_container_sommaire%
    full_space no% : on_click no%,choix
    
  no% = no% + 1 : form no% : no_lecteur% = no% : hide no% : top no%,50 : left no%,50
    width no%,width(0)-100 : height no%,height(0)-100
  WB% = dll_call1("WB_Create",handle(no_lecteur%))
  res% = dll_call5("WB_Locate",WB%,0,0,width(no_lecteur%)-20,height(no_lecteur%)-20)
end_sub

sub invisibles()
  no% = no% + 1 : open_dialog no% : no_open% = no%
  no% = no% + 1 : dlist no% : no_Chemins% = no%
end_sub

sub ExtraireHref(s$)
' <item id="Couverture.jpg" href="Images/Couverture.jpg" media-type="image/jpeg"/>
  dim_local i%, j%,s1$
  s1$ = trim$(s$)
  i% = instr(s1$,"href=")
  while mid$(s1$,i%,1)<>chr$(34)
    i% = i% + 1
  end_while
  s1$ = mid$(s1$,i%+1,len(s1$))
  j% = 1
  while mid$(s1$,j%,1)<>chr$(34)
    j% = j% + 1
  end_while
  href$ = left$(s1$,j%-1)
  i% = instr(href$,"/")
  while i%>0
    href$ = left$(href$,i%-1)+""+mid$(href$,i%+1,len(href$))
    i% = instr(href$,"/")
  end_while
end_sub


Dernière édition par Klaus le Ven 4 Déc 2015 - 17:47, édité 3 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Un lecteur de Ebook... Empty
MessageSujet: Re: Un lecteur de Ebook...   Un lecteur de Ebook... EmptyMar 1 Déc 2015 - 7:34

Pas encore testé mais merci Klaus, c'est sympa d'avoir ça sous le coude. Il faudrait même que ça puisse passer sur la version Android (même si pour le moment ce n'est techniquement pas possible)
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12298
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Un lecteur de Ebook... Empty
MessageSujet: Re: Un lecteur de Ebook...   Un lecteur de Ebook... EmptyMar 1 Déc 2015 - 11:09

Sous Android, j'utilise actuellement FBReader dans sa version gratuite - parfait. Sous Windows, j'utilise Calibre - très puissant.

Le présent programme est juste une étude de faisabilité, avec:
- gestion du ZIP
- analyse "brutale" de fichiers XML
- affichage de fichiers HTML
- suppression silencieuse d'une arborescence de dossiers avec ses fichiers
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Un lecteur de Ebook... Empty
MessageSujet: Re: Un lecteur de Ebook...   Un lecteur de Ebook... EmptyMar 1 Déc 2015 - 13:49

oui, ça j'ai bien compris, je voulais juste dire qu'idéalement c'est le genre de programme qu'il serait bien de pouvoir porter sur la version Android de Panoramic car c'est typiquement le genre d'applications que l'on utilise sur cette plateforme (perso: musique, jeux, photos et ebook Wink )
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Un lecteur de Ebook... Empty
MessageSujet: re   Un lecteur de Ebook... EmptyMer 2 Déc 2015 - 18:47

Oups...
Un lecteur de Ebook... Captur12
Revenir en haut Aller en bas
mindstorm

mindstorm


Nombre de messages : 685
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

Un lecteur de Ebook... Empty
MessageSujet: Re: Un lecteur de Ebook...   Un lecteur de Ebook... EmptyMer 2 Déc 2015 - 20:14

Encore la preuve de la puissance de KGF
merci Klaus
Revenir en haut Aller en bas
Contenu sponsorisé





Un lecteur de Ebook... Empty
MessageSujet: Re: Un lecteur de Ebook...   Un lecteur de Ebook... Empty

Revenir en haut Aller en bas
 
Un lecteur de Ebook...
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Un lecteur MP3
» lecteur MP3 aléatoire
» Lecteur de musique
» un petit lecteur navigateur PDF
» Lecteur PDF open source léger pratique.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: