<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PDF Archive - Informatik Guru</title>
	<atom:link href="https://informatik-guru.de/tag/pdf/feed/" rel="self" type="application/rss+xml" />
	<link>https://informatik-guru.de</link>
	<description>Dinge die Ihr Lehrer nicht kapiert</description>
	<lastBuildDate>Tue, 10 May 2022 05:29:47 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.8.4</generator>
	<item>
		<title>PDF-Dateien auslesen mit Powershell</title>
		<link>https://informatik-guru.de/coding/pdf-dateien-auslesen-mit-powershell/</link>
					<comments>https://informatik-guru.de/coding/pdf-dateien-auslesen-mit-powershell/#respond</comments>
		
		<dc:creator><![CDATA[infoguru]]></dc:creator>
		<pubDate>Mon, 27 Sep 2021 07:58:06 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Admin-Life]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[EDI]]></category>
		<category><![CDATA[Einsteiger]]></category>
		<category><![CDATA[gets the job done]]></category>
		<category><![CDATA[iTextSharp]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[workflow]]></category>
		<category><![CDATA[Zeitersparnis]]></category>
		<guid isPermaLink="false">http://informatik-guru.de/?p=738</guid>

					<description><![CDATA[<p>In diesem Step-by-Step-Tutorial erklären wir Euch wie ihr automatisiert PDF-Dateien mit Powershell auslesen könnt.</p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/pdf-dateien-auslesen-mit-powershell/">PDF-Dateien auslesen mit Powershell</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Wer sich von Euch mit Workflows im Büro oder im Kontext EDI beschäftigt, hat sich sicherlich bereits das ein oder andere Mal die Frage gestellt, ob es nicht eine einfache Möglichkeit gibt eine Vielzahl PDFs automatisiert auszulesen und zu verarbeiten.<br>Diese Möglichkeit gibt es! Dieses Tutorial zum Thema PDF-Dateien auslesen mit Powershell wurde von unseren Freunden von <a href="https://caspar-it-solutions.de/" target="_blank" rel="noreferrer noopener">Caspar IT Solutions</a> für Euch erarbeitet!<br>Falls Ihr mit PowerShell bisher keine Berührungspunkte hattet, startet Ihr als Einstieg besser mit diesem Beitrag:<br><a href="https://informatik-guru.de/coding/einstieg-powershell/
">Einstieg Powershell<br></a></p>



<p>Im folgenden möchte ich Euch Step-by-Step näher bringen, wie ihr PDFs automatisiert auslesen, filtern und verarbeiten könnt. Ziel ist es eine Funktion in PowerShell zu haben, welche Ihr ganz einfach in Eure bestehenden Ideen oder Abläufe einbinden könnt.</p>



<p>Hierfür verwenden wir im folgenden iTextSharp. iTextSharp könnt ihr hier herunterladen: <br><a data-type="URL" data-id="https://www.nuget.org/packages/iTextSharp/5.5.13" href="https://www.nuget.org/packages/iTextSharp/5.5.13">iTextSharp Download</a></p>



<h3>iTextSharp einbinden</h3>



<p>Um iTextSharp nun innerhalb unseres PowerShell Scripts zu verwenden um PDFs automatisiert auszulesen müssen die es zunächst einbinden.<br>Dies geschieht so:</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="569" height="104" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-1.png" alt="" class="wp-image-784" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-1.png 569w, https://informatik-guru.de/wp-content/uploads/2021/09/image-1-300x55.png 300w" sizes="(max-width: 569px) 100vw, 569px" /></figure>



<p>Nun stehen uns im weiteren Verlauf Objekte und Methoden hieraus zur Verfügung.</p>



<h3>Reader initialisieren</h3>



<p>Zunächst beginnen wir mit einem Reader, der uns die jeweilige Datei erst einmal lesend zur Verfügung stellt. Hier kommt es darauf an ob wir von einem Datei-Objekt oder einem Pfad ausgehen. Wenn wir also bspw. in der Variable $filepath den Pfad zur Datei stehen haben legen wir so los:</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="608" height="38" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-2.png" alt="" class="wp-image-785" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-2.png 608w, https://informatik-guru.de/wp-content/uploads/2021/09/image-2-300x19.png 300w" sizes="(max-width: 608px) 100vw, 608px" /></figure>



<p>Im Prinzip haben wir hier eine Dopplung und innerhalb des Reader-Aufrufs könnten wir auch einfach $filepath verwenden, auf die hier gezeigte Weise haben wir allerdings noch die Möglichkeit $filepath mit einem Wildcard zu übergeben(Kunde1234*.pdf).</p>



<h3>Seitenweiser Durchlauf der PDF</h3>



<p>Nun empfiehlt es sich meines Erachtens die Datei seitenweise zu durchlaufen. Bevor wir die weiteren Schritte erarbeiten sollten wir uns auch Gedanken darüber machen wie unsere entsprechende Datei strukturiert ist. Also welche wiederkehrenden Zeilen wir auslesen möchten und auf welchen Seiten diese sich befinden. In unserem Beispiel durchlaufen wir immer die ersten beiden Seiten einer Datei.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="768" height="45" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-3.png" alt="" class="wp-image-786" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-3.png 768w, https://informatik-guru.de/wp-content/uploads/2021/09/image-3-300x18.png 300w, https://informatik-guru.de/wp-content/uploads/2021/09/image-3-696x41.png 696w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<h3>Zeilenweise durchlaufen</h3>



<p>Innerhalb des seitenweisen Durchlaufs lesen wir jetzt jeweils den Inhalt der aktuell zu verarbeitenden Seite zeilenweise in ein String-Array. Um das fehlerfrei tun zu können müssen wir das Zeichen kennen, welches als Zeilenumbruch verwendet wird. Hier liegt nicht unbedingt ein Carriage Return oder ein Newline vor, je nach Quelle der PDF-Datei und somit ihrem Aufbau kann das Zeilen-Trennzeichen unterschiedlich sein. In unserem Fall ist es der Character 0x000A.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="775" height="37" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-4.png" alt="" class="wp-image-787" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-4.png 775w, https://informatik-guru.de/wp-content/uploads/2021/09/image-4-300x14.png 300w, https://informatik-guru.de/wp-content/uploads/2021/09/image-4-768x37.png 768w, https://informatik-guru.de/wp-content/uploads/2021/09/image-4-696x33.png 696w" sizes="(max-width: 775px) 100vw, 775px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="336" height="54" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-5.png" alt="" class="wp-image-788" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-5.png 336w, https://informatik-guru.de/wp-content/uploads/2021/09/image-5-300x48.png 300w" sizes="(max-width: 336px) 100vw, 336px" /></figure>



<h3>Zeilen identifizieren</h3>



<p>Die Zeilen prüfe wir mit einem regulären Ausdruck auf einen Match unserer Wahl.<br>Nehmen wir als Beispiel eine PDF-Datei welche immer an einer beliebigen Position die Zeile &#8222;Kunden-Nr.:&lt;unterschiedlich viel Whitespace&gt;123456&#8220; enthält.<br>Wir möchten also die 123456, bzw. in der Praxis natürlich echte Kundennummern auslesen.<br>Hierfür überprüfen wir zunächst ob die Zeile mit dem String &#8222;Kunden-Nr.:&#8220; beginnt und verwenden vorangestellt den Anker <strong>^</strong>. Dann trennen wir die Zeile mit .split anhand unseres Trennzeichens &#8222;:&#8220; und wählen das zweile zurückgelieferte Element [1], woraufhin wir uns noch von überflüssigem Whitespace verabschieden mit -replace &#8218;\s&#8216;,&#8220;.<br>Anschließend steht in unserer Variable $Kundennummer lediglich die gewünschte 123456.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="430" height="55" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-6.png" alt="" class="wp-image-789" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-6.png 430w, https://informatik-guru.de/wp-content/uploads/2021/09/image-6-300x38.png 300w" sizes="(max-width: 430px) 100vw, 430px" /></figure>



<p>Somit haben wir unsere PDF-Datei ausgelesen und übrig bleibt nur den Reader zu schließen mit $reader.close().</p>



<h2>Zusammenfassung</h2>



<p>Das Ganze lässt sich nun sehr einfach in eine wieder verwendbare Subfunktion wrappen.<br>Hier stellt sich dann nur die Frage, was wir als Parameter verwenden möchten.<br>Wollen wir bspw. die Anzahl Seiten die zu prüfen sind beim Aufruf direkt mit angeben?<br>Den regulären Ausdruck anhand dessen die Zeile identifiziert werden soll?<br>Das Trennzeichen?<br>Den Dateinamen sowie den gewünschten Rückgabewert benötigen wir in jedem Fall.<br>Zusammengefasst könnte die Funktion zum automatisierten Auslesen einer Kundennummer aus einer PDF in PowerShell bspw. so aussehen:</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="917" height="580" src="https://informatik-guru.de/wp-content/uploads/2021/09/image-7.png" alt="" class="wp-image-790" srcset="https://informatik-guru.de/wp-content/uploads/2021/09/image-7.png 917w, https://informatik-guru.de/wp-content/uploads/2021/09/image-7-300x190.png 300w, https://informatik-guru.de/wp-content/uploads/2021/09/image-7-768x486.png 768w, https://informatik-guru.de/wp-content/uploads/2021/09/image-7-696x440.png 696w, https://informatik-guru.de/wp-content/uploads/2021/09/image-7-664x420.png 664w" sizes="(max-width: 917px) 100vw, 917px" /></figure>



<p>Diese Technik zum automatisierten Auslesen von PDF-Dateien lässt sich recht einfach auf den jeweiligen Anwendungsfall adaptieren und spart je nach Büroumgebung oder Auftrag im EDI-Kontext viel händische Arbeit.</p>



<p></p>



<p>Hat Euch dieser Beitrag gefallen?<br>Lasst uns gerne Feedback, Ideen oder Kritik zukommen.<br>Gerne könnt Ihr diesen Beitrag auch teilen und uns einen Besuch auf einem unserer Social Media Kanäle abstatten und wenn Ihr möchtet ein Herzchen oder einen Daumen nach oben da lassen.<br><br>Wenn Ihr Euch für mehr PowerShell- oder iTextSharp-Content interessiert schreibt uns!</p>
<p>Der Beitrag <a rel="nofollow" href="https://informatik-guru.de/coding/pdf-dateien-auslesen-mit-powershell/">PDF-Dateien auslesen mit Powershell</a> erschien zuerst auf <a rel="nofollow" href="https://informatik-guru.de">Informatik Guru</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://informatik-guru.de/coding/pdf-dateien-auslesen-mit-powershell/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
