Laden...

Zugriff auf PDF-Datei << welches Tool?

Erstellt von Maddinel vor 19 Jahren Letzter Beitrag vor 19 Jahren 2.520 Views
Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 19 Jahren
Zugriff auf PDF-Datei << welches Tool?

Hi ihr,
ich habe eine knifflige Frage. Wie kann ich auf den Inhalt einer PDF-Datei zugreifen?
Irgendwie muss sowas doch möglich sein, denn es gibt ja PDF-Editoren die das auch machen,mit denen man den bestehenden Inhalt verändern kann.

Kennt da jemand eine dll oder eine Klasse oder so?
Bin dankbar für alles.

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo Maddinel,

ohne die eigentliche Frage beantworten zu können, kann ich sagen, dass PDF ein sehr mächtiges und damit komplexes Format ist. Die meisten PDF-Editoren beherschen deshalb auch nur ein Subset des Formats. Beliebige PDF-Dateien einzulesen ist daher sicher quasi unmöglich.

Außerdem ist PDF ein "Druckformat", bei dem es darum geht, die einzelnen Elemente auf einer Seite exakt anzuordnen. Dazu wird der ursprüngliche Fließtext, aus dem ja viele Dokumente bestehen, in einzelne Zeilen aufgespaltet und jede dieser Zeilen bildet ein einzelnes Element. Es ist also u.U. schon nicht ganz trivial, alleine die ursprünglichen Absätze im Text zu rekonstruieren.

Es mag aber sein, dass man für spezielle Anwendungsfälle paraktikable Lösungen realisieren kann.

HTH

herbivore

Y
220 Beiträge seit 2004
vor 19 Jahren
Auch nur ein Tipp

Hallo Maddinel,

FULLACK mit herbivore.

Was mir aber aufgefallen ist, ein paar Sachen stehen "normal" in einem pdf-File drin.
Es gibt bestimmt Definitionen von Acrobat die das genau beschreiben...
Vielleicht hilft auch ein Blick auf die OpenSource-Geschichte in C#, die
sich allerdings mit der PDF-Erstellung beschäftigt.
Vielleicht sind da ein paar Zeilen Code, die du umschreiben kannst...

Wenn mir jetzt nur der Name von dem Open SourceProjekt einfallen würde 🤔

Yahoo

PS: Vielleicht fällt mir der Name noch ein, dann werd ich ihn selbstverständlich posten, oder weiß jemand was ich meine???

M
456 Beiträge seit 2004
vor 19 Jahren

Wie die anderen schon sagen, ist das einlesen von PDFs, editieren und zurückschreiben nicht ganz so einfach, da PDF Dateien inzwischen ziemlich komplex geworden sind. Wenn du allerdings immer noch Lust hast, derartiges zu programmieren, hier die Spezifikation des Dateiformates: http://www.wotsit.org/download.asp?f=pdfspec
Viel Spaß 😉

Zum erstellen von PDFs ist z.B. Report.NET ganz gut:
http://report.sourceforge.net/

I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.

Y
220 Beiträge seit 2004
vor 19 Jahren
Wie versprochen, der Link

Hi!

Die Seite beschäftigt sich mit der PDF-Erstellung darunter auch itextsharp (IMHO cooles Tool).

Wie gesagt, vielleicht kannst du daraus was brauchen, wenn du dir den
SourceCode anschaust.

Viel Glück,

Yahoo

E
100 Beiträge seit 2005
vor 19 Jahren

Falls du nur lesend Zugriff haben musst, benutze das Tool pdftext.
Einfach als Process aufrufen nebst Parameter der PDF-Datei, und den Output wieder einlesen. 🙂

--
Man kann Scheisse nicht polieren!

Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 19 Jahren

Ja brauche nur lesend Zugriff.
Wo bekomme ich das Tool. Hast du mal ein Anwenduingsbeispiel, so wie du das meinst?

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================

E
100 Beiträge seit 2005
vor 19 Jahren

Das Tool findest du im xpdf-Paket (http://www.foolabs.com/xpdf/).
Ist Kommandozeilenbasiert, die genaue Syntax weiss ich nun grade nicht, aber das lässt sich ja leicht rausfinden.

Als Objekt zum starten nimmst du am besten "System.Diagnostics.Process" und setzt da das StartInfo-Member entsprechend du es brauchst.
Mache ich auch so, und es läuft astrein. 🙂

Mit Code kann ich Dir grade nicht dienen, das geht erst wenn ich zu Hause bin 😉
Aber eigentlich ergibt sich alles aus dem Beispiel hier:

ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1033/cpref/html/frlrfsystemdiagnosticsprocessclasstopic.htm

--
Man kann Scheisse nicht polieren!

Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 19 Jahren

danke ich werds mal ausprobieren.

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================

Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 19 Jahren

Da find ich mich garnicht zurecht. Welches ist denn die exe die ich benötige?

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================

E
100 Beiträge seit 2005
vor 19 Jahren

Bei downloads nimmst du natürlich das für "x86, DOS/Win32". Also das "xpdf-3.00pl3-win32.zip"
Entpacken, und benutzt das naheliegenste: "pdftotext.exe". 😉
Den Rest brauchst du für weiteres nicht.

Den Aufruf habe ich in einer Funktion untergebracht, das txt wird dann im Startpfad untergebracht. Die Funktion gibt das Textfile incl. Pfad zurück.


		private string CallPdfText(string pdffile) {
			string mypath		= Application.StartupPath + @"\";
			string arguments	= "-layout -nopgbrk ";
			string tempfile		= mypath + "temp.txt";
			string text;

			FileInfo pdf = new FileInfo(pdffile);
			tempfile = pdf.Name.Substring(0, pdf.Name.LastIndexOf("."));
			tempfile += ".txt";

			File.Copy(pdffile, mypath+pdf.Name, true);
			pdffile = pdf.Name;

			// Process ausführen
			Process p2t = new Process();
			p2t.StartInfo.UseShellExecute = false;
			p2t.StartInfo.CreateNoWindow  = true;

			p2t.StartInfo.WorkingDirectory = mypath;

			p2t.StartInfo.FileName = mypath + "pdftext.exe";
			arguments = arguments + "'" + pdffile + "'"; 
			p2t.StartInfo.Arguments = arguments;
			p2t.Start();
			p2t.WaitForExit();
		
			File.Delete(mypath + pdffile);
			return(mypath + tempfile);
		}

--
Man kann Scheisse nicht polieren!

Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 19 Jahren

So ich hab das jetzt mal ausprobiert(besser spät als nie) und habe ein paar Fragen. Deine Funktion macht doch garnicht das was ich gesucht habe. Sie gibt zwar den Pfad einer Textdatei zurück, aber dieso existiert an diesem ort dann nicht. Es wird kein Textfile erzeugt. Wie bekomme ich den PDF-Text zurück?

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================