gelöst Powershell itextSharp Zeilenumbruch

Mitglied: TheUnreal

TheUnreal (Level 1) - Jetzt verbinden

19.05.2020, aktualisiert 12:51 Uhr, 688 Aufrufe, 14 Kommentare, 3 Danke

Moin zusammen,

ich habe vor mit Hilfe eines Powershellskriptes eine Email abzurufen und komplett inkl. Attachements als PDF zu speichern, da Thunderbird ums verrecken keine pdf Anhänge
automatisch drucken kann.

Ich arbeite mit Mailkit (Danke nochmal Uwe ) und iTextSharp.

Mit Mailkit extrahiere ich aus dem TextBody der Email eine von ID und speichere den Body zur automatisierten Verarbeitung als ID.TXT, und die Mail mit Attachements als ID.pdf.
Das funktioniert auch wunderbar - bis auf ein Problem :

itextsharp entfernt die Zeilenumbrüche aus dem mailBody . So erhalte ich eine fomatierte Textdatei aber eine unformatierte PDF.

Und viel mehr mache ich mit der txt auch nicht :
Da so ziemlich alle Tutorials in c# sind, ist es für mich grad schwer, die Lösung zu finden :/
Gruß Sascha

edit:

Mit Notepad++ wird [CR][LF] auch beim "aus der PDF" kopierten, unvollständigen Text angezeigt. Die Umbrüche sind also vorhanden, werden aber scheinbar nicht richtig interpretiert?
Mitglied: godlie
19.05.2020 um 12:50 Uhr
Hallo,

wie sieht denn dein TextBody aus ?
Welche Zeilenumbrüche beinhaltet er?
Bitte warten ..
Mitglied: TheUnreal
19.05.2020, aktualisiert um 12:59 Uhr
Hi godlie,

die Umbrüche sind als CR LF kodiert, wie es unter Windowssystem sein sollte.

Der Mailbody ist fest als [String]$m.TextBody deklariert.

Wie ich im edit ergänzt habe, scheint es bei Itext# noch eine Funktion geben zu müssen, mit der der LFCR auch beachtet wird.
Ich wälze grad die Doku .

Gruß Sascha

Grad was gefunden :
https://stackoverflow.com/questions/10756171/adding-a-new-line-in-itexts ...

So wie es aussieht, bastel ich grad "line to line", und sollte den PdfContentByte nutzen.
Dann versuche ich mal mein Glück...
Bitte warten ..
Mitglied: godlie
19.05.2020, aktualisiert um 13:07 Uhr
Hallo,

hm kann es evtl sein, dass dein
<-- dir die LineBreaks verwirft?
hatte selbiges mal bei einem StreamRead von einer TXT
Bitte warten ..
Mitglied: 144260
19.05.2020, aktualisiert um 13:20 Uhr
So wie es aussieht, bastel ich grad "line to line", und sollte den PdfContentByte nutzen.
Nein musst du nicht dafür gibt es das Paragraph Object, dort den Text hineinschreiben und das Paragraph Element z.B. einem ColumnText-Object hinzufügen.
https://api.itextpdf.com/iText5/5.5.9/com/itextpdf/text/Paragraph.html
Dann werden auch Zeilenumbrüche wie gehabt genutzt.
Bitte warten ..
Mitglied: TheUnreal
19.05.2020, aktualisiert um 13:27 Uhr
@godlie

Danke für die Idee, aber $m.TextBody bleibt dabei doch unangetastet?
Ich schreibe ja nur den Inhalt in eine Textdatei.

@killpid
Danke, dann schau ich mal dass ich das Paragraph Objekt ausprobiere - wie du schon angeerkt hast, der PdfContentByte hat mich auch nicht
weiter gebracht .

Gruß von hier nach da !
Bitte warten ..
Mitglied: colinardo
LÖSUNG 19.05.2020, aktualisiert 20.05.2020
Servus.

Funktionsfähiges Beispiel (getestet)
Grüße Uwe
Bitte warten ..
Mitglied: filippg
20.05.2020 um 00:47 Uhr
Hallo,

ohne die geringste Ahnung von "iTextSharp" zu haben (Ahnungslosigkeit ist immer eine gute Voraussetzung ;) ): Eine Eigenart von PowerShell ist ihre ganz besondere Vorliebe für Arrays. Ich weiß nicht, wo bzw. wie du "$m.TextBody" (das ist wohl dein Text?) herbekommst. Aber möglicherweise ist das kein String mit Zeilenumbrüchen, sondern ein Array von Strings ohne Zeilenumbrüche.
Beispiel mit get-content:
Konsequenterweise erzeugt "$lines | Add-Content foo2.txt" wiederum eine Datei mit mehreren Zeilen: Die Elemente des Arrays werden einzeln an Add-Content übergeben, das erzeugt dann für jedes Element eine Ausgabe (also jeweils einen eigenen Schreibvorgang) und beendet diese mit einen Zeilenumbruch. Wenn ich das richtig verstehe, enthält dein $txtContent ja Zeilenumbrüche; das könnte die Erklärung sein.

Grüße

Filipp
Bitte warten ..
Mitglied: colinardo
LÖSUNG 20.05.2020, aktualisiert um 08:22 Uhr
Servus.
Zitat von filippg:

Ich weiß nicht, wo bzw. wie du "$m.TextBody" (das ist wohl dein Text?) herbekommst. Aber möglicherweise ist das kein String mit Zeilenumbrüchen, sondern ein Array von Strings ohne Zeilenumbrüche.

Nein, es ist ein reiner String, siehe

http://www.mimekit.net/docs/html/P_MimeKit_MimeMessage_TextBody.htm

Und für alle weiteren die hier versuchen mit Vermutungen Ihr Glück zu suchen: Die Methode ShowText des ByteContent Objects supported keine Zeilenumbrüche, deswegen habe ich oben das Beispiel mit dem Paragraph Object gepostet, dieses unterstützt nämlich Multiline-Text!

Grüße Uwe
Bitte warten ..
Mitglied: TheUnreal
20.05.2020 um 09:01 Uhr
Hallo Uwe,

vielen,vielen Dank für deine Hilfe ! Nun läuft es wie es soll

Gruß Sascha
Bitte warten ..
Mitglied: colinardo
20.05.2020 um 09:03 Uhr
Na dann kann Himmelfahrt ja kommen .
Bitte warten ..
Mitglied: TheUnreal
26.05.2020 um 09:04 Uhr
Für alle die hier landen, weil sie sich für ItextSharp interessieren sei :

ItextSharp Tutorial

ans Herz gelegt. Da ist das verständlich erklärt (Programmiersprachenunabhängig).

Gruß nochmal
Bitte warten ..
Mitglied: TheUnreal
27.05.2020 um 12:26 Uhr
Hallo Uwe,

ich habe mich dann doch etwas zu früh grefreut

Mit den Bildern funktioniert alles, aber das Problem ist, dass ich die PDF nicht eingelesen oder geschrieben bekomme - sicher mache ich schon wieder eine Kleinigkeit verkehrt ? Allerdings möchte ich auch gerne verstehen, was ich falsch mache?

Ist es eigentlich möglich, die Anhänge "on-the-fly" an $Image zu übergeben? Also ohne zwischenspeichern im System?

Bitte warten ..
Mitglied: 144260
27.05.2020, aktualisiert um 13:58 Uhr
ich habe mich dann doch etwas zu früh grefreut
Irgendwie Off-Topic ?!
Bitte warten ..
Mitglied: TheUnreal
29.05.2020 um 08:14 Uhr
?
Verstehe deinen Kommentar irgendwie nicht - Hätte ich ein neues Thema eröffnen müssen?

Meine Lösung zu dem Problem sieht nun so aus, dass ich den MailBody und ggfls. Bilder in eine PDF schreibe, und PDFs aus Anhängen dann
damit in einer neuen PDF merge. Funktioniert - aber ich hätte es mir anders gewünscht.

Allerdings, wenn man weder C# kann, noch Powershell ist das bis hierher schon okay

Gruß
Bitte warten ..
Heiß diskutierte Inhalte
Server-Hardware
Grobes Konzept Hyper-V Storage - Storage für Hyper-V
nachgefragtFrageServer-Hardware26 Kommentare

Hallo Administratoren. Um VHDX-Daten zentral zu halten freue ich mich auf Euren konstruktiven Input. Bisher liegen die VHDX-Daten jeweils ...

Router & Routing
Cisco RIPv1 RIPv2
MrLabelFrageRouter & Routing26 Kommentare

Hallo Zusammen, ich muss nochmal auf eine schon behandelte Frage eingehen. Bitte jemand, der auch den Cisco Paket Tracer ...

Schulung & Training
IT Ausbildung
gelöst IntershipFrageSchulung & Training18 Kommentare

Hallo Leute, ist diese Ausbildung etwas für den IT-Einstig? Willkommen bei der GFN! Arbeitsuchende Berufstätige Kostenträger Über uns Jobs ...

Windows Server
Terminal Server Hyper-V Grafik performance
ReneM1983FrageWindows Server17 Kommentare

Moin Kollegen, ich habe da mal ein Problem, ein Kunde hat einen Terminal Server auf einem Hyper-V laufen, wo ...

Verschlüsselung & Zertifikate
Elektronische Unterschrift
gelöst PeterzFrageVerschlüsselung & Zertifikate14 Kommentare

Hallo zusammen, könnt ihr mir vielleicht ein paar Hinweise geben, wie ihr eine elektronische Unterschrift unter Dokumente und E-Mails ...

Vmware
Probleme mit meinem VM-Server und keine Idee
worker2000FrageVmware13 Kommentare

Moin zusammen, ich brauche mal ein wenig Input weil mir langsam die Ideen ausgehen. Am Ende vermute ich dass ...

Ähnliche Inhalte
Batch & Shell
Powershell - Zeilenumbruch in Mail
gelöst rodgerwilcoFrageBatch & Shell2 Kommentare

Hallo zusammen, es wäre schön, wenn jemand zu meinem Problem eine Lösung hätte. Ich möchte per Mail Statusinformationen zu ...

Batch & Shell

Zeilenumbruch-Zeilen-Vorschub entfernen? (Batch)

gelöst clragonFrageBatch & Shell9 Kommentare

Hallo Leute, Ich bin's wieder, mit einem verzwickten Problem. Und ich hab folgendes Problem Ich habe eine riesige Logfile ...

Microsoft Office

Zeilenumbruch in Excel nach Semikolon

gelöst OrkansonFrageMicrosoft Office3 Kommentare

Hallo, ich habe eine CSV Importiert. Alle Daten sind nach Komma getrennt. Nur innerhalb einer Zeile stehen Usernamen hintereinander ...

Batch & Shell

Aus Textdatei ausgelesene Zeilen mit Zeilenumbruch in Variable speichern

gelöst anmelderFrageBatch & Shell3 Kommentare

Hallo, eine Textdatei ist z.B. so aufgebaut: 111 222 333 Ich lese die so ein: Speicher enthält dann aber ...

Batch & Shell

Remote Powershell ausführen wie lokale Powershell

gelöst IngenieursFrageBatch & Shell2 Kommentare

Hallo vielleicht ist der Titel nicht ganz deutlich formuliert. Ich möchte wissen ob es eine Möglichkeit gibt Remote Powershell ...

Batch & Shell

Powershell, PDF

AnkhMorporkFrageBatch & Shell6 Kommentare

Hallo zusammen, ich komme mit der Suche nicht weiter Situation: ca. 2000 PDF-Dateien (Downloads von E-Mails). In der ersten ...

Berechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid CloudSmall Business ITSmall Business IT