Feedback

C# - GetPDFContentString

Veröffentlicht von am 08.04.2009
(1 Bewertungen)
Es muss itextsharp.dll referenziert sein.
Kann bezogen werden von: http://itextsharp.sourceforge.net
Dann nutzt die Funktion das Objektmodell aus dem Namespace "iTextSharp.text.pdf". Deshalb bitte den Namespace importieren.

Ich verwende das Resultat der Funktion um alle eMailadressen aus einem PDF Dokument zu extrahieren. Grundlage dafür ist auch ein Sippet von Jan: http://dotnet-snippets.de/dns/alle-e-mail-adressen-aus-einem-string-bzw-text-filtern-SID759.aspx
-
Gruss aus Freiburg i.Br.
GFU-Schulungen  [Anzeige]

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

Visual Studio Team Foundation Server 2017/2015 (TFS) für Projektmitglieder - Kompakt

Nach Teilnahme an dieser Schulung sind Ihnen die Grundlagen von ALM geläufig. Sie planen und steuern Projekte effizient mit dem Visual Studio Team Foundation Server.

String GetPDFContentString(String path)
{
	var sb = new StringBuilder();
	var reader = new PdfReader(path);
	{
		for (Int32 i = 1; i <= reader.NumberOfPages; i++)
		{
			PdfDictionary pdfDictionary = reader.GetPageN(i);
			PRIndirectReference objectRef;
			var PName = PdfName.CONTENTS;

			try
			{
				objectRef = pdfDictionary.Get(PName) as PRIndirectReference;
			}
			catch (Exception ex)
			{
				return ex.Message;
			}

			var stream = PdfReader.GetPdfObject(objectRef) as PRStream;
			byte[] SBytes = PdfReader.GetStreamBytes(stream);
			var token = new PRTokeniser(SBytes);
			while ((token.NextToken()))

				switch (token.TokenType)
				{
					case PRTokeniser.TK_STRING:
						sb.Append(token.StringValue);
						break;
					case PRTokeniser.TK_OTHER:
						switch (token.StringValue)
						{
							case "ET":
								sb.Append("\n");
								break;
						}
						break;
				}
			token = null;
			stream = null;
			objectRef = null;
		}
	}
	reader = null;

	return sb.ToString();
}
Abgelegt unter iTextSharp, PDF, Content.

1 Kommentare zum Snippet

Ruedi schrieb am 15.05.2012:
15.05.2012:
Danke für den Einstieg.

Die Library bietet inzwischen bessere Funktionen:

public string ReadPdfFile(string fileName)
{
StringBuilder text = new StringBuilder();

if (File.Exists(fileName))
{
PdfReader pdfReader = new PdfReader(fileName);

for (int page = 1; page <= pdfReader.NumberOfPages; page++)
{
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);

currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
text.Append(currentText);
pdfReader.Close();
}
}
return text.ToString();
}
 

Logge dich ein, um hier zu kommentieren!