Stampare un file direttamente senza open dialog

di il
24 risposte

Stampare un file direttamente senza open dialog

Ciao a tutti, sono nuovo nel forum. Ho un problemino da risolvere . Vorrei mandare dei file pdf che si trovano all'interno di una cartella direttamente nella coda di stampa di una stampante in rete . Ho provato il seguente codice ma mi da errore .
Li ho provate tutte ma si blocca la stampa.
Il codice da me utilizzato è il seguente:

Public Shared Sub PrintPDF(ByVal path As String, ByVal printer As String)
        Dim process As Process = New Process()

        process.StartInfo.FileName = path
        process.StartInfo.Verb = "printto"
        process.StartInfo.Arguments = """" & printer & """"
        process.Start()
        process.WaitForInputIdle()
        process.Kill()
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        'SurroundingSub()
        ' SendToPrinter()
        '  SendToPrinter7()
        ' SurroundingSub22()
        PrintPDF("C:\Test.pdf", "BIXOLON SRP-350plusIII")
    End Sub


e mi restituisce il seguente errore:
An unhandled exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll

Qualcuno puo' dirmi come ovviare al seguente errore?
Vi ringrazio anticipatamente.

24 Risposte

  • Re: Stampare un file direttamente senza open dialog

    ??? ma che roba è ???
    per quanto ne so (uso pochissimo .NET) non c'è una qualche gestione autonoma dei PDF; supponendo di avere una stampante priva del relativo interprete (sono poche, ma ci sono), tocca usare un qualche programma in grado di interpretare il PDF, rasterizzarlo tipicamente, ed inviarlo alla stampante.
  • Re: Stampare un file direttamente senza open dialog

    Guarda qui https://stackoverflow.com/questions/26970825/printing-an-external-pdf-document-in-vb-net
  • Re: Stampare un file direttamente senza open dialog

    Ciao patel ho cliccato sul link che mi hai girato ma facendo varie prove non mi parte la stampa.
    Ragazzi così complicato è inviare un file pdf in stampa da percorso direttamente in una stampante di nome x senza dover aprire la finestra di dialogo?
    grazie anticipatamente
  • Re: Stampare un file direttamente senza open dialog

    massimochristian ha scritto:


    Ciao patel ho cliccato sul link che mi hai girato ma facendo varie prove non mi parte la stampa.
    Ragazzi così complicato è inviare un file pdf in stampa da percorso direttamente in una stampante di nome x senza dover aprire la finestra di dialogo?
    grazie anticipatamente
    Certo, benvenuto nel mondo della programmazione, dove TUTTO è difficile, e quello che pensi sia banale, spesso, lo è ancor più.

    E' difficilissimo quello che vuoi fare, tendenzialmente perfino (quasi) impossibile, se non vuoi (o puoi) appoggiarti a programmi di terzi.

    Dovresti scriverti il TUO Acrobar Reader e inglobarlo nel tuo programma, cosa che mi pare difficile (anche se non impossibile).

    Per stampare qualsiasi cosa, pertanto, puoi fare come si fa frequentemente: lanci a riga di comando un altro programma, il quale stamperà (forse).
  • Re: Stampare un file direttamente senza open dialog

    Grazie +m2+ pero' quello che voglio dire logicamente conosci il percorso il file è messo li , la stampante la conosci ha un nome.
    Pensavo fosse una cosa semplice ma a quanto pare non è così.
    Potete indicarmi una soluzione anche a pagamento.
    Il programmo in web ma un cliente mi ha chiesto di prendere questi file dalla cartella download è inviarli in stampa direttamente senza che qualcuno li vada a selezionare per stampare.
    Grazie ancora
  • Re: Stampare un file direttamente senza open dialog

    massimochristian ha scritto:


    Grazie +m2+ pero' quello che voglio dire logicamente conosci il percorso il file è messo li , la stampante la conosci ha un nome.
    Pensavo fosse una cosa semplice ma a quanto pare non è così.
    Potete indicarmi una soluzione anche a pagamento.
    Il programmo in web ma un cliente mi ha chiesto di prendere questi file dalla cartella download è inviarli in stampa direttamente senza che qualcuno li vada a selezionare per stampare.
    Grazie ancora
    Guarda, come accennao praticamente mai c'è qualcosa di semplice, è sempre difficilissimo.

    La domanda è: parliamo di un'applicazione che gira in locale, cioè sulla LAN, sul PC del cliente, o di una che gira WAN, in remoto, cui accedi mediante un browser ?
  • Re: Stampare un file direttamente senza open dialog

    Il file pdf generato dal mio codice web lo scarica nella cartella download. Quindi il file che sto creando stampa.exe controlla nella cartella download ogni 10 secondi se esiste un file test.pdf e lo dovrebbe mandare automaticamente in stampa ad una stampante (nomestampante) in rete locale.
    Quindi la risposta è in locale ma la stampante e su rete lan.
    Grazie ancora
  • Re: Stampare un file direttamente senza open dialog

    massimochristian ha scritto:


    Il file pdf generato dal mio codice web lo scarica nella cartella download. Quindi il file che sto creando stampa.exe controlla nella cartella download ogni 10 secondi se esiste un file test.pdf e lo dovrebbe mandare automaticamente in stampa ad una stampante (nomestampante) in rete locale.
    Quindi la risposta è in locale ma la stampante e su rete lan.
    Grazie ancora
    Bene, allora abbiamo un programma locale.
    Hai circa 5 possibilità diverse, io te ne consiglio un paio

    1) installa un vecchio foxit, esempio versione 4, e il tuo "stampa.exe" lo lancia con questi parametri
    (attenzione al noregister, altrimenti tenta ti settarlo come predefinito)
    '-noregister /t '+chr(34)+i_nomefile+chr(34)+' '+chr(34)+i_nomestampante+chr(34);
    2) metti un sumatrapdf, e lancialo con
    ' -exit-on-print -print-to '+chr(34)+i_nomestampante+chr(34)+' '+chr(34)+i_nomefile+chr(34);
    Alternative ci sono (ghostscript ad esempio), ma sono più "brigose".
  • Re: Stampare un file direttamente senza open dialog

    Ciao m2 questa riga i comando come la devo impostare per eseguirla.
    Scusami per l'osservazione e ti ringrazio per i suggerimenti.
    Nel frattempo cerco e trovo questo foxit versione precedente.
    Grazie
  • Re: Stampare un file direttamente senza open dialog

    massimochristian ha scritto:


    Ciao m2 questa riga i comando come la devo impostare per eseguirla.
    Scusami per l'osservazione e ti ringrazio per i suggerimenti.
    Nel frattempo cerco e trovo questo foxit versione precedente.
    Grazie
    Non ne ho la minima idea, non so "spazzatura" microsoft se non estremamente necessario

    Essenzialmente si tratta di due programmi per leggere i PDF, tipo adobe acrobat dei poveri, i quali consentono di stampare un PDF su una stampante scelta, da riga di comando, ove gli passerai gli opportuni parametri.

    In delphi lo farei in 10 righe con una waitexecute, in .net penso sia praticamente identico.
    Cerca qualcosa del genere "esegui un programma a riga di comando con .net".

    Se te la vedi davvero bruttissima (ma di sicuro qui altri ti potranno aiutare) te lo faccio in delphi.
    ---
    Nota: in realtà un problema c'è, ed è il tempo troppo breve di controllo del PDF.
    Potresti intercettare un momento di scaricamento, quando il file è ancora solo in parte.
    QUESTO mi sembra il problema principale del tuo approccio.

    Per bypassarlo proverei, fossi in te, ad aprire in scrittura il file, prima di stamparlo, per vedere se c'è già un lock WRITE, cicli fino a quando non ci riesci, ed a quel punto lo stampi.

    PS foxit versione precedente perchè le nuove sono gigantesche, riempiono di spazzatura, mentre le prime erano piccole, e soprattutto portabili.
    comunque anche sumatra, nel corso degli ultimi 3 o 4 anni, è divenuto affidabile abbastanza per la stampa
  • Re: Stampare un file direttamente senza open dialog

    Ciao m2 potresti aiutarmi pagamendo il tuo lavoro. Per me il tempo è prezioso e non posso perdere tempo in queste cose.
    Il mio lavoro sino adesso è creo un file che contiene la voce test.pdf e lo salvo su download.
    da li devo mandare in stampa su una stampante.
    se ti interessa scrivimi l email cosi ti contatto in privato.
    grazie anticipatamente
  • Re: Stampare un file direttamente senza open dialog

    Questo
    https://ufile.io/ivpt

    grosso modo penso faccia quello che hai chiesto.
    NON fa il controllo sulla scrittura del file, cosa che è indispensabile, ma richiede un 10 minuti di sviluppo e in questo momento sto facendo tutt'altro (devo dare "tetta" a degli avvocati)

    Bon, quindi,
    - lo lanci in una cartella, si spacchetta da solo sumatrapdf.exe (così non fai neppure fatica, in realtà potrei farlo scaricare da internet, ma sono tendenzialmente pigro)
    - devi mettere un file .ini con lo stesso nome del programma, fatto così
    
    [pdf]
    stampante='catturapdf'
    cartella='c:\scaricati'
    intervallo=3
    parti=1
    parti sta per "avvia monitoraggio".

    A quel punto se nella cartella scaricati, per qualsiasi motivo, arriva un nuovo file PDF, esso
    - viene copiato nella cartella temp, e da lì stampato
    - viene rinominato in .OLD

    I file nella cartella temp non vengono mai cancellati (in realtà mi serve per debug), ho messo un bottone manuale.

    Il problema principale è verificare il lancio durante lo scaricamento, che IN TEORIA dovrebbe essere ben gestito (ho messo un controllo), ma che richiederebbe un test che in questo momento non ho tempo di fare (cioè scaricare da remoto un file PDF).
    In locale in 3 secondi la mia macchina scrive più di 2GB di dati, quindi non è un test particolarmente attendibile.

    Vediamo se, grosso modo, è quello che intendevi.
    Non so bene cosa fare, coi file PDF, per questo li rinomino (si potrebbero cancellare, archiviare, spostare... insomma... boh...)


    PS NON ci sono controlli "antifurbi", cioè non controlla che la stampante esista, che l'intervallo di tempo sia ragionevole.
    Non controlla neppure che i PDF siano PDF (cioè se trova un file con estensione PDF lo lavora).
    Se per te è importante si possono mettere in una mezz'oretta.
  • Re: Stampare un file direttamente senza open dialog

    Ciao m2 intanto grazie per la tua disponibilità , ho aperto il file, ho creatocon note pad un file rinominandolo file.ini ed ho messo il contenuto:
    [pdf]
    stampante='Lexmark MX310 Series XL'
    cartella='C:\Users\Portatile\Downloads\'
    intervallo=3
    parti=1

    ho messo il file Test.pdf sotto la cartella Download ma non manda in stampa.
    la stampante è in rete possibile che nonostante abbia messo il nome non manda in stampa perchè non è collegata diretta?
    Grazie
  • Re: Stampare un file direttamente senza open dialog

    Non la stampa se c'è già.
    in sostanza prima lancia la mobitorizzazione poi salva uno o più file
Devi accedere o registrarti per scrivere nel forum
24 risposte