Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » Datenbank script

Datenbank script

kzimny
Beiträge gesamt: 7

12. Sep 2006, 16:24
Bewertung:

gelesen: 10998

Beitrag als Lesezeichen
Hallo
Seit ein paar Tagen suche ich erfolglos einen Beispiel der Datenbankanbindung (egal welcher Datenbank). Es geht um den Quellcode, keine Scripte zum kaufen etc. Es spielt keine Rolle ob es ODBC oder Native Verbindung ist. Angenommen ich würde gerne eine Tabelle abfragen und daraus die Daten in einem Dokument platzieren (auf welche Art auch immer...). Brauche es für den Einstig, den Rest kann ich selbst programmieren. Kann mir bitte jemand so ein Beispiel geben? Habe leider bisher nix brauchbares gefunden. Vielen Dank!

Datenbank script

jkarl
Beiträge gesamt: 58

12. Sep 2006, 22:14
Bewertung:

gelesen: 10976

Beitrag als Lesezeichen
Hallo kzimny,

ich würde Dir ja gerne etwas weiterhelfen, aber vielleicht sotte Dir nicht alles so egal sein, wie es Dir zu sein schein ("egal, welche Datenbank,...").

Interessant wäre z.B. in welcher Technologie Ddu das Script erstellen möchstest (vb, javascript oder applescript). hast Du Dich schon entschieden, ob das ganze unter Windows oder unter Mac laufen sollte?

Wenn Dir klar ist, wo Du Dich bewegen willst, dann kannst Du ja auch in einem entsprechenden Forum informieren, das sich mit datenbankanbindungen beschäftigt; scliesslich gehöhrt hier ein bisschen mehr dazu, als man in zwei Zeilen schreiben könnte. Vielleicht willst Du Dich dann ja auch auf eine Datenbank-technologie festlegen (soll es Filemaker sein, oder MS Access oder doch lieber aus der Linux Umgebung eine mySql oder PostgreSql oder eventuell bevorzugst Du ja den Microsoft Sql Server bzw. die neuer variante Sql Express, ganz zuschweigen von Oracle, und vielen anderen Alternativen.

Sorry, wenn ich hier so blöd antworte, aber mit etwas konkreteren Angaben hast Du durchaus eine Chance auf konkretere Antworten.

Viele Grüße
Joachim
Dipl. Inf. Joachim Karl
Adobe Certified Expert

Datenbank script

kzimny
Beiträge gesamt: 7

13. Sep 2006, 08:32
Bewertung:

gelesen: 10959

Beitrag als Lesezeichen
Lieber Karl,
Vielen Dank für die Antwort. Zumindest gibst du zu, dass es nicht gerade eine konstruktive Antwort war. Aber es fehlen tatsächlich ein paar Angaben die ich nicht unbedingt bekanntgeben wollte damit ich überhaupt jemand finde der auf die Frage antworten kann. Ok, mir geht es in erster Linie um publizieren der Datensätze auf der DB (MSSQL-Server, Windows XP) in einem InDesign Dokument. Ist dies mit den Scriptsprachen (Javascript oder VBS) oder C++ einfacher?. Da ich neu im Thema InDesign bin und eigentlich .NET (C#) programmiere bin ich etwas unsicher für welche Technologie ich mich Entscheiden soll. Habe mir SDK Framework von Adobe installiert, aber mit dem C++ Code und den .fr Dateien komme ich nicht klar, auch wenn es "genügend" Dokumentation von Adobe dazu gibt (würde man meinen). Nun hoffe ich, dass meine erste etwas offene Frage nun geklärt ist und ich trotzdem jemand finde der mir auf die Spur helfen kann. Vielen Dank. Grüsse Kristof

Datenbank script

Dude
Beiträge gesamt: 63

13. Sep 2006, 11:21
Bewertung:

gelesen: 10932

Beitrag als Lesezeichen
Hallo Kristof,

mit JavaScript ist dein Vorhaben nicht realisierbar. Mittels VisualBasic für Windows oder AppleScript für Mac schon eher. Wenn du aber schon sagst, dass du C++ programmierst, würde ich die InDesign SDK verwenden, um ein eigenes PlugIn für InDesign zu kompilieren.
Ein forum speziell zum Thema InDesign SDK und bestimmt viele Beiträge zu Datenbank gibt's im Adobe Forum unter:
http://www.adobeforums.com/cgi-bin/webx/.ee6b334/

Vielleicht bringt dich das weiter. Allerdings wird es schwer werden, dass dir jemand seinen Quellcode für solche Entwicklungen offenlegt, da dies meist Entwicklungen von Firmen sind, die damit ihr Geld verdienen.
Gruß Daniel

____________________________________________________

Wind down and relax with a trusted friend and enjoy a premium beer brewed using only the finest malted barley, hops and water.

Datenbank script

kzimny
Beiträge gesamt: 7

13. Sep 2006, 11:36
Bewertung:

gelesen: 10929

Beitrag als Lesezeichen
Hallo Daniel,
Vielen Dank für die Tips! Das ist leider so, dass die Firmen kaum etwas preisgeben wollen und man sozusagen mit "try and error" sich durcharbeiten muss. Bei Adobe-Forum gibt es keine konkreten Ratschläge, Quellcode, nur ab und zu ein Hinweis. C++ ist nicht wirklich mein Element, ich finde es zu umständlich für mein Vorhaben. Werde es mit VBS versuchen. Hat jemand trotz dem Firmengeheimnis einen Hinweis, Rat, usw. wie ich anfangen soll? Gruss Kristof

Datenbank script

Dude
Beiträge gesamt: 63

13. Sep 2006, 12:07
Bewertung:

gelesen: 10920

Beitrag als Lesezeichen
Noch ein Hinweis:

Du kannst in InDesign für Windows auch kompilierte exe Dateien als Skript aufrufen. Dies beduetet wiederum, dass du neben dem InDesign Scripting Objectmodel auch weitere in dein VisualBasic Code einbauen kannst. Also würde ich dir raten, schau nach einer OpenSource dll für Datenbankverbindungen (SQL) mittels VisualBasic. Ansonsten per Hand selbst in VisualBasic schreiben mit dem Connection.Object.
Gruß Daniel

____________________________________________________

Wind down and relax with a trusted friend and enjoy a premium beer brewed using only the finest malted barley, hops and water.

Datenbank script

jkarl
Beiträge gesamt: 58

13. Sep 2006, 12:23
Bewertung:

gelesen: 10917

Beitrag als Lesezeichen
Hallo Kristof,

aha. es geht also um SQL Server (wahrscheinlich 2000? oder Express?)
ich vermute weiterhin: es geht um InDesign Desktopn auf einem Windows Rechner (d.h. Windows 2000 oder Windows XP).

zu den Techniken, die hier möglich sind:

1. javascript
der javascript Interpreter läuft entwerder im Adobe Extended Script Toolkit oder auch ganz einfach innerhalb InDesign (Script-Palette).

ich bin mir aber nicht ganz sicher, ob man aus dieser Umgebung per javascript eine Datenbank ansprechen kann -> Martin Fischer weiss das bestimmt.

2. vb script
innerhalb Adobe InDesign (Script palette)
Du kannst von dort ganz normale Datenbank-Connections öffnen, einen Select SQL-Befehl ausführen und im recordset alle zurückgelieferten Datensätze durchlaufen, Texte und Preise und Bild-Urls (oder sogar ganze Bilder) aus der Datenbank entnehmen und die Inhalte in geeignete InDesign-Rahmen (Textrahmen, tabellen, Bildrahmen) einbauen.

3. c# (Microsoft .Net)
das favorisiere ich an dieser Stelle...

das c# läuft ausserhalb von InDesign in einem separaten betriebssystem-prozess.
Es kann deshalb sehr viel leichter auf die verfügbaren Ressourcen des Betriebssystems zugreifen (Dateisystem, Netztwerk, Datenbanken)
mit Hilfe von c# (oder auch vb.Net) kannst Du Adobe InDesign "fernsteuern" und nahezu alles machen, was Du auch innerhalb InDesign mit vb oder javascript machen kannst.

wie oben:
Du kannst von dort ganz normale Datenbank-Connections öffnen, einen Select SQL-Befehl ausführen und im recordset alle zurückgelieferten Datensätze durchlaufen, Texte und Preise und Bild-Urls (oder sogar ganze Bilder) aus der Datenbank entnehmen und die Inhalte in geeignete InDesign-Rahmen (Textrahmen, tabellen, Bildrahmen) einbauen.


Du kannst nicht einfach zwei oder drei Zeilen programmieren.
Du solltest Dich zunächst mindestens mit den folgendne Themen vertraut machen:

Microsoft .Net Framework ( 1 oder 2)
zugehörige IDE, z.B. kostenlose Express Versionen
COM-Objekte, InterOp
Datenbankanbindung aus dotNet (dazu gibts ja wirklich tausende Beiträge in mindestens 50 Foren, einige davon sogar in deutsch - das mus nicht wiederholt werden, ein klein bisschen fleissarbeit solletst Du schon selber erledigen!)

und Du brauchst natürlich einen Plan, wei die Daten sturkturiert werden können (in InDesign und in der Datenbank), damit das gewünschte Layout auich wirklich erzielt werden kann. Der teufel steckt hier wirklich im Detail (langjährige Erfahrung!!!! die kann nicht durch eine Nachfrage im Forum ersetzt werden, auch wenn das schön wäre für Dich -> also üben, forschen, lesen, probieren....).



4. c++
Plugin für InDesign
das ist mit Abstand die in der Ausführung schneste und sicherste Methode, um Database Publihing zu machen.
Wohl aber auch die icherste, um Dich ganz schnell in den Wahnsinn zu treiben.
Definitiv nichst für Anfänger.

Da solltest Du zunächst lernen, wie man mit folgendne themen umgeht:
- objektorientiertes programmieren
- C++ und zugehörige Speicherverwaltung
- Datenbaknen an sich, SQL-Abfragen und Programmieren von Datenbankapplikationen
- und nicht zuletzt: Design Patterns - von diesen wird nämlich innerhalb InDesign reichlich Gebrauch gemacht. sie werden in der Doku auch nicht erklärt. Du musst die schon vorher verstehen.




Also nochmal: mein Tipp: c#, wenns ausschlieslich unter Windows laufen soll.

Du könntest Dir ja mal ein Buch durchlesen, das sich mit dem Thema c# und SQL Server beschäftigt. Dort wirst mit an Sicherheit grenzender Wahrscheinkeit 90 % der von Dir gesuchten Antworten finden. Die restlichen 10% bekommst Du hier - sobald Du in der Lage, Deine Frage präzise zu formulieren, und zwar so, da man nicht zwingend ein Buch schreiben müsste, um sie beantworten zu können......


Weiterhin viel Spass bei Deinem Vorhaben, es wird funktionieren...

Ein kleiner Hinweis am Schluss: http://www.connectionstrings.com/
Du bekommst dann eventuell einen Einblick in die Anzahl der möglichen Arten, wie Du Dich mit einer Datenbank verbinden kannst.
und http://www.2enetworx.com/...les/dbconnection.asp
und http://www.datadirect.com/...erver_code/index.ssp

und (eigentlich immer der beste Tipp!) http://www.google.de

Joachim
Dipl. Inf. Joachim Karl
Adobe Certified Expert

Datenbank script

kzimny
Beiträge gesamt: 7

13. Sep 2006, 12:27
Bewertung:

gelesen: 10916

Beitrag als Lesezeichen
Dankeschön. Das ist ein guter Hinweis welcher ich mir bereits schon angeschaut habe. Leider ist das wahrscheinlich nix für mich. Ich soll in Zukunft eine DB-Anbindung schaffen mit dem Ziel In-Design Dokumente von In-Design Server automatischem erstellen zu lassen. Hier wäre die Lösung mit einem EXE nicht geeignet, oder? Weiss jemand ob der In-Design Server ein EXE ausführen kann und die Datensätze aus der DB über das EXE in das In-Design Dokument einfügen kann? Es wird kompliziert mit mir, ich merke es selbst... Sorry. Aber solche Antworten findet man kaum. Danke, Gruss Kristof

Datenbank script

Dude
Beiträge gesamt: 63

13. Sep 2006, 12:41
Bewertung:

gelesen: 10912

Beitrag als Lesezeichen
Grundsätzlich kann der InDesign Server genau wie die InDesign Application Skripte ausführen. Da der InDesign Server jedoch auf Windows 2003 Server oder Mac OSX Server laufen kann, ist dies das entscheidene Kriterium, ob eine exe-Datei für dein Vorhaben in Frage kommt.

Wie mein Vorredner würde ich persönlich für solch ein Vorhaben auf C++ setzen, und ein eigenes PlugIn für InDesign schreiben. Dieses PlugIn, könnt auch für den InDesign Server verwendet werden.
Gruß Daniel

____________________________________________________

Wind down and relax with a trusted friend and enjoy a premium beer brewed using only the finest malted barley, hops and water.

(Dieser Beitrag wurde von Dude am 13. Sep 2006, 12:44 geändert)

Datenbank script

kzimny
Beiträge gesamt: 7

13. Sep 2006, 12:43
Bewertung:

gelesen: 10911

Beitrag als Lesezeichen
Hallo Karl,
Tusend Dank für die ausführliche Antwort. So was sieht man sehr selten. Ich bin sprachlos...
In C# kenne ich mich sehr gut aus (5 jahre Erfahrung sowohl mit AST.NET wie WinForms).
Die Technologie ist .NET C#, MSSQL-Server 2000. das Betriebssystem ist WinXP Prof. OO Programmierung und DB-Design ist meine alltägliche Arbeit. Nur das In-Design kenne ich fast nicht.
Ein Plan werde ich brauchen wie du sagst, das kommt noch.
Nun kannst du einen kurzen Blick auf meine letzte Frage werfen?
Denkst du wäre so was möglich mit dem In-Design Server und einem EXE? Da wäre ich dir sehr für den Hinweis dankbar. Grüsse Kristof

Datenbank script

kzimny
Beiträge gesamt: 7

13. Sep 2006, 12:54
Bewertung:

gelesen: 10905

Beitrag als Lesezeichen
Hallo Daniel,
ja, den Win2003 Server habe ich auch zur Verfügung. Es soll nur unter Windows laufen, kein MAC. Somit wäre die Frage nach einem EXE mit C# immer aktueller. Für C++ habe ich keine Nerver, das ist was für die Freaks, die 20 Stunden am Tag mit der Nase im Bildschirm sitzen.
So viel zeit habe ich leider nicht. Die Frage ist ob es möglich ist so ein exe aufzurufen und ein neuen, bestehendes In-Design Dokument mit den Daten aus der DB zu aktualisieren.
Danke für die Antwort. Grüsse Kristof

Datenbank script

jkarl
Beiträge gesamt: 58

13. Sep 2006, 13:09
Bewertung:

gelesen: 10901

Beitrag als Lesezeichen
Hallo kristof,


zur Vollständigkeit:

Die Möglichkeit visual basic gibt es auch noch, wie Dude oben geschrieben hat.
Ich würde aber zur Verwendung der ganz normalen Connection-Objekte raten, 3rd Party dlls sind eigentlich nicht nötig und machen den Überblich erst mal noch schwerer. Eventuell macht aber - je nach Projektgrösse - der Einsatz eines O/R-Mappers Sinn (es sollte aber gut ausgewählt werden, welcher! Starten am besten ohne Mapper, direkt mit SQLConnection oder ADOConnection und SQL-Select befehlen, die über die Connection von der Datenbank ausgeführt werden)

VB:
Hier hast Du die Wahl zwischen

vbscript (Editor=Notepad oder ultraedit)

oder zur Erstellung von compilierten exe:
Visual Basic 5 Control Editon (altes Vb, kostenlose IDE)
Visual Basic 6 (alte, aber immer noch kostenpflichtige IDE)
Microsoft Visual Studio 2001 oder 2003 (dotNet 1.0 bzw. 1.1)
Microsoft Visual Studio 2005 (dotNet 2.0)

bei DotNet ist es fast egal,
ob vb oder c#, das kann sogar kombiniert werden.
es geht sogar auch mit delphi oder diversen anderen dotNet kompatiblen Sprachen





INDESIGN Server: aha, neue Voraussetzungen.
-----------------------------------------------
Du kannst InDesign Server über zwei verschiedene Wege fernsteuern:

1. SOAP (HTTP)
die Adobe Doku ist extrem dünn!!!

der InDesign Server (unter win2003 Server, nicht unter Win 2000 oder xp lauffähig!!!)(oder unter Mac OS X Server lauffähig, nicht unter dem normalen Client Mac OS X) hat auch einen integrierten Webserver, der auf einen einzustellenden Port auf SOAP Anfragen reagiert.

Auf dem InDesign Server selbst kannst Du (analog zur Script palette) vb scripts, javascripts - und wenn der Hinweis oben auch hier zutrifft, auch exe's ausführen.

im script musst Du natürlich dafür sorgen, dass die entsprechende Textrahmen erstellt und befüllt werden und dabei idealerweise zeichenformate angewendet werden sollen oder sonstige individuelle Formatierungen; analog dazu Bilder und tabellen.... Wie das mit den javascripts geht, erfährst Du aus sehr zahlreichen Beiträgen in hilfdirselbst.ch!! Wer suchet, der findet; der server verhält sich relativ ähnlich zum client, nur, dann man das ergebnis eben nicht sofort sieht.

Der Soap-Aufruf selbst kann dabei aus einem beliebigen Rechner in einer beliebigen technik ausgeführt werden, solange diese Technik dazu in der Lage ist, http-Requests automatisch zu senden (ja, es geht auch aus dem Browser!)
und die erhaltenen Antworten auszuwerten (text, html oder xml)

Bei allem sollet aber beachtet werden:; was passiert, wenn irgendwo ein fehler auftritt.......

Möglicherweise kannt Du im script dann wieder bezug auf ein selbst oder von jemanden anderem geschriebenes C++-Plugin nehmen - habs noch nicht getestet.


2. Fernsteuerung über die COM-Application Programming Interface (API)

das geht ganz genauso wie in einem der vorhergehenden posts beschreiben.
nur dass das COM-Objekt einen anderen namen hat als der normale Client.

das exe läuft ebenfalls auf dem Serverals separater Prozess und steuert den InDesign Server fern (wie die fernbedienung von Deinem fernseher).


Du hast wieder (fast) die ganze palette von Möglichkeiten, nur javascript scheidet jetzt aus (soviel ich weiss jedenfalls, kann mich aber auch täuschen)


ich selbst verwende dazu Microsoft .Net 2.0, das Microsoft Visual Studio 2005 c# Express Edition und c# (geht auch mit vb). dort erstelle ich eine ganz normale Applikation (mit eigener Oberfläche oder als Kommandozeile oder als dll, die selbst wieder in einem Webserver-IIS-prozess läuft, je nach Anforderung!!)


Hinweis für Scripting des Clients (Server ist relativ analog, aber ohne User-Interaktion, alo ohne alert, ohne formular, ohne MessageBox)http://www.adobe.com/...esign/scripting.html
hier empfehle ich insbesondere den Download (UND DAS LESEN) des InDesign Scripting Guide (PDF, 2.7M) und InDesign Scripting Reference (PDF, 20.3M)

PS: hast Du überhaupt eine InDesign Server Entwicklerlizenz?
PSS: Gerne berate ich in solchen Fällen, allerdings nicht im Rahmen des Forums.


noch ein kleiner Tipp:
geklaut aus o.g. Scriping Guide,
ein kleines Beispiel in vbcript (würde in vb5 ind vb6 sehr ähnlich sein)
Code
Set myInDesign = CreateObject("InDesign.Application.CS2") 
Rem Example of an optional parameter (requires that you have Rem a document preset named "7x9_book_cover").Set myDocument = myInDesign.Documents.Add(myInDesign.DocumentPresets.Item("7x9_book_cover"))
Set myOval = myDocument.Pages.Item(1).Ovals.Add
myOval.GeometricBounds = Array("6p", "6p", "18p", "18p")
Set myRectangle = myDocument.Pages.Item(1).Rectangles.Add
myRectangle.StrokeWeight = 4
Rem Example of a required parameter.
Set myGroup = myDocument.Pages.Item(1).Groups.Add(Array(myOval, myRectangle))




Viele Grüße
Jaochim Karl
Dipl. Inf. Joachim Karl
Adobe Certified Expert

Datenbank script

jkarl
Beiträge gesamt: 58

13. Sep 2006, 13:18
Bewertung:

gelesen: 10895

Beitrag als Lesezeichen
hi,

5 Jahr programmierung in der Microsoft Welt incl. .Net.

na dann weist Du ja selbst am besten, wie man infos aus der Datenbank in Strings und Integers und Doubles bekommt.

Du kannst eine ganz normale .Net exe erstellen!

es geht also nur noch um den Teil, wie Du InDesign ansprichts.

ich hab mal ein paar zeilen aus einem projekt zusammengeschnitten:

zuallererst einen Verweis einrichten auf die InDesign COM API.


dann
z.B. in VB.Net 1.1:
Code
        ' INDESIGN CS API-FUNCTIONS 
' Build a new InDesign Book with filename given in the job-xml-file

Dim myInDesignApplication As InDesign.Application
Dim myInDesignDocument As InDesign.Document
Dim myInDesignBook As InDesign.Book


Dim bPdfIndesignDefaultPreset As Boolean

Dim myInDesignPDFExportPresets As InDesign.PDFExportPresets
Dim myInDesignPDFExportPreset As InDesign.PDFExportPreset
Dim myInDesignCurrentPDFExportPreset As InDesign.PDFExportPreset

...

Try
myInDesignApplication = New InDesign.Application()
myInDesignBook = myInDesignApplication.Books.Add(sBookFilename)
Catch e As Exception
bError = True
End Try



....


Try
myInDesignDocument = myInDesignApplication.Open(sIndtFilename, bShowingAsWindow)
myInDesignDocument.Save(sInddFilename)
Catch e As Exception
Finally
'
End Try


....


Try
myInDesignDocument.Close()
Catch e As Exception
Finally
myInDesignDocument = Nothing
myInDesignCurrentPDFExportPreset = Nothing
End Try



ich hätte auch ein paar codenippets für c# 2.0 InDesign
Server, die liegen aber auf einem anderen Rechner ...
Dipl. Inf. Joachim Karl
Adobe Certified Expert

Datenbank script

jkarl
Beiträge gesamt: 58

13. Sep 2006, 13:25
Bewertung:

gelesen: 10893

Beitrag als Lesezeichen
fast vergessen:

der Verweis:
- im Projekt:Verweis hinzufügen, Reiter "COM" wählen
- dann "Adobe InDesign CS Type Library" wählen und importieren.


und natürlich im vb:
Imports InDesign
Dipl. Inf. Joachim Karl
Adobe Certified Expert

Datenbank script

jkarl
Beiträge gesamt: 58

13. Sep 2006, 13:32
Bewertung:

gelesen: 10887

Beitrag als Lesezeichen
hallo kristof

RANDBEMERKUNG zu SERVER:

hast Du Dich schon mal mit den Lizenzbedingungen für den Adobe InDesign Server auseinandergesetzt? Und dem Preis für Lizenzen und Wartungsvertrag?

Hast Du eine Adresse, woher Du den Server kaufen kannst?
Und von wem Du Service/Support dazu bekommen kannst.

Hast Du eine grobe Vorstellung davon, wieviel Geld Du investieren musst, um bestimmte Anforderungen bei InDesign Server umsetzuen zu können (und ich meine lediglich die Lizenzgebühren).

Kennst Du die Rahmenbedigungen der Lizenzpolitik und ab wann Du Deine Anwendungsidee mit dem Systemhersteller abklären musst?
Nur ein kleiner Hinweis das: ASP-Plattform: Application Service Providing geht - wenn überhaupt - nur mit expliziter Zustimmung von Adobe in jedem Einzelfall!

Ich würde an Deiner Stelle zunächst mal solche organisatorischen Fragen klären.
Sonst kann es passieren, dass Du die Lösung baust, aber später nicht einsetzen darfst, bzw. nur unter bestimmten Vorausetzungen....

Joachim
Dipl. Inf. Joachim Karl
Adobe Certified Expert

Datenbank script

kzimny
Beiträge gesamt: 7

13. Sep 2006, 15:42
Bewertung:

gelesen: 439

Beitrag als Lesezeichen
Hallo Karl,
Vielen Dank für die Hinweise. Ja der Teil mit Lizenzierung ist eigentlich bereits geklärt (mehr dazu kann ich im Moment nicht sagen, tut mir leid). Es steht der Teil mit Umsetzung im Vordergrund. Du hast mir bisher sehr geholfen. Vielen Dank. Ich werde deine Tips und Inputs für die Tests brauchen und dich über mein Projekt informieren, falls du interesse hast natürlich. Möglicherweise werde ich auch Verstärkung brauchen was auch für dich interessant werden könnte. Grüsse Kristof