Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [VB.NET] Aprire un file PDF tramite menu

  1. #1
    Utente di HTML.it L'avatar di e444
    Registrato dal
    Jan 2012
    Messaggi
    34

    [VB.NET] Aprire un file PDF tramite menu

    Ciao a tutti.
    Ho fatto svariate ricerche ma non ho trovato quello che mi serve...

    Ho realizzato un software per lavoro, ha un menù e da questo menù ho la necessità di apre un PDF che non è altro che la guida del programma stesso.
    Solo che non riesco a capire come programmare il comando... a prescindere ora che si debba aprire tramite un pulsante su un form o da evento click da un menù a tendina.
    Ho trovato solo tutorial per creare un form per aprire i PDF tramite OpenFileDialog, ma non è quello che serve a me... perche in quel caso mi si apre la finestra di dialogo per scegliere il file.... io, invece, devo aprire quello specifico file che, tra l'altro, l'ho inserito nel "My.resources".

    Qualcuno può aiutarmi?
    Grazie.

  2. #2
    Da qualsiasi controllo lo vuoi aprire (button, menu, menu a tendina) quel controllo avrà un evento Click, eventualmente relativo alla specifica voce di menu.
    In quell' evento, supponendo che il file si chiami Documento.pdf, scrivi:

    codice:
         Dim pdf As Byte() = My.Resources.Documento       
         Using tmp As New FileStream("test.pdf", FileMode.Create)
             tmp.Write(pdf, 0, pdf.Length)
         End Using
         Process.Start("test.pdf")

    Fermo restando che più che nelle risorse sarebbe meglio (e anche più facile da aprire) inserire il .pdf direttamente nella cartella del programma.

    Fermo restando che avrai preventivamente controllato che AcrobatReader sia installato.
    Ultima modifica di eziogsv; 28-12-2017 a 01:26

  3. #3
    Utente di HTML.it L'avatar di e444
    Registrato dal
    Jan 2012
    Messaggi
    34
    Ciao eziogsv
    Grazie mille per il tuo intervento e funziona perfettamente.

    Si... ho installato AcrobatReader e ho pensato di non usare il My.Resources, ma sono sempre stato col timore che magari durante la creazione del setup, mi tralasci i file "esterni"... mentre, usando il my.resources, sono sicuro che tutto quello che ci metto, entrerà a far parte del setup.

    Cmq sia tutto ok.
    Grazie di nuovo.
    Ale.

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,178
    Io eviterei di mettere questi 'tipi' di file nel MyResources.

    Di solito l'apertura 'canonica' di un file prevede che questo sia esterno all'applicazione ed in tal caso si può usare la classe Process del namespace Diagnostics, impostando UseShellExecute a True.

    La classe Process è molto versatile, in quanto permette tra le altre cose l'uso di argomenti (in un PDF potresti indicare la pagina da visualizzare, ad esempio).
    Inoltre la proprietà UseShellExecute=True assicura che venga utilizzato il programma predefinito del computer dell'utente, qualunque esso sia, la qual cosa, se il programma è distribuito a terzi è assolutamente importante giacché nessuno può indovinare quali programmi sono installati e predefiniti nel computer 'target'.

    L'utente potrebbe avere diversi lettori PDF, ma uno solo di questi può essere quello predefinito.
    Io, ad esempio, non uso Acrobat Reader.



    https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx


  5. #5
    Come già detto da me e ribadito da gibra... My.Resources non mi pare il posto più adatto per infilarci un .pdf.

    Qualsiasi buon installer (io uso InnoSetup) non fallirà mai di inserire un file allegato dove gli dirai di inserirlo, e nessuno ti impedisce al lancio della applicazione di controllare che il file ci sia effettivamente ed eventualmente imporre una nuova installazione qualora esso sia stato cancellato.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2018 vBulletin Solutions, Inc. All rights reserved.