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.
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!