Pdf printen en verwijderen

Status
Niet open voor verdere reacties.

Doofenshmirt

Gebruiker
Lid geworden
3 nov 2011
Berichten
222
Hoi,

Met onderstaande code print ik een pdf bestand uit.
Maar wil eigenlijk dat als het printen klaar is het bestand verwijderd word.

Hoe doe ik dit ?

Code:
 Dim psi As New ProcessStartInfo
        psi.UseShellExecute = True
        psi.Verb = "print"
        psi.WindowStyle = ProcessWindowStyle.Hidden
        'psi.Arguments = PrintDialog1.PrinterSettings.PrinterName.ToString()
        psi.FileName = (My.Application.Info.DirectoryPath & "\BV.pdf") ' Here specify a document to be printed
        Process.Start(psi)
 
Je kan zo wachten tot het process weer is afgesloten:
[CPP] Dim psi As New ProcessStartInfo
psi.UseShellExecute = True
psi.Verb = "print"
psi.WindowStyle = ProcessWindowStyle.Hidden
''//psi.Arguments = PrintDialog1.PrinterSettings.PrinterName.ToString()
psi.FileName = (My.Application.Info.DirectoryPath & "\BV.pdf") ''//Here specify a document to be printed
Dim Process1 As Process = Process.Start(psi)

While Process1.HasExited = False
''//Niks doen zolang het nog niet klaar is
End While

''//bestand verwijderen[/CPP]

Dit zal er wel voor zorgen dat het programma bevriest zolang het process niet is afgesloten. Ik weet alleen niet zeker of het process pas afsluit als het printen is voltooid... Ik neem aan van wel.
Het verwijderen lukt denk ik wel.

Succes!:thumb:
MartinJM

[edit]
De makkelijkste manier om een bestand te verwijderen:
[CPP]My.Computer.FileSystem.DeleteFile("PATH")[/CPP]
[/edit]
 
Laatst bewerkt:
Hoi MartinJM,

Het werkt , maar er is 1 klein ding wat mis gaat.

Na het printen van de pdf , blijft het programma wat de pdf laat zien Adobe Acrobat ( kan ook een andere zijn) open staan.
Het bestand BV is gesloten alleen Acrobat blijft open .

Als ik deze sluit gaat hij verder en verwijderd dan pas het bestand.


Welk regeltje moet ik hier tussen doen ?
Het kan ook zijn dat de pdf met een ander pdf programma geopend wordt.
 
Dat komt dan door Adobe. Ik weet daar niks voor... :confused:

Wat je zou kunnen doen is het process na een x aantal seconden afsluiten, maar dan heb je kans dat het printen niet goed gaat.

MartinJM



PS: Ik ga nog wel ff wat proberen met de processen, maar geen garantie...


[edit]
Ik heb nog gekeken, maar heb helaas niks gevonden. Ik heb nog wel een andere manier om te wachten tot het process is afgesloten:
[/edit]
[CPP]
Dim psi As New ProcessStartInfo
psi.UseShellExecute = True
psi.Verb = "print"
psi.WindowStyle = ProcessWindowStyle.Hidden
''//psi.Arguments = PrintDialog1.PrinterSettings.PrinterName.ToString()
psi.FileName = "PATH" ''//Here specify a document to be printed
Dim Process1 As Process = Process.Start(psi)

Process1.WaitForExit()

''//bestand verwijderen
[/CPP]
 
Laatst bewerkt:
MartinJM ,

Heb deze code ook geprobeerd maar het zelfde resultaat , hij print maar Acrobat zelf blijft open staan.

Als ik deze met de hand sluit gaat hij pas verder.

Mocht er een andere oplossing zijn op een pdf te printen , is het ook welkom.

Ben aan het googlen geweest maar elke keer kom ik wat tegen met acrobat, maar als men die niet geinstalleerd heeft werkt het niet .
 
Is inderdaad een lastig verhaal.

Heb het opgelost , maar of ik het met een timer of bij Formleave doe ben ik nog niet uit.

Ik heb een textbox op het form gezet , en daar in haal ik Processes in op die op dat moment draaien.

Bv

Als hij nog aan het printen is , staat er dit .

Code:
Window Title:  test.pdf (BEVEILIGD) - Adobe Reader
Process Name:  AcroRd32

Als hij klaar is met printen sluit hij het pdf en dan staat er dit . ( Alleen het start scherm)
Code:
Window Title:  Adobe Reader
Process Name:  AcroRd32


Met onderstaand sluit ik Adobe
Code:
If TextBox1.Text.Contains("Window Title:  Adobe Reader") Then
            Try
                killprocess("AcroRd32")
            Catch ex As Exception

            End Try

Daarna kan ik het pdf verwijderen.

Het is misschien niet helemaal de juiste manier maar werkt wel , maar is er misschien nog een betere of andere manier om een programma aftesluiten als met Killprocess.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan