AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi PDF-Eigenschaften auslesen ohne Komponente

PDF-Eigenschaften auslesen ohne Komponente

Ein Thema von handres · begonnen am 17. Feb 2008 · letzter Beitrag vom 17. Feb 2008
Antwort Antwort
handres

Registriert seit: 28. Aug 2006
2 Beiträge
 
#1

PDF-Eigenschaften auslesen ohne Komponente

  Alt 17. Feb 2008, 12:54
Hallo zusammen

Ich versuche (nahe an der Verzweiflung) die PDF-Eigenschaften wie Titel, Subject, Autor auszulesen, ohne dafür eine Komponente einzusetzen (wäre zu langasam, das Auslesen geschieht in einem zeitkritischen Loop). Bisher hab ich's mit StgOpenStorageEx versucht, das scheint aber nur mit Office-Dateien, JPEGs, usw. zu funktionieren. Die PDF-Eigenschaften liegen irgendwie schräg im File.

Hat das schon mal jemand hingekriegt? Ich lese jetzt halt die zwei letzten KBytes des PDF-Docs und parse z.B. nach "/Subject", um die Info herauszuholen. Geht schon, aber vielleicht gibt es einen eleganteren Weg?

Danke für jeden Input,
Herbie
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: PDF-Eigenschaften auslesen ohne Komponente

  Alt 17. Feb 2008, 13:23
Hi und erstmal Herzlich Willkommen in der DP

Was genau heißt denn in Deinem Fall ohne Komponente? Ich meine an sich ist die Definition des Komponentenbegriffs etwas schwierig (glaube es war sowas wie unabhängig entwickelbar, nur definierte Abhängigkeiten und eine bekannte Schnittstelle, zumindestens sinngemäß, aber kommt auch drauf an nach wem man da gehen möchte).
Wenn es zeitkritisch ist, in welcher Zeit benötigst Du denn diese Informationen?

An sich ist ja die Spezifikation von PDFs offen gelegt. Wenn ich mich an die richtig erinnere, so ist ein Dokument Baumartig aufgebaut, man hat Verweise auf bestimmte Sektionen, ganz unten ist dann immer der Verweis auf das letzte, gültige TOC oder so? Ich würde jedenfalls sagen, dass Dein Ansatz im Prinzip schon richtig ist, ggf. musst Du nur schauen, ob es wirklich immer die letzten 2 Byte sind, in denen der Offset zum TOC stand (gehe mal davon aus, dass Du das schon überprüft hast). Da dann nach den Offsets für die gesuchten Informationen suchen ist definitiv der schnellste und zudem auch noch sauberste Weg. Die Alternative besteht eher darin, dass Du ganz greedy durchs ganze Dokument läufst, was eigentlich nie schneller sein sollte.

Gruß, Der Unwissende
  Mit Zitat antworten Zitat
handres

Registriert seit: 28. Aug 2006
2 Beiträge
 
#3

Re: PDF-Eigenschaften auslesen ohne Komponente

  Alt 17. Feb 2008, 14:15
Zitat von Der_Unwissende:
Hi und erstmal Herzlich Willkommen in der DP

Was genau heißt denn in Deinem Fall ohne Komponente?
Jo! Hab' mich da wohl nicht ganz klar ausgedrückt: Ich meinte ohne Gnostice, pdfTools und wie die alle heissen, weil die Zeitdauer zum Laden des Files mittels einer solchen Compo in meinem Fall einfach zu gross ist. Ich scrolle durch eine Liste mit Dateinamen von PDFs, die während des Scrollens mit den Eigenschaften des Dokuments ergänzt werden.

Ich machs jetzt Quick&Dirty, lese einfach die letzten zwei kBytes des Files und suche darin nach dem von mir benötigten "/Subject". (In den PDF-Specs schau ich später noch nach dem genauen Offset, damits nur noch Quick und nicht mehr Dirty ist.)

Thx!
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: PDF-Eigenschaften auslesen ohne Komponente

  Alt 17. Feb 2008, 15:25
Auch wenn es dir vermutlich nicht passt, schau dir vielleicht mal das Tool an.

Gruss
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
419 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: PDF-Eigenschaften auslesen ohne Komponente

  Alt 17. Feb 2008, 15:56
Hallo,

einfach nur die letzten paar KB einlesen und scannen hilft Dir im Allgemeinen nicht viel: Du mußt nämlich schauen, ob das File-Trailer Dictionary einen /Info Eintrag hat. Das ist aber eine indirekte Referenz auf ein Info Dictionary, die Du dann erst mal via XREF-Sections auflösen mußt. (und die Daten stehen nicht unbedingt am Ende des Dokuments!). Wenn Du willst, daß es sicher geht (so das PDF überhaupt diese Daten hat), dann mußt Du wohl externe Komponenten verwenden, die diese daten auslesen und verarbeiten können (oder Du hast vieel Zeit und arbeitest Dich durch die PDF Spezifikation durch und baust Dir deinen eigenen PDF-Parser)

Grüße,
Uli
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz