IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Conseil pour afficher mes documents


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 591
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 591
    Par défaut Conseil pour afficher mes documents
    Bonjour,

    Aujourd'hui, pas besoin d'aide technique mais plutôt d'un conseil pour bien faire.

    J'ai mon affichage de documents dans la grille et je peux les modifier, les supprimer ou en ajouter.
    Ces documents sant dans une table SQLite dans laquelle j'ai un champ BLOB dans lequel je veux enregistrer mes documents.
    Il pourra s'agir de PDF, d'images, documents Word, etc.
    Pour les documents que je vais scanner, j'ai le code nécessaire pour le faire avec WIA.

    La première question est : le type BLOB sera-t'il adapté pour stocker toutes sortes de documents ?
    J'ai un champ qui me donnera aussi le type de document pour savoir comment l'ouvrir.

    Ce que je ne sais pas trop comment faire, c'est ajouter un document à un enregistrement auquel j'aurai donné un nom et une description.
    Je voudrais pouvoir ouvrir le document quand je suis sur une ligne de la grille.
    Pas forcément à chaque changement de ligne mais plutôt par un double-clic de souris, un bouton, etc.

    Est-ce que je dois travailler sur le Datatable lié à la DatagridView ?
    Quand il y aura beaucoup de documents, je me dis que ça va prendre pas mal de mémoire pour rien.

    Ou plutôt mettre le document directement dans la base avec une requête d'insert et aller chercher le document dans la base seulement en cas de besoin ?

    Vous feriez comment ?

    Question subsidiaire qui me vient comme ça : Est-ce que vous pensez qu'il existe un moyen d'obtenir une prévisualisation d'un document PDF ou WORD sous forme d'image ?
    J-L aka Papy pour les amis

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 771
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 771
    Par défaut
    Je ne suis pas sûr qu'enregistrer le fichier directement dans la base soit la bonne option, surtout si les fichiers peuvent être gros (>1Mo), si tu as beaucoup de documents, ça va vite faire gonfler le ficher SQLite.
    Il vaut mieux, à mon avis, stocker le chemin et le nom du fichier

    Pour ouvrir le document, il faut passer par un Process.Start (dans System.Diagnostics)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Process.Start(new ProcessStartInfo
            {
                FileName = filePath,
                UseShellExecute = true // IMPORTANT en .NET, si false (par défaut), tente de l'ouvrir comme un .exe
            });
    Pour la restitution d'une miniature (ta question sur l'aperçu)
    j'ai trouvé ce code sur SO:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Source - https://stackoverflow.com/a/1751610
    // Posted by Christian Nunciato, modified by community. See post 'Timeline' for change history
    // Retrieved 2026-07-22, License - CC BY-SA 3.0
     
    ShellFile shellFile = ShellFile.FromFilePath(pathToYourFile);
    Bitmap shellThumb = shellFile.Thumbnail.ExtraLargeBitmap;
    Le code nécessite un package type windows API Codepack (Shell) (je n'ai pas testé)

  3. #3
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 591
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 591
    Par défaut
    Je sais qu'il y a toujours eu de grandes discussions autour du sujet du stockage de fichiers dans une base de données plutôt qu'un chemin d'accès sur un disque.
    J'étais parti là-dessus pour des facilités de sauvegarde mais si je fais régulièrement une copie de mes fichiers sur un disque externe, ça pôurra le fairE.
    Je vais suivre ton conseil.

    Pour le code, merci. J'ai trouvé le Windows API Codepack et j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            public static Bitmap ThumbFile(string FilePath)
            {
                ShellFile shellFile = ShellFile.FromFilePath(FilePath);
                Bitmap shellThumb = shellFile.Thumbnail.LargeBitmap;
                return shellThumb;
            }
     
            public static void Run(string FilePath)
            {
                Process.Start(new ProcessStartInfo { FileName = FilePath, UseShellExecute = true });
            }
    Je cherchais plutôt un apreçu de la première page d'un document mais ça ira bien.

    Encore merci pour le coup de main :-)
    J-L aka Papy pour les amis

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 771
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 771
    Par défaut
    l'idéal serait de mettre le dossier des fichiers (quitte à y mettre des sous-dossiers de "classement") à côté de la base SQLite. (encore une fois, c'est un avis perso à un temps t)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour afficher mes font au premier plans
    Par Clad3 dans le forum OpenGL
    Réponses: 3
    Dernier message: 23/01/2009, 13h52
  2. Réponses: 6
    Dernier message: 20/07/2008, 12h21
  3. Réponses: 17
    Dernier message: 01/10/2007, 11h05
  4. La case "Afficher mes documents récents" a disparu
    Par Angelico dans le forum Windows XP
    Réponses: 2
    Dernier message: 25/08/2007, 17h22
  5. Script VBS pour copier "Mes documents"
    Par DiabloZizi dans le forum Windows
    Réponses: 1
    Dernier message: 06/03/2006, 22h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo