Afdrukken PDF automatisch laten opslaan

Status
Niet open voor verdere reacties.

ongenae

Gebruiker
Lid geworden
20 okt 2010
Berichten
124
Hallo iedereen

Ik gebruik onderstaande om een PDF aan te maken, ik wiet namelijk niet alles zelf opnieuw moeten uittekenen (labels en velden) dus neem ik een screenshot.
Alles werkt goed, maar nu wil ik dat de gebruiker NIET hoeft te zeggen waar het bestand moet op geslaan worden; dat hij dit automatisch zelf doet op bv het bureaublad.

Iemand tips?
Alvast bedankt

Code:
    'START PRINTEN VOLLEDIGEWANDENBEHEER
    '--------------------------------------


    Dim img As Bitmap
    Dim WithEvents pd As PrintDocument

    'MAAK EEN SCREENSHOT
    Function CaptureForm1() As Bitmap


        'VERBERG AFBEELDINGEN DIE NIET NODIG ZIJN
        LineShape1.Visible = False
        lblclaimnr.Visible = False
        txtclaimnr.Visible = False
        lbldossiernr.Visible = False
        txtdossiernr.Visible = False
        lblklant.Visible = False
        txtklant.Visible = False
        lblclaimsapnr.Visible = False
        txtclaimsapnr.Visible = False
        btnsave.Visible = False
        btnprint.Visible = False

        'SET AFBEELDING
        Dim g1 As Graphics = Me.CreateGraphics()
        Dim MyImage As New Bitmap(Me.ClientRectangle.Width, (Me.ClientRectangle.Height), g1)
        Dim g2 As Graphics = Graphics.FromImage(MyImage)
        Dim dc1 As IntPtr = g1.GetHdc()
        Dim dc2 As IntPtr = g2.GetHdc()
        BitBlt(dc2, 0, 0, Me.ClientRectangle.Width, (Me.ClientRectangle.Height), dc1, 0, 0, 13369376)
        g1.ReleaseHdc(dc1)
        g2.ReleaseHdc(dc2)
        'AFBEELDING OPSLAAN IN PRINTMAP INDIEN NODIG
        'MyImage.Save("K:\Dossiers-Volledigewanden\A.Claims\claim.bmp")
        Return MyImage
    End Function

    'GEEN FLAUW IDEE VAN WAT DIT DOET
    <DllImport("gdi32.DLL", EntryPoint:="BitBlt", _
    SetLastError:=True, CharSet:=CharSet.Unicode, _
    ExactSpelling:=True, _
    CallingConvention:=CallingConvention.StdCall)> _
    Private Shared Function BitBlt(ByVal hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As Integer, ByVal dwRop As System.Int32) As Boolean

        ' Leave function empty - DLLImport attribute forwards calls to MoveFile to
        ' MoveFileW in KERNEL32.DLL.
    End Function

    Private Sub btnprint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnprint.Click

        Dim dossiernr As String
        dossiernr = txtdossiernr.Text
        lblprintdate.Visible = True
        dtpclaimdatum.Visible = False

        MsgBox("Claim op dossier: " & dossiernr & " wordt afgedrukt.", MsgBoxStyle.Information, "MELDING")


        img = CaptureForm1()
        pd = New PrintDocument

        Dim claimdoc As New Volledigewandenbeheer_Claims_document

        If PrintDialog1.ShowDialog = DialogResult.OK Then

            pd.PrinterSettings.PrinterName = PrintDialog1.PrinterSettings.PrinterName

            claimdoc.SendToBack()

            Dim ps As PaperSize
            ps = pd.PrinterSettings.PaperSizes(0)
            pd.DefaultPageSettings.PaperSize = ps
            pd.DefaultPageSettings.Landscape = False
            pd.DefaultPageSettings.Margins.Top = 50
            pd.DefaultPageSettings.Margins.Left = 0

            pd.Print()

            LineShape1.Visible = True
            lblclaimnr.Visible = True
            txtclaimnr.Visible = True
            lbldossiernr.Visible = True
            txtdossiernr.Visible = True
            lblklant.Visible = True
            txtklant.Visible = True
            lblclaimsapnr.Visible = True
            txtclaimsapnr.Visible = True
            btnsave.Visible = True
            btnprint.Visible = True

        Else
        End If

        lblprintdate.Visible = False
        dtpclaimdatum.Visible = True
        claimdoc.BringToFront()
        claimdoc.Focus()

    End Sub


    'this method will be called each time when pd.printpage event occurs
    Sub pd_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) Handles pd.PrintPage

        Dim x As Integer = e.MarginBounds.X
        Dim y As Integer = e.MarginBounds.Y
        e.Graphics.DrawImage(img, x, y)
        e.HasMorePages = False
    End Sub

    'STOP PRINTEN VOLLEDIGEWANDENBEHEER
    '--------------------------------------
 
Zeker letterlijk gekopieerd van het internet? :P

Maak van dit:

[cpp]If PrintDialog1.ShowDialog = DialogResult.OK Then
pd.PrinterSettings.PrinterName = PrintDialog1.PrinterSettings.PrinterName
claimdoc.SendToBack()
Dim ps As PaperSize
ps = pd.PrinterSettings.PaperSizes(0)
pd.DefaultPageSettings.PaperSize = ps
pd.DefaultPageSettings.Landscape = False
pd.DefaultPageSettings.Margins.Top = 50
pd.DefaultPageSettings.Margins.Left = 0

pd.Print()

LineShape1.Visible = True
lblclaimnr.Visible = True
txtclaimnr.Visible = True
lbldossiernr.Visible = True
txtdossiernr.Visible = True
lblklant.Visible = True
txtklant.Visible = True
lblclaimsapnr.Visible = True
txtclaimsapnr.Visible = True
btnsave.Visible = True
btnprint.Visible = True
Else
End If[/cpp]

Dit:

[cpp]pd.PrinterSettings.PrinterName = PrintDialog1.PrinterSettings.PrinterName
claimdoc.SendToBack()
Dim ps As PaperSize
ps = pd.PrinterSettings.PaperSizes(0)
pd.DefaultPageSettings.PaperSize = ps
pd.DefaultPageSettings.Landscape = False
pd.DefaultPageSettings.Margins.Top = 50
pd.DefaultPageSettings.Margins.Left = 0

pd.Print()

LineShape1.Visible = True
lblclaimnr.Visible = True
txtclaimnr.Visible = True
lbldossiernr.Visible = True
txtdossiernr.Visible = True
lblklant.Visible = True
txtklant.Visible = True
lblclaimsapnr.Visible = True
txtclaimsapnr.Visible = True
btnsave.Visible = True
btnprint.Visible = True
[/cpp]
 
Het is dus gewoon de if lus die je wegdoet. Maar dan doet hij niets meer :confused:

Code:
Private Sub pdfsave()

        'VERBERG HET ONNODIGE
        LineShape1.Visible = False
        lblclaimnr.Visible = False
        txtclaimnr.Visible = False
        lbldossiernr.Visible = False
        txtdossiernr.Visible = False
        lblklant.Visible = False
        txtklant.Visible = False
        lblclaimsapnr.Visible = False
        txtclaimsapnr.Visible = False
        btnsave.Visible = False
        btnprint.Visible = False
        lblprintdate.Visible = True
        dtpclaimdatum.Visible = False


        pd.PrinterSettings.PrinterName = PrintDialog1.PrinterSettings.PrinterName

        Dim ps As PaperSize
        ps = pd.PrinterSettings.PaperSizes(0)
        pd.DefaultPageSettings.PaperSize = ps
        pd.DefaultPageSettings.Landscape = False
        pd.DefaultPageSettings.Margins.Top = 50
        pd.DefaultPageSettings.Margins.Left = 0

        pd.Print()


        'GEEF ALLES TERUG WEER
        LineShape1.Visible = True
        lblclaimnr.Visible = True
        txtclaimnr.Visible = True
        lbldossiernr.Visible = True
        txtdossiernr.Visible = True
        lblklant.Visible = True
        txtklant.Visible = True
        lblclaimsapnr.Visible = True
        txtclaimsapnr.Visible = True
        btnsave.Visible = True
        btnprint.Visible = True
        lblprintdate.Visible = False
        dtpclaimdatum.Visible = True


    End Sub
 
Ik ben er zeker van dat-ie die code dan wél uitvoert. Check het maar eens met een breakpoint o.i.d.
 
Raar, blijkbaar werkt enkel de call niet, als ik de code rechtstreeks in plak werkt het wel.
Maar ik weet wel niet waar hij die PDF dan opslaat? Kan je me daarbij helpen?

[CPP]

If FileCount = 0 Then

Call pdfsave()

System.IO.File.Copy(FileToCopy, NewCopy)

System.IO.File.Delete("K:\DORMA Foquin Administratie\Dossiers-Volledigewanden\A.Claims\claim.bmp")

Else

'verwijder pdf

System.IO.File.Delete("K:\DORMA Foquin Administratie\Dossiers-Volledigewanden\A.Claims\claim.bmp")


'maak nieuw document aan
Call pdfsave()

System.IO.File.Copy(FileToCopy, NewCopy)

System.IO.File.Delete("K:\DORMA Foquin Administratie\Dossiers-Volledigewanden\A.Claims\claim.bmp")


End If

[/CPP]



[CPP]

Private Sub pdfsave()

'VERBERG HET ONNODIGE
LineShape1.Visible = False
lblclaimnr.Visible = False
txtclaimnr.Visible = False
lbldossiernr.Visible = False
txtdossiernr.Visible = False
lblklant.Visible = False
txtklant.Visible = False
lblclaimsapnr.Visible = False
txtclaimsapnr.Visible = False
btnsave.Visible = False
btnprint.Visible = False
lblprintdate.Visible = True
dtpclaimdatum.Visible = False


pd.PrinterSettings.PrinterName = PrintDialog1.PrinterSettings.PrinterName

Dim ps As PaperSize
ps = pd.PrinterSettings.PaperSizes(0)
pd.DefaultPageSettings.PaperSize = ps
pd.DefaultPageSettings.Landscape = False
pd.DefaultPageSettings.Margins.Top = 50
pd.DefaultPageSettings.Margins.Left = 0

pd.Print()


'GEEF ALLES TERUG WEER
LineShape1.Visible = True
lblclaimnr.Visible = True
txtclaimnr.Visible = True
lbldossiernr.Visible = True
txtdossiernr.Visible = True
lblklant.Visible = True
txtklant.Visible = True
lblclaimsapnr.Visible = True
txtclaimsapnr.Visible = True
btnsave.Visible = True
btnprint.Visible = True
lblprintdate.Visible = False
dtpclaimdatum.Visible = True

MsgBox("end pdf")


End Sub

[/CPP]
 
Ter info: dit is de volledige code van de klasse:

[CPP]

Imports System
Imports System.Runtime.InteropServices
Imports System.Drawing
Imports System.ComponentModel
Imports System.Windows.Forms
Imports System.IO
Imports System.Windows.Forms.Form
Imports System.Drawing.Printing

Public Class Volledigewandenbeheer_Claims_document

Private Sub Volledigewandenbeheer_Claims_document_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'FOCUS OP DOSSIERNR VOOR AFDRUKKEN
txtdossiernr.Focus()

Dim datec As String
datec = dtpclaimdatum.Text

lblprintdate.Text = datec
lblprintdate.Visible = False


If chkyes.Checked = False Then
txtdirectmeasure.Enabled = False
End If


'DOCUMENT INVULLEN ZODAT ER WIJZIGINGEN KUNNEN AANGEBRACHT WORDEN

Dim ds As New DataSet
Dim da As OleDb.OleDbDataAdapter
Dim sql As String
Dim inc As Integer
Dim maxrows As Integer
Dim klantnr As String


sql = "SELECT claimnr, dossiernr, materiaalnr, datum, onderwerp, contact, street, town, phone, ordernr," & _
"article, articlenr, articlevalue, ordersize, amount, technical, sales, description, measuresneeded, proposedmeasure," & _
"klantnr, klantref, abnummer, sapomschrijving " & _
" FROM t_claims WHERE (dossiernr='" & Cdossiernr & "')"

da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "claimdoc")

maxrows = ds.Tables("claimdoc").Rows.Count
klantnr = ds.Tables("claimdoc").Rows(0).Item(20)

If maxrows = 1 Then

'VUL KLANTNAAM IN VIA NUMMER

Dim dsklant As New DataSet
Dim daklant As OleDb.OleDbDataAdapter
Dim sqlklant As String

sqlklant = "SELECT klantnr, klantnaam FROM t_klanten WHERE (klantnr=" & klantnr & ")"
daklant = New OleDb.OleDbDataAdapter(sqlklant, con)
daklant.Fill(dsklant, "klantnaam")

txtklant.Text = dsklant.Tables("klantnaam").Rows(0).Item(1)

'VUL ANDERE VELDEN VAN CLAIMS


On Error Resume Next

'REST
dtpclaimdatum.Text = ds.Tables("claimdoc").Rows(0).Item(3)
txtobject.Text = dsklant.Tables("klantnaam").Rows(0).Item(1)
txtobjectcontact.Text = ds.Tables("claimdoc").Rows(0).Item(5)
txtobjectstreet.Text = ds.Tables("claimdoc").Rows(0).Item(6)
txtobjecttown.Text = ds.Tables("claimdoc").Rows(0).Item(7)
txtobjectphone.Text = ds.Tables("claimdoc").Rows(0).Item(8)

txtproductnr.Text = ds.Tables("claimdoc").Rows(0).Item(2)
txtsapnr.Text = ds.Tables("claimdoc").Rows(0).Item(2)
txtarticlenr.Text = ds.Tables("claimdoc").Rows(0).Item(11)
txtarticlevalue.Text = ds.Tables("claimdoc").Rows(0).Item(12)

txtordersize.Text = ds.Tables("claimdoc").Rows(0).Item(13)
txtclaimedamount.Text = ds.Tables("claimdoc").Rows(0).Item(14)

chktechnical.Checked = ds.Tables("claimdoc").Rows(0).Item(15)
chksales.Checked = ds.Tables("claimdoc").Rows(0).Item(16)
txtdescription.Text = ds.Tables("claimdoc").Rows(0).Item(17)
chkyes.Checked = ds.Tables("claimdoc").Rows(0).Item(18)
txtdirectmeasure.Text = ds.Tables("claimdoc").Rows(0).Item(19)



'ONDERAAN
txtclaimnr.Text = ds.Tables("claimdoc").Rows(0).Item(0)
txtdossiernr.Text = ds.Tables("claimdoc").Rows(0).Item(1)
txtclaimsapnr.Text = ds.Tables("claimdoc").Rows(0).Item(2)

If Printclaimstatus = 1 Then

btnprint.PerformClick()

Else
End If


End If

End Sub


Private Sub chkyes_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkyes.CheckedChanged
If chkyes.Checked = False Then
txtdirectmeasure.Enabled = False
End If
If chkyes.Checked = True Then
txtdirectmeasure.Enabled = True
End If
End Sub


'START PRINTEN VOLLEDIGEWANDENBEHEER
'--------------------------------------


Dim img As Bitmap
Dim WithEvents pd As PrintDocument

'MAAK EEN SCREENSHOT
Function CaptureForm1() As Bitmap


'VERBERG AFBEELDINGEN DIE NIET NODIG ZIJN
LineShape1.Visible = False
lblclaimnr.Visible = False
txtclaimnr.Visible = False
lbldossiernr.Visible = False
txtdossiernr.Visible = False
lblklant.Visible = False
txtklant.Visible = False
lblclaimsapnr.Visible = False
txtclaimsapnr.Visible = False
btnsave.Visible = False
btnprint.Visible = False

'SET AFBEELDING
Dim g1 As Graphics = Me.CreateGraphics()
Dim MyImage As New Bitmap(Me.ClientRectangle.Width, (Me.ClientRectangle.Height), g1)
Dim g2 As Graphics = Graphics.FromImage(MyImage)
Dim dc1 As IntPtr = g1.GetHdc()
Dim dc2 As IntPtr = g2.GetHdc()
BitBlt(dc2, 0, 0, Me.ClientRectangle.Width, (Me.ClientRectangle.Height), dc1, 0, 0, 13369376)
g1.ReleaseHdc(dc1)
g2.ReleaseHdc(dc2)
'AFBEELDING OPSLAAN IN PRINTMAP INDIEN NODIG
'MyImage.Save("K:\Dossiers-Volledigewanden\A.Claims\claim.bmp")
Return MyImage
End Function

'GEEN FLAUW IDEE VAN WAT DIT DOET
<DllImport("gdi32.DLL", EntryPoint:="BitBlt", _
SetLastError:=True, CharSet:=CharSet.Unicode, _
ExactSpelling:=True, _
CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function BitBlt(ByVal hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As Integer, ByVal dwRop As System.Int32) As Boolean

' Leave function empty - DLLImport attribute forwards calls to MoveFile to
' MoveFileW in KERNEL32.DLL.
End Function

Private Sub btnprint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnprint.Click

Dim dossiernr As String
dossiernr = txtdossiernr.Text
lblprintdate.Visible = True
dtpclaimdatum.Visible = False

MsgBox("Claim op dossier: " & dossiernr & " wordt afgedrukt.", MsgBoxStyle.Information, "MELDING")


img = CaptureForm1()
pd = New PrintDocument

Dim claimdoc As New Volledigewandenbeheer_Claims_document

If PrintDialog1.ShowDialog = DialogResult.OK Then

pd.PrinterSettings.PrinterName = PrintDialog1.PrinterSettings.PrinterName

claimdoc.SendToBack()

Dim ps As PaperSize
ps = pd.PrinterSettings.PaperSizes(0)
pd.DefaultPageSettings.PaperSize = ps
pd.DefaultPageSettings.Landscape = False
pd.DefaultPageSettings.Margins.Top = 50
pd.DefaultPageSettings.Margins.Left = 0

pd.Print()

LineShape1.Visible = True
lblclaimnr.Visible = True
txtclaimnr.Visible = True
lbldossiernr.Visible = True
txtdossiernr.Visible = True
lblklant.Visible = True
txtklant.Visible = True
lblclaimsapnr.Visible = True
txtclaimsapnr.Visible = True
btnsave.Visible = True
btnprint.Visible = True

Else
End If

lblprintdate.Visible = False
dtpclaimdatum.Visible = True
claimdoc.BringToFront()
claimdoc.Focus()

End Sub


'this method will be called each time when pd.printpage event occurs
Sub pd_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) Handles pd.PrintPage

Dim x As Integer = e.MarginBounds.X
Dim y As Integer = e.MarginBounds.Y
e.Graphics.DrawImage(img, x, y)
e.HasMorePages = False
End Sub

'STOP PRINTEN VOLLEDIGEWANDENBEHEER
'--------------------------------------



Private Sub btnsave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsave.Click

'CONTROLEER OF CLAIM BESTAAT
Dim ds As New DataSet
Dim da As OleDb.OleDbDataAdapter
Dim sql As String
Dim rowcountbestaat As Integer
Dim dossiernr As String

dossiernr = txtdossiernr.Text

'HAAL KLANTNR OP OM OP TE SLAAN IN DATABASE

Dim zoekwaarde As String
Dim klantnr As String
zoekwaarde = txtklant.Text

sql = "SELECT klantnr, klanttel, klantfax FROM t_klanten WHERE (klantnaam='" & zoekwaarde & "')"
da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "klantnr")

klantnr = ds.Tables("klantnr").Rows(0).Item(0)

'TEL AANTAL RIJEN VAN DE CLAIM OP DIT DOSSIERNUMMER
sql = "SELECT * FROM t_claims WHERE (dossiernr='" & dossiernr & "')"
da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "controleerclaimbestaat")
rowcountbestaat = ds.Tables("controleerclaimbestaat").Rows.Count


'KIJK OF CLAIM BESTAAT, ALS BESTELLING BESTAAT=OPSLAAN; ALS BESTELLING NIET BESTAAT=TOEVOEGEN

If rowcountbestaat = 1 Then

'NIEUWE OPSLAAN
sql = "SELECT claimnr, dossiernr, materiaalnr, datum, onderwerp, contact, street, town, phone, ordernr," & _
"article, articlenr, articlevalue, ordersize, amount, technical, sales, description, measuresneeded, proposedmeasure," & _
"klantnr, klantref, abnummer, sapomschrijving, autonr" & _
" FROM t_claims WHERE (dossiernr='" & Cdossiernr & "')"

da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "claimdoc")

Dim cb As New OleDb.OleDbCommandBuilder(da)


'TOE TE VOEGEN VELDEN
On Error Resume Next

ds.Tables("claimdoc").Rows(0).Item(3) = dtpclaimdatum.Text
ds.Tables("claimdoc").Rows(0).Item(4) = txtobject.Text
ds.Tables("claimdoc").Rows(0).Item(5) = txtobjectcontact.Text
ds.Tables("claimdoc").Rows(0).Item(6) = txtobjectstreet.Text
ds.Tables("claimdoc").Rows(0).Item(7) = txtobjecttown.Text
ds.Tables("claimdoc").Rows(0).Item(8) = txtobjectphone.Text

ds.Tables("claimdoc").Rows(0).Item(9) = txtproductnr.Text
ds.Tables("claimdoc").Rows(0).Item(10) = txtsapnr.Text
ds.Tables("claimdoc").Rows(0).Item(11) = txtarticlenr.Text
ds.Tables("claimdoc").Rows(0).Item(12) = txtarticlevalue.Text

ds.Tables("claimdoc").Rows(0).Item(13) = txtordersize.Text
ds.Tables("claimdoc").Rows(0).Item(14) = txtclaimedamount.Text

ds.Tables("claimdoc").Rows(0).Item(15) = chktechnical.Checked
ds.Tables("claimdoc").Rows(0).Item(16) = chksales.Checked
ds.Tables("claimdoc").Rows(0).Item(17) = txtdescription.Text
ds.Tables("claimdoc").Rows(0).Item(18) = chkyes.Checked
ds.Tables("claimdoc").Rows(0).Item(19) = txtdirectmeasure.Text


'UPDATE BESTELLINGEN
da.Update(ds, "claimdoc")

dossiernr = txtdossiernr.Text
lblprintdate.Visible = True
dtpclaimdatum.Visible = False
txtdossiernr.Focus()

MsgBox("De claim op dossiernummer " & dossiernr & " is toegevoegd/aangepast.", MsgBoxStyle.Information, "MELDING")



'PDF OPSLAAN

'KIJK OF PDF AL BESTAAT

Dim basismap As String
Dim dossier As String
Dim filename As String
Dim FileCount As Integer
Dim FileToCopy As String
Dim NewCopy As String

On Error Resume Next

basismap = "K:\Dossiers-Volledigewanden\A.Claims\"
dossier = txtdossiernr.Text

filename = "\claim.bmp"
FileToCopy = "K:\Dossiers-Volledigewanden\A.Claims\claim.bmp"
NewCopy = basismap & dossier & filename
FileCount = Directory.GetFiles(basismap & dossier & filename).Length
If FileCount = 0 Then

Call pdfsave()

System.IO.File.Copy(FileToCopy, NewCopy)

System.IO.File.Delete("K:\Dossiers-Volledigewanden\A.Claims\claim.bmp")

Else

'verwijder pdf

System.IO.File.Delete("K:\Dossiers-Volledigewanden\A.Claims\claim.bmp")


'maak nieuw document aan
Call pdfsave()

System.IO.File.Copy(FileToCopy, NewCopy)

System.IO.File.Delete("K:\Dossiers-Volledigewanden\A.Claims\claim.bmp")


End If


Else
End If



End Sub


Public Sub pdfsave()

'VERBERG HET ONNODIGE
LineShape1.Visible = False
lblclaimnr.Visible = False
txtclaimnr.Visible = False
lbldossiernr.Visible = False
txtdossiernr.Visible = False
lblklant.Visible = False
txtklant.Visible = False
lblclaimsapnr.Visible = False
txtclaimsapnr.Visible = False
btnsave.Visible = False
btnprint.Visible = False
lblprintdate.Visible = True
dtpclaimdatum.Visible = False

MsgBox("0")

pd.PrinterSettings.PrinterName = PrintDialog1.PrinterSettings.PrinterName

Dim ps As PaperSize
ps = pd.PrinterSettings.PaperSizes(0)
pd.DefaultPageSettings.PaperSize = ps
pd.DefaultPageSettings.Landscape = False
pd.DefaultPageSettings.Margins.Top = 50
pd.DefaultPageSettings.Margins.Left = 0

MsgBox("1")

pd.Print()

MsgBox("2")

'GEEF ALLES TERUG WEER
LineShape1.Visible = True
lblclaimnr.Visible = True
txtclaimnr.Visible = True
lbldossiernr.Visible = True
txtdossiernr.Visible = True
lblklant.Visible = True
txtklant.Visible = True
lblclaimsapnr.Visible = True
txtclaimsapnr.Visible = True
btnsave.Visible = True
btnprint.Visible = True
lblprintdate.Visible = False
dtpclaimdatum.Visible = True

MsgBox("3")


End Sub


End Class

[/CPP]
 
Je roept functies dan ook gewoon zo aan:

[CPP]pdfsave()[/CPP] ;)

Het is toch de bedoeling dat-ie hem print? Het gaat toch niet over opslaan;)
 
Wel ik heb een knop printen waarbij hij een screenshot neemt van het formulier en dit afdrukt naar de "standaard" / geselecteerde printer.

Nu wil ik ook een knop opslaan, waarbij hij terug een screenshot neemt en dit automatisch in een pdf document opslaat in een bepaalde map.
Dit document wordt dan later automatisch via mail verstuurd.

Dus eigenlijk ben ik nu op zoek hoe ik een pdf document kan opslaan; dus NIET afdrukken. :P
 
Werkt dat screenshot nemen al? Heb je een afbeelding-object in je code?
 
Met mijn code in de 1ste post werkt het perfect, hij neemt een screenshot en laat mij een printer selecteren waarna hij vervolgens afdrukt naar die printer.
Nu wil ik enkel dat hij het opslaat in een pdf in een map ipv het af te drukken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan