Hoi allemaal,
ik gebruik VB.net 2022 en itext.
Ik heb een basis pdf template die ik inlees en waar tekst naartoe wordt geschreven en vervolgens geëxporteerd wordt. Op pagina 14 komen een aantal regels te staan, op het moment dat die regels meer dan 10 zijn moet naar de volgende pagina gegaan worden. Dat lukt prima, het probleem waar ik mee zit is dat De originele pagina uit de geïmporteerde PDF ook een plaats opschuift. En dat is niet de bedoeling. De geïmporteerde pagina 14 is namelijk volledig opgemaakt, met header E.d.
Onderstaand mijn code, zou super zijn als iemand me Zou kunnen vertellen hoe ik dit oplos.
ik gebruik VB.net 2022 en itext.
Ik heb een basis pdf template die ik inlees en waar tekst naartoe wordt geschreven en vervolgens geëxporteerd wordt. Op pagina 14 komen een aantal regels te staan, op het moment dat die regels meer dan 10 zijn moet naar de volgende pagina gegaan worden. Dat lukt prima, het probleem waar ik mee zit is dat De originele pagina uit de geïmporteerde PDF ook een plaats opschuift. En dat is niet de bedoeling. De geïmporteerde pagina 14 is namelijk volledig opgemaakt, met header E.d.
Onderstaand mijn code, zou super zijn als iemand me Zou kunnen vertellen hoe ik dit oplos.
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
| Dim TotalPrice As Integer For i = 0 To ListBoxPrijsTotaal.Items.Count - 1 TotalPrice = TotalPrice + ListBoxPrijsTotaal.Items(i) Next i Dim oldFile As String = "_orig.pdf" 'Dim newFile As String Dim Filepath As String = ("C:\users\" & Environment.UserName & "mycompany\test") ' Create reader Dim reader As New PdfReader(oldFile) Dim size As Rectangle = reader.GetPageSizeWithRotation(1) Dim document As New Document(size) TotalPagesOldFile = reader.NumberOfPages Dim PagesNewFile = reader.NumberOfPages TotalPagesNewFile = PagesNewFile ' Create the writer Try Dim fs As New FileStream(SavedSLAPath, FileMode.Create, FileAccess.Write) Dim writer As PdfWriter = PdfWriter.GetInstance(document, fs) document.Open() Dim cb As PdfContentByte = writer.DirectContent 'cb.BeginText() Dim TotalRows As Integer = ListBoxOmschrijving.Items.Count Dim SelectedRow As Integer = 0 Dim Vertical As Integer = 645 Do While PageCountNewFile <= TotalPagesNewFile Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED) cb.SetColorFill(BaseColor.DARK_GRAY) cb.SetFontAndSize(bf, 9) NewImportedPage = writer.GetImportedPage(reader, PageCountNewFile) cb.BeginText() Select Case PageCountNewFile Case 1 cb.ShowTextAligned(0, KlantNaam, 175, 525, 0) Case 2 cb.ShowTextAligned(0, PuntEenPart1, 195, 522, 0) cb.ShowTextAligned(0, PUntEenPart2, 183, 510, 0) Case 12 cb.ShowTextAligned(0, KlantNaam, 313, 220, 0) cb.ShowTextAligned(0, NaamContact, 313, 208, 0) Case importedpagenumber cb.ShowTextAligned(0, EmailContact, 202, 195, 0) cb.ShowTextAligned(0, NaamContact, 57, 195, 0) cb.ShowTextAligned(0, EmailContact2, 202, 145, 0) cb.ShowTextAligned(0, NaamContact2, 57, 145, 0) Do While Currentrow < TotalRows cb.ShowTextAligned(0, ListBoxAantal.Items(Currentrow), 65, Vertical, 0) cb.ShowTextAligned(0, ListBoxOmschrijving.Items(Currentrow), 95, Vertical, 0) cb.ShowTextAligned(0, "€ " & ListBoxPrijs.Items(Currentrow), 260, Vertical, 0) cb.ShowTextAligned(0, "€ " & ListBoxPrijsTotaal.Items(Currentrow), 350, Vertical, 0) Vertical += -10 Currentrow += 1 CurrentRowNewpage += 1 If CurrentRowNewpage >= TotalRowsPerPage Then cb.EndText() document.NewPage() 'Er komt netjes in uw pagina bij maar de huidige pagina met opmaak is nu dus een plek opgeschoven. Op pagina 14 Staat nu dus het vervolg van de rows van pagina 15 (met opmaak) cb.BeginText() CurrentRowNewpage = 1 Dim bff As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED) cb.SetColorFill(BaseColor.DARK_GRAY) cb.SetFontAndSize(bf, 9) Vertical += 50 End If Loop If ListBoxOmschrijving.Items.Count > 0 Then Dim BigBlue As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED) cb.SetColorFill(BaseColor.BLUE) cb.SetFontAndSize(bf, 11) cb.ShowTextAligned(0, "Totale prijs per maand is € " & TotalPrice, 95, Vertical - 20, 0) End If End Select PageCountNewFile += 1 cb.EndText() cb.AddTemplate(NewImportedPage, 0, 0) document.NewPage() Loop document.Close() fs.Close() writer.Close() reader.Close() If ChkboxOpenenNaOpslaan.Checked = True Then Process.Start(SavedSLAPath) Catch ex As SystemException Form1.LogMessage = ex.ToString Form1.WriteToLog() Exit Try End Try |
[ Voor 6% gewijzigd door RobIII op 29-11-2021 11:45 . Reden: Gebruik [code]-tags bij het posten van code a.u.b. ]