smsiberg ha scritto:
Ho fatto un programma VBnet che stampa un PDF di cui viene passato il percorso tramite il seguente codice: [...]
Ora mi interesserebbe sapere se ci sia modo di conoscere se la stampa sia andata a buon fine oppure no (perché la stampante era scollegata, l'inchiostro esaurito, etc.): qualcuno può aiutarmi?
Le due cose che chiedi non sono facilmente conciliabili, per diversi motivi: innanzitutto la gestione della coda di stampa viene gestita da Windows, quindi non puoi "metterti in attesa" di conoscere l'esito della stampa, soprattutto se essa viene avviata (come nel tuo caso) avviando un processo esterno, che aggiunge un ulteriore strato software con cui dovresti comunicare.
Quello che puoi fare è lanciare la stampa e successivamente accedere tramite le apposite API alla coda dello spooler di Windows esaminando i job che sono in coda e verificando - in base alle proprietà che ti vengono fornite - se c'è modo di riconoscere quello avviato da te, ad esempio ispezionando il nome del file in stampa e confrontandolo con quello che hai passato al programma esterno.
La questione comunque è delicata e non è così semplice come sembra; ad esempio, l'errore per mancanza di carta non è sistematico e non necessariamente causa il fallimento della stampa: è sufficiente che l'utente aggiunga la carta e prema il pulsante sulla stampante per riprendere il processo.