Probleme mit PDFsharp

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Facebamm.

    Probleme mit PDFsharp

    Hallo Zusammen,
    ich habe in der letzten zeit mal wieder angefangen zu Programmieren. Soll heißen habe das jetzt schon lange Zeit nicht mehr getan. Ich selbst komme aber soweit ganz gut klar bis auf eine Dache die PDFSharp betreffend ist.

    Zum Problem.

    Das Aufrufen und erstellen einer PDF mit PDFSharp in der Runtime funktioniert bei mir tadellos. Einziges Problem ist wenn ich die Form geschlossen habe in der ich mit PDFsharp gearbeitet habe und diese Form wieder benutzen will um wieder eine Pdf zu erstellen bekomm ich folgende Fehlermeldung und weis nicht wie ich damit umgehen soll.

    "Ein Ausnahmefehler des Typs "System.NullReferenceException" ist in PdfSharp-wpf.dll aufgetreten."

    Daher meine frage kann man ein Dokument irgendwie schließen oder ähnliches, so das wenn man das ganze wieder starten möchte wieder ganz von vorne beginnt?

    Spoiler anzeigen

    Quellcode

    1. Imports System.Data.OleDb
    2. Imports System.IO
    3. Imports System.Diagnostics
    4. Imports PdfSharp
    5. Imports PdfSharp.Drawing
    6. Imports PdfSharp.Pdf
    7. Imports PdfSharp.Pdf.IO
    8. 'Imports System.Data.OleDb
    9. Imports System.Drawing.Printing
    10. Imports System
    11. Imports System.Collections.Generic
    12. Imports System.ComponentModel
    13. Imports System.Data
    14. Imports System.Drawing
    15. Imports System.Data.SqlClient
    16. Imports System.Windows.Forms
    17. Public Class frmEinkauf
    18. Public document As New PdfDocument()
    19. Public page As PdfPage = document.AddPage()
    20. Public gfx As XGraphics = XGraphics.FromPdfPage(page)
    21. Public font2 As New XFont("Arial", 20, XFontStyle.BoldItalic)
    22. Public font1 As New XFont("Arial", 10, XFontStyle.Regular)
    23. Private con As New OleDbConnection
    24. Private cmd As New OleDbCommand
    25. Private reader As OleDbDataReader
    26. Private pnummer As New List(Of Integer)
    27. Private BenutzerNr
    28. Private TaetigkeitNr
    29. Private Suchtext
    30. Private Abmessung(4) As String
    31. Public datumAnforderung As Date = Now
    32. Public Anforderer As String
    33. Public Ampel As String
    34. Public Gruen = Color.FromArgb(0, 255, 64)
    35. Public Gelb = Color.FromArgb(255, 255, 0)
    36. Public Rot = Color.FromArgb(255, 0, 0)
    37. Public BANr As Integer 'Speichert die Bestellanfrage Nr
    38. Public BNr As Integer 'Speichert die Bestellnummer
    39. Private Sub frmEinkauf_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    40. 'Stellt den Speicherort der Datenbank zu Verfügung
    41. con.ConnectionString =
    42. "Provider=Microsoft.ACE.OLEDB.12.0;" & frmLogin.dbpfad
    43. cmd.Connection = con
    44. ' Erzeugt die Spaltenköpfe für das DataGridView Element
    45. datAnforderung.Columns.Add("DB_BestNr", "Bestell Nr.:")
    46. datAnforderung.Columns.Add("DB_BestAuftragsNr", "AB-Nr.")
    47. datAnforderung.Columns.Add("DB_BestMatForm", "Form")
    48. datAnforderung.Columns.Add("DB_BestWerkstoff", "Material / Werkstoff")
    49. datAnforderung.Columns.Add("DB_BestAbmessung", "Abmessung")
    50. datAnforderung.Columns.Add("DB_BestOberflaeche", "Oberfläche")
    51. datAnforderung.Columns.Add("DB_BestMenge", "Menge")
    52. datAnforderung.Columns.Add("DB_BestZeugnis_2", "Zeugnis 2.1")
    53. datAnforderung.Columns.Add("DB_BestZeugnis_3", "Zeugnis 3.2")
    54. datAnforderung.Columns.Add("DB_BestFDA", "FDA")
    55. datAnforderung.Columns.Add("DB_BestBemerkung", "Bemerkung")
    56. datAnforderung.Columns.Add("DB_BestAmpel", "Ampel")
    57. 'datAnforderung.Columns("DB_BestAmpel").Visible = False
    58. ' Stellt die Breite der Spalten ein
    59. datAnforderung.Columns("DB_BestNr").Width = 50
    60. datAnforderung.Columns("DB_BestAuftragsNr").Width = 80
    61. datAnforderung.Columns("DB_BestMatForm").Width = 120
    62. datAnforderung.Columns("DB_BestWerkstoff").Width = 180
    63. datAnforderung.Columns("DB_BestAbmessung").Width = 130
    64. datAnforderung.Columns("DB_BestOberflaeche").Width = 150
    65. datAnforderung.Columns("DB_BestMenge").Width = 70
    66. datAnforderung.Columns("DB_BestZeugnis_2").Width = 70
    67. datAnforderung.Columns("DB_BestZeugnis_3").Width = 70
    68. datAnforderung.Columns("DB_BestFDA").Width = 70
    69. datAnforderung.Columns("DB_BestBemerkung").Width = 332
    70. Me.datAnforderung.Columns("DB_BestAuftragsNr").DefaultCellStyle _
    71. .Alignment = DataGridViewContentAlignment.MiddleCenter
    72. Me.datAnforderung.Columns("DB_BestAbmessung").DefaultCellStyle _
    73. .Alignment = DataGridViewContentAlignment.MiddleCenter
    74. Me.datAnforderung.Columns("DB_BestMenge").DefaultCellStyle _
    75. .Alignment = DataGridViewContentAlignment.MiddleCenter
    76. Me.datAnforderung.Columns("DB_BestZeugnis_2").DefaultCellStyle _
    77. .Alignment = DataGridViewContentAlignment.MiddleCenter
    78. Me.datAnforderung.Columns("DB_BestZeugnis_3").DefaultCellStyle _
    79. .Alignment = DataGridViewContentAlignment.MiddleCenter
    80. Me.datAnforderung.Columns("DB_BestFDA").DefaultCellStyle _
    81. .Alignment = DataGridViewContentAlignment.MiddleCenter
    82. AlleSehenAnforderung() 'Verweist auf ein Standart Routine
    83. 'Textbox_Sperren()
    84. Tabelle_Sortieren()
    85. 'Combo_Werkstoff_und_Form_Sperren()
    86. 'Combobox_Material_Füllen()
    87. 'Ampelfarben_Zurücksetzen()
    88. ' txtABNr.Focus()
    89. datBeschaffung_Einrichten()
    90. End Sub
    91. Private Sub Button1_Click(sender As Object, e As EventArgs)
    92. Dim Best_Spalten(12) As String
    93. Dim zeile As Integer
    94. Dim document As New PdfDocument()
    95. zeile = -300
    96. 'Einige Dokument - Eigenschaften festlegen
    97. document.Info.Title = "PDF-Experimente"
    98. document.Info.CreationDate = Date.Now
    99. document.Info.Author = "Meyer Müller"
    100. document.Info.Subject = "Mein erster Test"
    101. 'Die erste Seite einfügen
    102. Dim page As PdfPage = document.AddPage()
    103. 'Eine XGraphics - Objekt erzeugen (Pendant zum GDI+ Graphics-Objekt)
    104. Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
    105. 'Schriftart erstellen
    106. Dim font As New XFont("Arial", 20, XFontStyle.BoldItalic)
    107. Dim font1 As New XFont("Arial", 10, XFontStyle.Regular)
    108. Ausgabe:
    109. Try
    110. con.Open()
    111. cmd.CommandText = "SELECT * FROM DB_Bestellwesen WHERE" &
    112. " DB_BestStatus LIKE '" & "x" & "'" & " ORDER BY DB_BestNr"
    113. 'Bestelldaten Zeilenweise auslesen
    114. reader = cmd.ExecuteReader()
    115. datBeschaffung.Rows.Clear()
    116. pnummer.Clear()
    117. Do While reader.Read()
    118. Best_Spalten(1) = reader("DB_BestMatform")
    119. Best_Spalten(2) = reader("DB_BestWerkstoff")
    120. Best_Spalten(3) = reader("DB_BestAbmessung")
    121. Best_Spalten(4) = reader("DB_BestOberflaeche")
    122. Best_Spalten(5) = reader("DB_BestMenge")
    123. Best_Spalten(6) = reader("DB_BestZeugnis_2")
    124. Best_Spalten(7) = reader("DB_BestZeugnis_3")
    125. Best_Spalten(8) = reader("DB_BestFDA")
    126. Best_Spalten(9) = reader("DB_BestAuftragsNr")
    127. Best_Spalten(10) = reader("DB_BestNr")
    128. pnummer.Add(reader("DB_BestNr"))
    129. 'Zeile BEschreiben
    130. Best_Spalten(0) = Best_Spalten(1) + " " + Best_Spalten(2) + " " + Best_Spalten(3) + " " + Best_Spalten(4) + " " + Best_Spalten(5) + " " + Best_Spalten(6) + " " + Best_Spalten(7) + " " + Best_Spalten(8) + " " + Best_Spalten(9) + " " + Best_Spalten(10)
    131. gfx.DrawString(Best_Spalten(0), font1, XBrushes.Black,
    132. New XRect(50, zeile, page.Width, page.Height), XStringFormats.BottomLeft)
    133. zeile = zeile + 20
    134. Loop
    135. reader.Close()
    136. Catch ex As Exception
    137. MessageBox.Show(ex.Message)
    138. End Try
    139. con.Close()
    140. AlleSehenBeschaffung()
    141. AlleSehenAnforderung()
    142. Tabelle_Sortieren()
    143. Umwandlung_in_eine_Anfrage()
    144. 'Textbox_Leeren()
    145. 'Tabelle_Sortieren()
    146. gfx.DrawString("AJS-GmbH", font, XBrushes.Black,
    147. New XRect(50, -150, page.Width, page.Height), XStringFormats.BottomLeft)
    148. gfx.DrawString("Hallo, liebe Leser!", font, XBrushes.Black,
    149. New XRect(10, 10, page.Width, page.Height), XStringFormats.Center)
    150. 'Datei sichern und anzeigen
    151. Const filename As String = "anforderungen\Test.pdf"
    152. document.Save(filename)
    153. Process.Start(filename)
    154. End Sub
    155. Private Sub AlleSehenAnforderung()
    156. Try
    157. con.Open()
    158. cmd.CommandText = "SELECT * FROM DB_Bestellwesen WHERE" &
    159. " DB_BestStatus LIKE '" & "A" & "'" & " ORDER BY DB_BestNr"
    160. AusgabeAnforderung()
    161. Catch ex As Exception
    162. MessageBox.Show(ex.Message)
    163. End Try
    164. con.Close()
    165. 'Textbox_Leeren()
    166. Tabelle_Sortieren()
    167. End Sub
    168. Private Sub AusgabeAnforderung()
    169. Dim i
    170. 'DataGrid Füllen
    171. reader = cmd.ExecuteReader()
    172. datAnforderung.Rows.Clear()
    173. pnummer.Clear()
    174. Do While reader.Read()
    175. datAnforderung.Rows.Add(reader("DB_BestNr"), reader("DB_BestAuftragsNr"), reader("DB_BestMatForm"), reader("DB_BestWerkstoff"),
    176. reader("DB_BestAbmessung"), reader("DB_BestOberflaeche"), reader("DB_BestMenge"), reader("DB_BestZeugnis_2"),
    177. reader("DB_BestZeugnis_3"), reader("DB_BestFDA"), reader("DB_BestBemerkung"), reader("DB_BestAmpel"))
    178. pnummer.Add(reader("DB_BestNr"))
    179. Loop
    180. reader.Close()
    181. 'Zeilen mit den unterschiedlichen Prio Farben Kennzeichnen
    182. For i = 0 To datAnforderung.Rows.Count - 1 '//angefangen von erster Zeile weil die erste Zeile die Titelzeile ist - ZeilenIndex fangt mit 0 an
    183. If datAnforderung.Item(11, i).Value = "Gr" Then '//(1,i) hier 1 mit deinem Index der Spalte wo der Marker auftaucht - Spaltenindex fangt mit 0 an
    184. datAnforderung.Rows(i).DefaultCellStyle.BackColor = Color.Green
    185. End If
    186. If datAnforderung.Item(11, i).Value = "Ge" Then '//(1,i) hier 1 mit deinem Index der Spalte wo der Marker auftaucht - Spaltenindex fangt mit 0 an
    187. datAnforderung.Rows(i).DefaultCellStyle.BackColor = Color.Yellow
    188. End If
    189. If datAnforderung.Item(11, i).Value = "Ro" Then '//(1,i) hier 1 mit deinem Index der Spalte wo der Marker auftaucht - Spaltenindex fangt mit 0 an
    190. datAnforderung.Rows(i).DefaultCellStyle.BackColor = Color.Red
    191. End If
    192. Next i
    193. End Sub
    194. Private Sub AusgabeBeschaffung()
    195. Dim i
    196. 'DataGrid Füllen
    197. reader = cmd.ExecuteReader()
    198. datBeschaffung.Rows.Clear()
    199. pnummer.Clear()
    200. Do While reader.Read()
    201. datBeschaffung.Rows.Add(reader("DB_BestNr"), reader("DB_BestAuftragsNr"), reader("DB_BestMatForm"), reader("DB_BestWerkstoff"),
    202. reader("DB_BestAbmessung"), reader("DB_BestOberflaeche"), reader("DB_BestMenge"), reader("DB_BestZeugnis_2"),
    203. reader("DB_BestZeugnis_3"), reader("DB_BestFDA"), reader("DB_BestBemerkung"), reader("DB_BestAmpel"))
    204. pnummer.Add(reader("DB_BestNr"))
    205. Loop
    206. reader.Close()
    207. End Sub
    208. Private Sub AlleSehenBeschaffung()
    209. Try
    210. con.Open()
    211. cmd.CommandText = "SELECT * FROM DB_Bestellwesen WHERE" &
    212. " DB_BestStatus LIKE '" & "x" & "'" & " ORDER BY DB_BestNr"
    213. AusgabeBeschaffung()
    214. Catch ex As Exception
    215. MessageBox.Show(ex.Message)
    216. End Try
    217. con.Close()
    218. 'Textbox_Leeren()
    219. Tabelle_Sortieren()
    220. End Sub
    221. Private Sub Tabelle_Sortieren()
    222. datAnforderung.Sort(datAnforderung.Columns(0), System.ComponentModel.ListSortDirection.Ascending)
    223. ' datBeschaffung.Sort(datBeschaffung.Columns(0), System.ComponentModel.ListSortDirection.Ascending)
    224. End Sub
    225. Private Sub datBeschaffung_Einrichten()
    226. 'Stellt den Speicherort der Datenbank zu Verfügung
    227. con.ConnectionString =
    228. "Provider=Microsoft.ACE.OLEDB.12.0;" & frmLogin.dbpfad
    229. cmd.Connection = con
    230. ' Erzeugt die Spaltenköpfe für das DataGridView Element
    231. datBeschaffung.Columns.Add("DB_BestNr", "Bestell Nr.:")
    232. datBeschaffung.Columns.Add("DB_BestAuftragsNr", "AB-Nr.")
    233. datBeschaffung.Columns.Add("DB_BestMatForm", "Form")
    234. datBeschaffung.Columns.Add("DB_BestWerkstoff", "Material / Werkstoff")
    235. datBeschaffung.Columns.Add("DB_BestAbmessung", "Abmessung")
    236. datBeschaffung.Columns.Add("DB_BestOberflaeche", "Oberfläche")
    237. datBeschaffung.Columns.Add("DB_BestMenge", "Menge")
    238. datBeschaffung.Columns.Add("DB_BestZeugnis_2", "Zeugnis 2.1")
    239. datBeschaffung.Columns.Add("DB_BestZeugnis_3", "Zeugnis 3.2")
    240. datBeschaffung.Columns.Add("DB_BestFDA", "FDA")
    241. datBeschaffung.Columns.Add("DB_BestBemerkung", "Bemerkung")
    242. 'datBenutzer.Columns("DB_BenUser").Visible = False
    243. ' Stellt die Breite der Spalten ein
    244. datBeschaffung.Columns("DB_BestNr").Width = 50
    245. datBeschaffung.Columns("DB_BestAuftragsNr").Width = 80
    246. datBeschaffung.Columns("DB_BestMatForm").Width = 120
    247. datBeschaffung.Columns("DB_BestWerkstoff").Width = 180
    248. datBeschaffung.Columns("DB_BestAbmessung").Width = 130
    249. datBeschaffung.Columns("DB_BestOberflaeche").Width = 150
    250. datBeschaffung.Columns("DB_BestMenge").Width = 70
    251. datBeschaffung.Columns("DB_BestZeugnis_2").Width = 70
    252. datBeschaffung.Columns("DB_BestZeugnis_3").Width = 70
    253. datBeschaffung.Columns("DB_BestFDA").Width = 70
    254. datBeschaffung.Columns("DB_BestBemerkung").Width = 332
    255. Me.datBeschaffung.Columns("DB_BestAuftragsNr").DefaultCellStyle _
    256. .Alignment = DataGridViewContentAlignment.MiddleCenter
    257. Me.datBeschaffung.Columns("DB_BestAbmessung").DefaultCellStyle _
    258. .Alignment = DataGridViewContentAlignment.MiddleCenter
    259. Me.datBeschaffung.Columns("DB_BestMenge").DefaultCellStyle _
    260. .Alignment = DataGridViewContentAlignment.MiddleCenter
    261. Me.datBeschaffung.Columns("DB_BestZeugnis_2").DefaultCellStyle _
    262. .Alignment = DataGridViewContentAlignment.MiddleCenter
    263. Me.datBeschaffung.Columns("DB_BestZeugnis_3").DefaultCellStyle _
    264. .Alignment = DataGridViewContentAlignment.MiddleCenter
    265. Me.datBeschaffung.Columns("DB_BestFDA").DefaultCellStyle _
    266. .Alignment = DataGridViewContentAlignment.MiddleCenter
    267. AlleSehenBeschaffung() 'Verweist auf ein Standart Routine
    268. 'Textbox_Sperren()
    269. 'Tabelle_Sortieren()
    270. 'Combo_Werkstoff_und_Form_Sperren()
    271. 'Combobox_Material_Füllen()
    272. 'Ampelfarben_Zurücksetzen()
    273. 'txtABNr.Focus()
    274. End Sub
    275. Private Sub cmdSchliessen_Click(sender As Object, e As EventArgs) Handles cmdSchliessen.Click
    276. frmZentrale.Show()
    277. Me.Hide()
    278. End Sub
    279. Private Sub datAnforderung_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles datAnforderung.CellClick
    280. Dim BestellNr
    281. Dim anzahl
    282. BestellNr = Me.datAnforderung.Item(0, datAnforderung.CurrentRow.Index).Value
    283. Try
    284. con.Open()
    285. cmd.CommandText = "UPDATE DB_Bestellwesen SET " &
    286. " DB_BestStatus = '" & "X" & "'
    287. WHERE DB_BestNr = " & BestellNr
    288. 'MessageBox.Show(cmd.CommandText)
    289. anzahl = cmd.ExecuteNonQuery()
    290. If anzahl > 0 Then
    291. 'MessageBox.Show("Datensatz wurde geändert und aktualisiert!")
    292. End If
    293. Catch ex As Exception
    294. MessageBox.Show(ex.Message)
    295. End Try
    296. con.Close()
    297. AlleSehenBeschaffung()
    298. AlleSehenAnforderung()
    299. Tabelle_Sortieren()
    300. End Sub
    301. Private Sub datAnforderung_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles datAnforderung.CellContentClick
    302. End Sub
    303. Private Sub datBeschaffung_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles datBeschaffung.CellContentClick
    304. End Sub
    305. Private Sub datBeschaffung_DoubleClick(sender As Object, e As EventArgs) Handles datBeschaffung.DoubleClick
    306. Dim BestellNr
    307. Dim anzahl
    308. BestellNr = Me.datBeschaffung.Item(0, datBeschaffung.CurrentRow.Index).Value
    309. Try
    310. con.Open()
    311. cmd.CommandText = "UPDATE DB_Bestellwesen SET " &
    312. " DB_BestStatus = '" & "A" & "'
    313. WHERE DB_BestNr = " & BestellNr
    314. 'MessageBox.Show(cmd.CommandText)
    315. anzahl = cmd.ExecuteNonQuery()
    316. If anzahl > 0 Then
    317. MessageBox.Show("Datensatz wurde geändert und aktualisiert!")
    318. End If
    319. Catch ex As Exception
    320. MessageBox.Show(ex.Message)
    321. End Try
    322. con.Close()
    323. AlleSehenBeschaffung()
    324. AlleSehenAnforderung()
    325. Tabelle_Sortieren()
    326. End Sub
    327. Private Sub cmdAktuell_Click(sender As Object, e As EventArgs) Handles cmdAktuell.Click
    328. AlleSehenBeschaffung()
    329. AlleSehenAnforderung()
    330. Tabelle_Sortieren()
    331. End Sub
    332. Private Sub Umwandlung_in_eine_Anfrage()
    333. 'Dim BestellNr
    334. Dim anzahl
    335. 'BestellNr = Me.datAnforderung.Item(0, datAnforderung.CurrentRow.Index).Value
    336. Try
    337. con.Open()
    338. cmd.CommandText = "UPDATE DB_Bestellwesen SET " &
    339. " DB_BestStatus = '" & "An" & "'
    340. WHERE DB_BestStatus = '" & "X" & "'"
    341. 'MessageBox.Show(cmd.CommandText)
    342. anzahl = cmd.ExecuteNonQuery()
    343. If anzahl > 0 Then
    344. 'MessageBox.Show("Datensatz wurde geändert und aktualisiert!")
    345. End If
    346. Catch ex As Exception
    347. MessageBox.Show(ex.Message, "hier")
    348. End Try
    349. con.Close()
    350. AlleSehenBeschaffung()
    351. AlleSehenAnforderung()
    352. Tabelle_Sortieren()
    353. End Sub
    354. Private Sub cmdAnfragen_Click(sender As Object, e As EventArgs) Handles cmdAnfragen.Click
    355. Dim Anf_Spalten(12) As String
    356. Dim zeile As Integer
    357. Dim ZeilenNr As Integer
    358. Dim Tab(10) As Integer
    359. Dim strZeilenNr As String
    360. Dim Seite As Integer
    361. 'Einige Dokument - Eigenschaften festlegen
    362. document.Info.Title = "PDF-Bestellanfrage"
    363. document.Info.CreationDate = Date.Now
    364. document.Info.Author = "Roland Rommersbach"
    365. document.Info.Subject = "Version 2.0"
    366. 'Umgebung Laden
    367. Bestellanforderung_Nr_ermitteln()
    368. Hintergrund_Seite_1_laden()
    369. Anfrage_Formular()
    370. 'Werte für den Start bestimmen
    371. ZeilenNr = 0
    372. Tab(1) = 50
    373. zeile = -380
    374. Seite = 0
    375. Ausgabe:
    376. Try
    377. con.Open()
    378. cmd.CommandText = "SELECT * FROM DB_Bestellwesen WHERE" &
    379. " DB_BestStatus LIKE '" & "x" & "'" & " ORDER BY DB_BestNr"
    380. 'Bestelldaten Zeilenweise auslesen
    381. reader = cmd.ExecuteReader()
    382. datBeschaffung.Rows.Clear()
    383. pnummer.Clear()
    384. Do While reader.Read()
    385. Anf_Spalten(1) = reader("DB_BestMatform")
    386. Anf_Spalten(2) = reader("DB_BestWerkstoff")
    387. Anf_Spalten(3) = reader("DB_BestAbmessung")
    388. Anf_Spalten(4) = reader("DB_BestOberflaeche")
    389. Anf_Spalten(5) = reader("DB_BestMenge")
    390. Anf_Spalten(6) = reader("DB_BestZeugnis_2")
    391. Anf_Spalten(7) = reader("DB_BestZeugnis_3")
    392. Anf_Spalten(8) = reader("DB_BestFDA")
    393. Anf_Spalten(9) = reader("DB_BestAuftragsNr")
    394. Anf_Spalten(10) = reader("DB_BestNr")
    395. pnummer.Add(reader("DB_BestNr"))
    396. ZeilenNr = ZeilenNr + 10
    397. strZeilenNr = CStr(ZeilenNr)
    398. 'MessageBox.Show(Anf_Spalten(0))
    399. 'Zeile BEschreiben
    400. Anf_Spalten(0) = strZeilenNr
    401. gfx.DrawString(Anf_Spalten(0), font1, XBrushes.Black,
    402. New XRect(50, zeile, page.Width, page.Height), XStringFormats.BottomLeft)
    403. Anf_Spalten(0) = Anf_Spalten(5)
    404. gfx.DrawString(Anf_Spalten(0), font1, XBrushes.Black,
    405. New XRect(325, zeile, page.Width, page.Height), XStringFormats.BottomLeft)
    406. Anf_Spalten(0) = Anf_Spalten(1) + " " + Anf_Spalten(3) + "mm"
    407. gfx.DrawString(Anf_Spalten(0), font1, XBrushes.Black,
    408. New XRect(95, zeile, page.Width, page.Height), XStringFormats.BottomLeft)
    409. zeile = zeile + 15
    410. Anf_Spalten(0) = Anf_Spalten(2) + " " + Anf_Spalten(4)
    411. gfx.DrawString(Anf_Spalten(0), font1, XBrushes.Black,
    412. New XRect(95, zeile, page.Width, page.Height), XStringFormats.BottomLeft)
    413. zeile = zeile + 15
    414. Anf_Spalten(0) = "Kommision: " + "AB-" + Anf_Spalten(9)
    415. gfx.DrawString(Anf_Spalten(0), font1, XBrushes.Black,
    416. New XRect(95, zeile, page.Width, page.Height), XStringFormats.BottomLeft)
    417. zeile = zeile + 15
    418. If Anf_Spalten(6) = "X" Then
    419. Anf_Spalten(0) = "Zeugnis nach 2.2"
    420. gfx.DrawString(Anf_Spalten(0), font1, XBrushes.Black,
    421. New XRect(95, zeile, page.Width, page.Height), XStringFormats.BottomLeft)
    422. zeile = zeile + 15
    423. End If
    424. If Anf_Spalten(7) = "X" Then
    425. Anf_Spalten(0) = "Zeugnis nach 3.1"
    426. gfx.DrawString(Anf_Spalten(0), font1, XBrushes.Black,
    427. New XRect(95, zeile, page.Width, page.Height), XStringFormats.BottomLeft)
    428. zeile = zeile + 15
    429. End If
    430. If Anf_Spalten(8) = "X" Then
    431. Anf_Spalten(0) = "Bescheinigung nach FDA"
    432. gfx.DrawString(Anf_Spalten(0), font1, XBrushes.Black,
    433. New XRect(95, zeile, page.Width, page.Height), XStringFormats.BottomLeft)
    434. zeile = zeile + 15
    435. End If
    436. zeile = zeile + 5
    437. ' MessageBox.Show(zeile)
    438. If zeile > "-150" Then
    439. Seite = Seite + 1
    440. document.AddPage()
    441. gfx = XGraphics.FromPdfPage(document.Pages(Seite))
    442. Hintergrund_Seite_2_laden()
    443. Anfrage_Formular_Seite_02()
    444. zeile = -645
    445. End If
    446. Loop
    447. reader.Close()
    448. Catch ex As Exception
    449. MessageBox.Show(ex.Message)
    450. End Try
    451. con.Close()
    452. AlleSehenBeschaffung()
    453. AlleSehenAnforderung()
    454. Tabelle_Sortieren()
    455. ' document.AddPage()
    456. 'gfx = XGraphics.FromPdfPage(document.Pages(1))
    457. 'Anf_Spalten(0) = "Seite 2"
    458. 'gfx.DrawString(Anf_Spalten(0), font2, XBrushes.Black,
    459. 'New XRect(0, 0, page.Width, page.Height), XStringFormats.BottomLeft)
    460. 'document.AddPage()
    461. 'gfx = XGraphics.FromPdfPage(document.Pages(2))
    462. 'Anf_Spalten(0) = "Seite 3"
    463. 'gfx.DrawString(Anf_Spalten(0), font2, XBrushes.Black,
    464. 'New XRect(0, 0, page.Width, page.Height), XStringFormats.BottomLeft)
    465. 'Datei sichern und anzeigen
    466. Const filename As String = "anforderungen\Test.pdf"
    467. document.Save(filename)
    468. Process.Start(filename)
    469. document.Close()
    470. 'Me.document.Close()
    471. 'Process.GetCurrentProcess.Close()
    472. BANR_Eintragen()
    473. Umwandlung_in_eine_Anfrage()
    474. End Sub
    475. Private Sub Anfrage_Formular()
    476. Dim Text(19) As String
    477. Dim Bearbeiter As String
    478. Dim aktuellesDatum As String
    479. Dim strBANr As String
    480. Dim KunNr As String
    481. Dim LiefNr As String
    482. Dim datum As Date = Now
    483. aktuellesDatum = Mid(datum, 1, 10)
    484. KunNr = ""
    485. LiefNr = ""
    486. Bearbeiter = frmLogin.Vorname + " " + frmLogin.Nachname
    487. strBANr = CStr(BANr)
    488. Text(1) = "Bestellanfrage"
    489. gfx.DrawString(Text(1), font2, XBrushes.Black,
    490. New XRect(0, -630, page.Width, page.Height), XStringFormats.BottomCenter)
    491. Text(1) = "Unser Zeichen:"
    492. gfx.DrawString(Text(1), font1, XBrushes.Black,
    493. New XRect(50, -560, page.Width, page.Height), XStringFormats.BottomLeft)
    494. Text(1) = "Kunden Nr:"
    495. gfx.DrawString(Text(1), font1, XBrushes.Black,
    496. New XRect(166, -560, page.Width, page.Height), XStringFormats.BottomLeft)
    497. Text(1) = "Bearbeiter:"
    498. gfx.DrawString(Text(1), font1, XBrushes.Black,
    499. New XRect(259, -560, page.Width, page.Height), XStringFormats.BottomLeft)
    500. Text(1) = "Lieferanten Nr.:"
    501. gfx.DrawString(Text(1), font1, XBrushes.Black,
    502. New XRect(382, -560, page.Width, page.Height), XStringFormats.BottomLeft)
    503. Text(1) = "Datum:"
    504. gfx.DrawString(Text(1), font1, XBrushes.Black,
    505. New XRect(500, -560, page.Width, page.Height), XStringFormats.BottomLeft)
    506. Text(1) = "BA-" + strBANr
    507. gfx.DrawString(Text(1), font1, XBrushes.Black,
    508. New XRect(50, -545, page.Width, page.Height), XStringFormats.BottomLeft)
    509. Text(1) = KunNr
    510. gfx.DrawString(Text(1), font1, XBrushes.Black,
    511. New XRect(166, -545, page.Width, page.Height), XStringFormats.BottomLeft)
    512. Text(1) = Bearbeiter
    513. gfx.DrawString(Text(1), font1, XBrushes.Black,
    514. New XRect(259, -545, page.Width, page.Height), XStringFormats.BottomLeft)
    515. Text(1) = LiefNr
    516. gfx.DrawString(Text(1), font1, XBrushes.Black,
    517. New XRect(382, -545, page.Width, page.Height), XStringFormats.BottomLeft)
    518. Text(1) = aktuellesDatum
    519. gfx.DrawString(Text(1), font1, XBrushes.Black,
    520. New XRect(500, -545, page.Width, page.Height), XStringFormats.BottomLeft)
    521. Text(1) = "Sehr geehrte Damen und Herren,"
    522. gfx.DrawString(Text(1), font1, XBrushes.Black,
    523. New XRect(50, -495, page.Width, page.Height), XStringFormats.BottomLeft)
    524. Text(1) = "bieten Sie uns bitte günstigst die nachfolgend aufgeführte Positionen an. Ihr kostenloses und für uns "
    525. gfx.DrawString(Text(1), font1, XBrushes.Black,
    526. New XRect(50, -471, page.Width, page.Height), XStringFormats.BottomLeft)
    527. Text(1) = "unverbindliches Angebot erwarten wir bis spätestens :"
    528. gfx.DrawString(Text(1), font1, XBrushes.Black,
    529. New XRect(50, -459, page.Width, page.Height), XStringFormats.BottomLeft)
    530. Text(1) = "__________________________________________________________________________________________"
    531. gfx.DrawString(Text(1), font1, XBrushes.Black,
    532. New XRect(50, -430, page.Width, page.Height), XStringFormats.BottomLeft)
    533. Text(1) = "Pos.:"
    534. gfx.DrawString(Text(1), font1, XBrushes.Black,
    535. New XRect(50, -410, page.Width, page.Height), XStringFormats.BottomLeft)
    536. Text(1) = "Bezeichnung:"
    537. gfx.DrawString(Text(1), font1, XBrushes.Black,
    538. New XRect(95, -410, page.Width, page.Height), XStringFormats.BottomLeft)
    539. Text(1) = "Menge:"
    540. gfx.DrawString(Text(1), font1, XBrushes.Black,
    541. New XRect(325, -410, page.Width, page.Height), XStringFormats.BottomLeft)
    542. Text(1) = "Preis:"
    543. gfx.DrawString(Text(1), font1, XBrushes.Black,
    544. New XRect(385, -410, page.Width, page.Height), XStringFormats.BottomLeft)
    545. Text(1) = "Ge.Preis:"
    546. gfx.DrawString(Text(1), font1, XBrushes.Black,
    547. New XRect(425, -410, page.Width, page.Height), XStringFormats.BottomLeft)
    548. Text(1) = "__________________________________________________________________________________________"
    549. gfx.DrawString(Text(1), font1, XBrushes.Black,
    550. New XRect(50, -400, page.Width, page.Height), XStringFormats.BottomLeft)
    551. End Sub
    552. Private Sub Anfrage_Formular_Seite_02()
    553. Dim Text(19) As String
    554. Dim Bearbeiter As String
    555. Dim aktuellesDatum As String
    556. Dim strBANr As String
    557. Dim KunNr As String
    558. Dim LiefNr As String
    559. Dim datum As Date = Now
    560. aktuellesDatum = Mid(datum, 1, 10)
    561. KunNr = ""
    562. LiefNr = ""
    563. Bearbeiter = frmLogin.Vorname + " " + frmLogin.Nachname
    564. strBANr = CStr(BANr)
    565. Text(1) = "__________________________________________________________________________________________"
    566. gfx.DrawString(Text(1), font1, XBrushes.Black,
    567. New XRect(50, -700, page.Width, page.Height), XStringFormats.BottomLeft)
    568. Text(1) = "Pos.:"
    569. gfx.DrawString(Text(1), font1, XBrushes.Black,
    570. New XRect(50, -680, page.Width, page.Height), XStringFormats.BottomLeft)
    571. Text(1) = "Bezeichnung:"
    572. gfx.DrawString(Text(1), font1, XBrushes.Black,
    573. New XRect(95, -680, page.Width, page.Height), XStringFormats.BottomLeft)
    574. Text(1) = "Menge:"
    575. gfx.DrawString(Text(1), font1, XBrushes.Black,
    576. New XRect(325, -680, page.Width, page.Height), XStringFormats.BottomLeft)
    577. Text(1) = "Preis:"
    578. gfx.DrawString(Text(1), font1, XBrushes.Black,
    579. New XRect(385, -680, page.Width, page.Height), XStringFormats.BottomLeft)
    580. Text(1) = "Ge.Preis:"
    581. gfx.DrawString(Text(1), font1, XBrushes.Black,
    582. New XRect(425, -680, page.Width, page.Height), XStringFormats.BottomLeft)
    583. Text(1) = "__________________________________________________________________________________________"
    584. gfx.DrawString(Text(1), font1, XBrushes.Black,
    585. New XRect(50, -670, page.Width, page.Height), XStringFormats.BottomLeft)
    586. End Sub
    587. Private Sub Hintergrund_Seite_1_laden()
    588. 'Hintergrund Laden Seite 1
    589. 'Load the uploaded JPG image
    590. Dim image As XImage = XImage.FromFile(Application.StartupPath & "\Anforderungen\Briefbogen_Seite-01.jpg")
    591. 'Use original dimensions, more details here: http://bit.ly/hbZjiZ
    592. Dim x As Double = (250 - image.PixelWidth * 72 / image.HorizontalResolution) \ 2
    593. 'Center the image in the page, credits: http://bit.ly/g6wVGJ
    594. Dim leftOffset As Double = (gfx.PageSize.Width / 2.0) - (image.PointWidth / 2.0)
    595. Dim topOffset As Double = (gfx.PageSize.Height / 2.0) - (image.PointHeight / 2.0)
    596. 'Write the image to PDF
    597. gfx.DrawImage(image, leftOffset, topOffset)
    598. End Sub
    599. Private Sub Hintergrund_Seite_2_laden()
    600. 'Hintergrund Laden Seite 1
    601. 'Load the uploaded JPG image
    602. Dim image As XImage = XImage.FromFile(Application.StartupPath & "\Anforderungen\Briefbogen_Seite-02.jpg")
    603. 'Use original dimensions, more details here: http://bit.ly/hbZjiZ
    604. Dim x As Double = (250 - image.PixelWidth * 72 / image.HorizontalResolution) \ 2
    605. 'Center the image in the page, credits: http://bit.ly/g6wVGJ
    606. Dim leftOffset As Double = (gfx.PageSize.Width / 2.0) - (image.PointWidth / 2.0)
    607. Dim topOffset As Double = (gfx.PageSize.Height / 2.0) - (image.PointHeight / 2.0)
    608. 'Write the image to PDF
    609. gfx.DrawImage(image, leftOffset, topOffset)
    610. End Sub
    611. Private Sub Bestellanforderung_Nr_ermitteln()
    612. 'Ermittelt die letzte Bestellanforderungsnummer und erzeugt eine neue Aktuelle Nr
    613. con.Open()
    614. cmd.CommandText = "select max(DB_BestBANr) from DB_Bestellwesen"
    615. Dim retval = cmd.ExecuteScalar
    616. BANr = retval + 1
    617. con.Close()
    618. 'MessageBox.Show(BANr)
    619. End Sub
    620. Private Sub Bestell_Nr_ermitteln()
    621. 'Ermittelt die letzte Bestellnummer und erzeugt eine neue Aktuelle Nr
    622. con.Open()
    623. cmd.CommandText = "select max(DB_BestBNr) from DB_Bestellwesen"
    624. Dim retval = cmd.ExecuteScalar
    625. BNr = retval + 1
    626. con.Close()
    627. 'MessageBox.Show(BANr)
    628. End Sub
    629. Private Sub BANR_Eintragen()
    630. 'Trägt die Bestellanfrage Nr. in alle Datensätze ein die zu der aktuellen Anfrage gehören
    631. Dim anzahl
    632. Try
    633. con.Open()
    634. cmd.CommandText = "UPDATE DB_Bestellwesen SET " &
    635. " DB_BestBANr = '" & BANr & "'
    636. WHERE DB_BestStatus = '" & "X" & "'"
    637. anzahl = cmd.ExecuteNonQuery()
    638. If anzahl > 0 Then
    639. End If
    640. Catch ex As Exception
    641. MessageBox.Show(ex.Message)
    642. End Try
    643. con.Close()
    644. AlleSehenBeschaffung()
    645. AlleSehenAnforderung()
    646. Tabelle_Sortieren()
    647. End Sub
    648. Private Sub BNR_Eintragen()
    649. 'Trägt die Bestellanfrage Nr. in alle Datensätze ein die zu der aktuellen Anfrage gehören
    650. Dim anzahl
    651. Try
    652. con.Open()
    653. cmd.CommandText = "UPDATE DB_Bestellwesen SET " &
    654. " DB_BestBNr = '" & BNr & "'
    655. WHERE DB_BestStatus = '" & "B" & "'"
    656. anzahl = cmd.ExecuteNonQuery()
    657. If anzahl > 0 Then
    658. End If
    659. Catch ex As Exception
    660. MessageBox.Show(ex.Message)
    661. End Try
    662. con.Close()
    663. AlleSehenBeschaffung()
    664. AlleSehenAnforderung()
    665. Tabelle_Sortieren()
    666. End Sub
    667. End Class


    Vielen Dank für eure Mühen
    Gruß Roland

    Edit von Chrisber: Code oben eingefügt inkl. Spoiler

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Chrisber“ ()

    Hallo und willkommen im Forum

    Wir können ohne deinem Code nur ins blaue raten.

    Zeig doch mal wie du die Form aufrufst und was die Form dann macht. Sowohl beim öffnen als auch beim schliessen. Vieleicht sehen wir dann den Fehler.
    Benutzer hierfür bitte die CodeTags.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hallo Roland
    Ich versuche einmal dein Code zu interpretieren.

    Also du hast das das PdfDocument als Public document As New PdfDocument() definiert und instanziiert.
    d.H. Dies wird beim Aufrufen der frmEinkauf ausgeführt.

    Im cmdAnfragen.Click machst du ein document.Close(), welches die document-Instanz schliesst.
    Beim nochmaligen Ausführen des cmdAnfragen.Click ist das document nicht mehr vorhanden, was eine NullReferenceException auslöst.

    Gruss HenryV
    Okay, mein guter, du hast dich gerade selber verraten.

    höre auf mit copy/paste von irgendwelchen code schnüppsel aus dem Internet zu Kopieren, denn das was das steht ist aus "deinem" Code.

    In dem Post (von mir, mit den Bildern) ging es darum, das du verstehst wie du vb.net Code highlighte hin bekommst