theunreal
Goto Top

ItextSharp Fontregister und Aufbau

Hallo zusammen,

mein Script wächst und wäscht und mein Lernkurve geht recht steil. Aber grad, wenn man sich etwas selbst beibringt helfen die Antworten bei Google leider nicht immer weiter.
Die Ursache liegt manchmal natürlich auch 60 cm vor dem Bildschirm...

Ich habe eine Frage zur FontFabric:

Ich möchte meiner PDF ein Barcode mit der Schriftart "Free 3 of 9" zufügen. Ich habe in der ItextDoku und auf Reddit nachgelesen, dass ich die Schriftart registrieren muss :
Itext Doku

$bcFont = [iTextSharp.text.FontFactory]::Register("C:\Windows\Fonts\FRE3OF9X.TTF","FRE3OF9X")  
$Barcode =[iTextSharp.text.Chunk]::new("$Script:CaseNo`r`n")  
$Barcode.Font = [iTextSharp.text.FontFactory]::GetFont($bcFont, 40, [iTextSharp.text.Font]::NORMAL, [iTextSharp.text.BaseColor]::$Color)
#oder auch 
$Barcode.Font = [iTextSharp.text.FontFactory]::GetFont("FRE3OF9X", 40, [iTextSharp.text.Font]::NORMAL, [iTextSharp.text.BaseColor]::$Color)  
 

$Barcode wird dann einem ColumnText zugefügt. Aber er fällt dennoch auf meine Basefont zurück. $Bacode.Font ist unknown, was mache ich verkehrt?

Und dann, wenn ich 4 Zeilen untereinander habe und die jeweils obere BOLD machen möchte, muss ich dann tatsächlich jeden Textchunk einzeln zuweisen, oder gibt es da was eleganteres?

Danke für eure Unterstützung !

Gruß Sascha

Content-Key: 851126977

Url: https://administrator.de/contentid/851126977

Printed on: April 19, 2024 at 23:04 o'clock

Member: colinardo
Solution colinardo Jun 29, 2021 updated at 10:34:10 (UTC)
Goto Top
Servus Sascha,
Wozu extra nen Font für den Barcodetyp "3 of 9" einbinden? iText unterstützt diesen Barcodetyp von Haus aus face-smile
https://api.itextpdf.com/iText5/java/5.5.13.2/com/itextpdf/text/pdf/Barc ...
$b = $writer.DirectContent
$bc = New-Object iTextSharp.text.pdf.Barcode39
$bc.Code = "HALLO WIE GEHTS"
$bc.BarHeight = 50
$bc.Font = [iTextSharp.text.pdf.BaseFont]::CreateFont([iTextSharp.text.pdf.BaseFont]::COURIER,[iTextSharp.text.pdf.BaseFont]::CP1252,$false)
$img = $bc.CreateImageWithBarcode($b,[System.Drawing.Color]::Black,[System.Drawing.Color]::Black)
$img.SetAbsolutePosition(20,20)
$b.AddImage($img)

Und dann, wenn ich 4 Zeilen untereinander habe und die jeweils obere BOLD machen möchte, muss ich dann tatsächlich jeden Textchunk einzeln zuweisen, oder gibt es da was eleganteres?
Ein Template-Object z.B.
https://api.itextpdf.com/iText5/java/5.5.13.2/com/itextpdf/text/pdf/PdfT ...

Grüße Uwe
Member: TheUnreal
TheUnreal Jun 29, 2021, updated at Jul 01, 2021 at 08:25:54 (UTC)
Goto Top
Hallo Uwe,

danke für die Hilfe, das funktioniert (natürlich) wunderbar.
Ich gestehe aber, dass ich nicht im Traum auf diese Lösung gekommen wäre face-sad

Aber dank https://www.mikesdotnetting.com/article/81/itextsharp-working-with-fonts verstehe ich nun mehr über die FontFactory.
Und so langsam ist dann auch (endlich) mal der Groschen gefallen.
Ich mache es nun doch so, wie ursprünglich geplant :

$font = [iTextSharp.text.pdf.BaseFont]::createFont("$PSScriptRoot\bin\Fonts\FRE3OF9X.TTF", [iTextSharp.text.pdf.BaseFont]::CP1252, [iTextSharp.text.pdf.BaseFont]::EMBEDDED)  
$free9of3 = New-Object iTextSharp.text.Font ($font,35)
$Text.Font = $free9of3
$colText.AddElement($Text)