vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Barcode aus zahlen generieren und in PDF einfügen 
Autor: p24
Datum: 22.06.17 12:41

Hallo liebe Community,
ich habe mir mal wieder ein kleines Tools gebastelt und stehe nun vor einem Problem. Dieses ist folgendes, ich manipuliere ein PDF Dokument mit itextsharp, dass klappt alles super. Für das letzte Eingabefeld müsste ich Zahlen eingeben und diese als Barcode ausgeben. Leider habe ich zu wenig wissen um dies zu realisieren. Vllt. kann mir jemand einen Denkanstoß oder eine Lösung bieten?


Vielen Dank im Voraus

p24

Oberfläche des Programms:
http://panorama24.eu/form1.png

Fertiges erzeugtes PDF des Programms:
http://panorama24.eu/form2.png

Projekt Download:
http://panorama24.eu/LabelGEN.zip


Hier mein Code:

Imports iTextSharp.text.pdf
Imports iTextSharp.text
Imports System.IO
 
Public Class Form1
 
    Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Label2.Click
 
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles btnclose.Click
        Me.Close()
    End Sub
 
    Private Sub btngen_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles btngen.Click
 
Dim oldFile As String = "templates/template.pdf"
        Dim newFile As String = "output/etikett.pdf"
 
        Dim reader As New PdfReader(oldFile)
        Dim size As Rectangle = reader.GetPageSizeWithRotation(1)
        Dim document As New Document(size)
 
        Dim fs As New FileStream(newFile, FileMode.Create, FileAccess.Write)
        Dim writer As PdfWriter = PdfWriter.GetInstance(document, fs)
        document.Open()
        Dim cb As PdfContentByte = writer.DirectContent
 
        Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, _
          BaseFont.CP1252, BaseFont.NOT_EMBEDDED)
        cb.SetColorFill(BaseColor.BLACK)
        cb.SetFontAndSize(bf, 16)
 
        cb.BeginText()
        Dim platz As String = txtplatz.Text
        Dim name As String = txtname.Text
        Dim nr As String = txtnr.Text
        Dim code As String = txtcode.Text
 
        cb.ShowTextAligned(1, platz, 240, 204, 0)
        cb.ShowTextAligned(1, name, 240, 145, 0)
        cb.ShowTextAligned(1, nr, 240, 125, 0)
        cb.ShowTextAligned(1, code, 240, 140, 0)
        cb.EndText()
 
        Dim page As PdfImportedPage = writer.GetImportedPage(reader, 1)
        cb.AddTemplate(page, 0, 0)
 
 
        document.Close()
        fs.Close()
        writer.Close()
        reader.Close()
 
 
        MsgBox("Label erfolgreich gespeichert.", MsgBoxStyle.Information, _
Title:="Information")
 
 
 
    End Sub
 
    Private Sub btnprint_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles btnprint.Click
 
        Dim path = System.IO.Path.Combine(Application.StartupPath, _
          "output/etikett.pdf")
        Process.Start(path)
 
    End Sub
End Class


Beitrag wurde zuletzt am 22.06.17 um 12:45:11 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: stefan220273
Datum: 22.06.17 13:40

Welcher Barcode soll es denn sein???
Gibt ja ein paar....

https://www.activebarcode.de/codes/



Gruss Stefan
Egal wie oft etwas gelöscht wird, das Internet vergisst nie und Menschen lassen sich nicht dauerhaft täuschen!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: p24
Datum: 23.06.17 07:04

Hallo Stefan, es geht um diesen hier: EAN-13, GTIN-13

Danke dir im Voraus & liebe Grüße

p24
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: stefan220273
Datum: 23.06.17 08:26

p24 schrieb:
Zitat:

Hallo Stefan, es geht um diesen hier: EAN-13, GTIN-13

Danke dir im Voraus & liebe Grüße

p24

z.b.

https://freebarcode.codeplex.com/

http://nugetmusthaves.com/Tag/barcode

https://www.codeproject.com/Articles/20823/Barcode-Image-Generation-Library



Gruss Stefan
Egal wie oft etwas gelöscht wird, das Internet vergisst nie und Menschen lassen sich nicht dauerhaft täuschen!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: p24
Datum: 23.06.17 08:29

Danke dir für deine schnelle Antwort. Ich bin auf folgenden Barcode Generator gestoßen:
https://www.codeproject.com/Articles/29409/EAN-Barcode-Control

dieser lässt sich auch ohne Probleme scannen, aber ich kriege das leider nicht unter einen Hut mit der Ausgabe auf meine PDF mit itextsharp

Gruße

p24
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: stefan220273
Datum: 23.06.17 08:35

Ohne jetzt itextsharp zu kennen.....
Du kannst doch bestimmt mit itextsharp Bilder in ein PDF einfügen, oder?
Falls ja, einfach den entsprechenden Barcode temporär als Bild speichern und dann in das PDF einfügen



Gruss Stefan
Egal wie oft etwas gelöscht wird, das Internet vergisst nie und Menschen lassen sich nicht dauerhaft täuschen!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: p24
Datum: 23.06.17 08:36

ich versuche es
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: p24
Datum: 26.06.17 10:32

okay, ich hab es leider nicht hinbekommen am Wochenende, icdh wäre also für Hilfe nach wie vor dankbar
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: stefan220273
Datum: 26.06.17 10:56

Was genau hast du nicht hinbekommen?
Den Barcode als Bild zu speichern?
Das Bild in das PDF zu bekommen?



Gruss Stefan
Egal wie oft etwas gelöscht wird, das Internet vergisst nie und Menschen lassen sich nicht dauerhaft täuschen!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: stefan220273
Datum: 26.06.17 11:12

Um den Barcode des Barcodecontrols zu speichern brauchst eine extra Prozedur.
Entweder bauhst du die Druckfunktion als Property dann direkt in das Control ein oder nutzt nur diese folgenden Prozedur
Private Sub SaveAsBitmap(control As Control, fileName As String)
        'getthe instance of the graphics from the control
        Dim g As Graphics = control.CreateGraphics()
 
        'new bitmap object to save the image
        Dim bmp As New Bitmap(control.Width, control.Height)
 
        'Drawing control to the bitmap
        control.DrawToBitmap(bmp, New Rectangle(0, 0, control.Width, _
          control.Height))
 
        bmp.Save(fileName)
        bmp.Dispose()
 
    End Sub
Aufruf z.b.
SaveAsBitmap(EaN13Barcode1, "C:\Barcode\BarcodeTMP.bmp")
Das erzeugte Bild musst du dann in das PDF packen.
z.b.
https://www.mikesdotnetting.com/article/87/itextsharp-working-with-images



Gruss Stefan
Egal wie oft etwas gelöscht wird, das Internet vergisst nie und Menschen lassen sich nicht dauerhaft täuschen!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: p24
Datum: 26.06.17 11:50

Hallo Stefan, danke dir für deine schnelle Hilfe.
Ich bekomme es nicht hin, dass ganze unter einen Hut zu bekommen, ein Fehler nach dem anderen, wie bereits erwähnt bin ich blutiger Anfänger Cool wäre es halt, wenn man nicht per Button den Barcode zuerst erstellen muss, sondern dieser automatisch als tmp gespeichert wird bei der normalen generier Methode.

Scheinbar ist das aber noch zu viel für mich
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: stefan220273
Datum: 26.06.17 12:05

Ich lade mir mal dein Projekt runter und gucke mal was ich machen kann.



Gruss Stefan
Egal wie oft etwas gelöscht wird, das Internet vergisst nie und Menschen lassen sich nicht dauerhaft täuschen!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: stefan220273
Datum: 26.06.17 12:09

Woraus setzt sich denn der Barcode zusammen?
Woher bekommst du die Werte für den Barcode?



Gruss Stefan
Egal wie oft etwas gelöscht wird, das Internet vergisst nie und Menschen lassen sich nicht dauerhaft täuschen!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: p24
Datum: 26.06.17 13:06

Die Werte stammen aus dem Eingabe-Feld, siehe:

http://panorama24.eu/barcode.png

Danke dir schonmal
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: stefan220273
Datum: 26.06.17 14:02

Guck mal ob du hiermit was anfangen kannst
Das Barcodesteuerelemt ist hinter deiner Picturebox versteckt.
Im Quellcode habe ich meine gemachten Änderungen kommentiert und mit '------- eingefasst
https://www.file-upload.net/download-12573063/LabelGEN.zip.html



Gruss Stefan
Egal wie oft etwas gelöscht wird, das Internet vergisst nie und Menschen lassen sich nicht dauerhaft täuschen!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: p24
Datum: 26.06.17 14:31

Vielen vielen Dank Stefan, ich schaue es mir heute Abend an und werde mich melden ob es funktioniert
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: p24
Datum: 27.06.17 08:38

Hallo Stefan, es funktioniert jetzt alles vielen vielen Dank, lediglich das PDF Template wird nicht benutzt?
Hast Du da evtl. eine Idee woran es liegen kann? ->
Dim oldFile As String = "templates/template.pdf"
Der Code sieht nun wie folgt aus:

Imports iTextSharp.text.pdf
Imports iTextSharp.text
Imports System.IO
 
Public Class Form1
 
    Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Label2.Click
 
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles btnclose.Click
        Me.Close()
    End Sub
 
    Private Sub btngen_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles btngen.Click
 
 
 
        checklengh(txtcode.Text)
 
 
 
        '-------------------------------------------
        Dim BarcodePath = System.IO.Path.Combine(Application.StartupPath, _
          "barcode/barcode.bmp")
        EaN13Barcode.Value = txtcode.Text
        SaveAsBitmap(EaN13Barcode, BarcodePath)
        '-------------------------------------------
 
 
 
 
 
 
 
        Dim oldFile As String = "templates/template.pdf"
        Dim newFile As String = "output/etikett.pdf"
 
        Dim reader As New PdfReader(oldFile)
        Dim size As Rectangle = reader.GetPageSizeWithRotation(1)
        Dim document As New Document(size)
 
        Dim fs As New FileStream(newFile, FileMode.Create, FileAccess.Write)
        Dim writer As PdfWriter = PdfWriter.GetInstance(document, fs)
        document.Open()
        Dim cb As PdfContentByte = writer.DirectContent
 
        Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, _
          BaseFont.CP1252, BaseFont.NOT_EMBEDDED)
        cb.SetColorFill(BaseColor.BLACK)
        cb.SetFontAndSize(bf, 16)
 
        cb.BeginText()
        Dim platz As String = txtplatz.Text
        Dim name As String = txtname.Text
        Dim nr As String = txtnr.Text
        Dim code As String = txtcode.Text
 
        cb.ShowTextAligned(0, platz, 220, 204, 0)
        cb.ShowTextAligned(0, name, 220, 145, 0)
        cb.ShowTextAligned(0, nr, 220, 125, 0)
        cb.ShowTextAligned(1, code, 283, 14, 0)
        cb.EndText()
 
        Dim page As PdfImportedPage = writer.GetImportedPage(reader, 1)
 
        '-------------------------------------------
        Dim BarcodeImage As iTextSharp.text.Image = Image.GetInstance( _
          BarcodePath)
        BarcodeImage.SetAbsolutePosition(190, 0)
 
        document.Add(BarcodeImage)
        '-------------------------------------------
 
 
        document.Close()
        fs.Close()
        writer.Close()
        reader.Close()
 
 
        MsgBox("Label erfolgreich gespeichert.", MsgBoxStyle.Information,
Title:="Information")
 
 
 
    End Sub
 
    Private Sub btnprint_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles btnprint.Click
 
        Dim path = System.IO.Path.Combine(Application.StartupPath, _
          "output/etikett.pdf")
        Process.Start(path)
 
    End Sub
 
    Private Sub SaveAsBitmap(ByVal control As Control, ByVal fileName As String)
        'getthe instance of the graphics from the control
        Dim g As Graphics = control.CreateGraphics()
 
        'new bitmap object to save the image
        Dim bmp As New Bitmap(control.Width, control.Height)
 
        'Drawing control to the bitmap
        control.DrawToBitmap(bmp, New System.Drawing.Rectangle(0, 0, _
          control.Width, control.Height))
 
        bmp.Save(fileName)
        bmp.Dispose()
 
    End Sub
 
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _
      Handles MyBase.Load
 
    End Sub
 
    Private Sub txtcode_TextChanged(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles txtcode.TextChanged
 
 
 
        txtcode.MaxLength = 12
 
        Dim MeineZahl As Double = 0
        If Not Double.TryParse(txtcode.Text, MeineZahl) Then
            MsgBox("Bitte nur Zahlen eintragen, 12 Zeichen sind erforderlich!", _
              MsgBoxStyle.Critical,
Title:="Bitte gültige Werte eingeben")
        End If
 
 
 
    End Sub
 
 
    Private Sub checklengh(ByVal txtcode As String)
        If Not txtcode.Length > 12 Then
            MsgBox("Der EAN Code muss 12 Zeichen haben", MsgBoxStyle.Critical,
Title:="Bitte gültige Werte eingeben")
            txtcode = vbNullString
 
 
        Else
 
 
 
        End If
    End Sub
 
 
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: stefan220273
Datum: 27.06.17 11:17

Nein, leider keine Ahnung.
Ich nutze iTextSharp nicht, das was ich dir geschickt habe, habe ich mir auch anhand des Internets "gebaut".

Was mir allerdings aufgefallen ist,
checklengh(txtcode.Text)
Das macht keine Sinn......der Quellcode wird trotzdem weiter ausgeführt, egal ob EAN Stellen 12 oder nicht.

Mach daraus eine Function die True oder False zurückgibt



Gruss Stefan
Egal wie oft etwas gelöscht wird, das Internet vergisst nie und Menschen lassen sich nicht dauerhaft täuschen!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: HenryV
Datum: 27.06.17 14:32

Hallo p24

iTextSharp kann auch Barcodes erstellen.
Den folgenden Code irgendwo zwischen cb.BeginText() und cb.EndText() einfügen.
Dim bc As New iTextSharp.text.pdf.BarcodeEAN 
 
bc.CodeType = iTextSharp.text.pdf.BarcodeEAN.EAN13
bc.TextAlignment = Element.ALIGN_CENTER
bc.Code = txtcode.Text
'bc.StartStopText = True
'bc.Extended = True
'bc.GenerateChecksum = True
'bc.ChecksumText = True
'bc.Font = Nothing
 
Dim imageEAN As iTextSharp.text.Image = bc.CreateImageWithBarcode(cb, _
  iTextSharp.text.BaseColor.BLACK, iTextSharp.text.BaseColor.BLACK)
imageEAN.ScaleToFit(160, 20)
imageEAN.SetAbsolutePosition(190, 0)
cb.AddImage(imageEAN)
Gruss HenryV
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: p24
Datum: 27.06.17 14:57

Hallo HenryV, danke für deinen Beitrag, funktioniert super!
Ich frage mich nur wieso er die Vorlage, also das PDF-Template nicht mehr nimmt?

Jemand eine Idee? Hier der aktuelle Code:


Imports iTextSharp.text.pdf
Imports iTextSharp.text
Imports System.IO
 
Public Class Form1
 
    Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Label2.Click
 
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles btnclose.Click
        Me.Close()
    End Sub
 
    Private Sub btngen_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles btngen.Click
 
 
 
 
 
 
 
 
 
 
 
 
 
 
        Dim oldFile As String = "templates/template.pdf"
        Dim newFile As String = "output/etikett.pdf"
 
        Dim reader As New PdfReader(oldFile)
        Dim size As Rectangle = reader.GetPageSizeWithRotation(1)
        Dim document As New Document(size)
 
        Dim fs As New FileStream(newFile, FileMode.Create, FileAccess.Write)
        Dim writer As PdfWriter = PdfWriter.GetInstance(document, fs)
        document.Open()
        Dim cb As PdfContentByte = writer.DirectContent
 
        Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, _
          BaseFont.CP1252, BaseFont.NOT_EMBEDDED)
        cb.SetColorFill(BaseColor.BLACK)
        cb.SetFontAndSize(bf, 16)
 
        cb.BeginText()
        Dim platz As String = txtplatz.Text
        Dim name As String = txtname.Text
        Dim nr As String = txtnr.Text
 
        cb.ShowTextAligned(0, platz, 220, 204, 0)
        cb.ShowTextAligned(0, name, 220, 145, 0)
        cb.ShowTextAligned(0, nr, 220, 125, 0)
 
 
 
        Dim bc As New iTextSharp.text.pdf.BarcodeEAN
 
        bc.CodeType = iTextSharp.text.pdf.BarcodeEAN.EAN13
        bc.TextAlignment = Element.ALIGN_CENTER
        bc.Code = txtcode.Text
        'bc.StartStopText = True
        'bc.Extended = True
        'bc.GenerateChecksum = True
        'bc.ChecksumText = True
        'bc.Font = Nothing
 
        Dim imageEAN As iTextSharp.text.Image = bc.CreateImageWithBarcode(cb, _
          iTextSharp.text.BaseColor.BLACK, iTextSharp.text.BaseColor.BLACK)
        imageEAN.ScaleToFit(250, 60)
        imageEAN.SetAbsolutePosition(190, 35)
        cb.AddImage(imageEAN)
 
 
 
 
        cb.EndText()
 
        Dim page As PdfImportedPage = writer.GetImportedPage(reader, 1)
 
 
 
 
        document.Close()
        fs.Close()
        writer.Close()
        reader.Close()
 
 
        MsgBox("Label erfolgreich gespeichert.", MsgBoxStyle.Information,
Title:="Information")
 
 
 
    End Sub
 
    Private Sub btnprint_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles btnprint.Click
 
        Dim path = System.IO.Path.Combine(Application.StartupPath, _
          "output/etikett.pdf")
        Process.Start(path)
 
    End Sub
 
 
 
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _
      Handles MyBase.Load
 
    End Sub
 
    Private Sub txtcode_TextChanged(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles txtcode.TextChanged
 
 
    End Sub
 
 
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Barcode aus zahlen generieren und in PDF einfügen 
Autor: HenryV
Datum: 27.06.17 15:51

Dir ist die AddTemplate-Zeile abhanden gekommen
Dim page As PdfImportedPage = writer.GetImportedPage(reader, 1)
cb.AddTemplate(page, 0, 0)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel