[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Link Export Skript + Änderungen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Link Export Skript + Änderungen

zaphodbeeblebroxx
Beiträge gesamt: 408

28. Jan 2008, 10:10
Beitrag # 31 von 101
Beitrag ID: #333574
Bewertung:
(14972 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Hallo,

@Michael/Papst:
Zitat (Irgendwann lerne ich es selbst ;-))


Das wäre doch die beste Gelegenheit für einen Anfang gewesen:

In der Scripting Reference/Scripting Guide wäre diese Information zu finden gewesen. Außerdem gibt es auf HDS viele Beispiele, in denen per Skript eine "Log-Datei" z.B. auf den Desktop gespeichert wird.

Code
var myPath = '~/Desktop/MeinOrdnerName'; //auf Desktop speichern 



als Antwort auf: [#333458]
X

Link Export Skript + Änderungen

Michael Pabst
Beiträge gesamt: 2858

28. Jan 2008, 10:35
Beitrag # 32 von 101
Beitrag ID: #333578
Bewertung:
(14961 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mathias,

Zitat Das wäre doch die beste Gelegenheit für einen Anfang gewesen:


Das war tatsächlich eine Gelegenheit für einen Anfang und ich hatte diese Lösung auch gefunden. Nur wird jetzt die .txt nicht im gewünschten Ordner abgelegt, sondern der Ordnername wird an den Dateinamen angehängt und die Datei liegt lose auf dem Desktop. Ich mache also offenbar gleich schon einen Anfängerfehler.

Gruß
Michael


als Antwort auf: [#333574]

Link Export Skript + Änderungen

zaphodbeeblebroxx
Beiträge gesamt: 408

28. Jan 2008, 10:41
Beitrag # 33 von 101
Beitrag ID: #333580
Bewertung:
(14960 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Hallo,

kannst Du mal Deinen geänderten Code posten?


als Antwort auf: [#333578]

Link Export Skript + Änderungen

Michael Pabst
Beiträge gesamt: 2858

28. Jan 2008, 10:58
Beitrag # 34 von 101
Beitrag ID: #333588
Bewertung:
(14950 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Code
var myPath = '~/Desktop/Bilderlisten'; 


Gruß
M.


als Antwort auf: [#333580]

Link Export Skript + Änderungen

zaphodbeeblebroxx
Beiträge gesamt: 408

28. Jan 2008, 11:12
Beitrag # 35 von 101
Beitrag ID: #333595
Bewertung:
(14934 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Hallo,

ist der Ordner, auf dem Desktop vorhanden? Wenn nein, dann manuell anlegen. Slash nach "Bilderlisten" einfügen.

Code
var myDocName = myDoc.name.split(".indd")[0];     
var myTXT_File = myDocName + '.txt';
var myPath = '~/Desktop/Bilderlisten/';

...

var f = new File( myPath + myTXT_File );


Alternativ: Log-Datei einfach direkt auf Desktop speichern.


als Antwort auf: [#333588]

Link Export Skript + Änderungen

Michael Pabst
Beiträge gesamt: 2858

28. Jan 2008, 11:32
Beitrag # 36 von 101
Beitrag ID: #333598
Bewertung:
(14930 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mathias,

erstmal tausend Dank für die Hilfe. Rückmeldung heute abend. Jetzt muss ich andere Dinge tun.

Gruß
M.


als Antwort auf: [#333595]

Link Export Skript + Änderungen

Michael Pabst
Beiträge gesamt: 2858

28. Jan 2008, 13:47
Beitrag # 37 von 101
Beitrag ID: #333627
Bewertung:
(14895 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Funktioniert.

M.


als Antwort auf: [#333595]

Link Export Skript + Änderungen

Michael Pabst
Beiträge gesamt: 2858

29. Jan 2008, 11:21
Beitrag # 38 von 101
Beitrag ID: #333846
Bewertung:
(14846 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo.

"Wenn man den kleinen Finger reicht … "

Könnte man dem Skript beibringen, auch die Bit-Tiefe der Bilder auszulesen? Das würde noch ein paar Leute glücklicher machen.

Häufig schleichen sich hier Nicht-8-Bit-CMYK Bilder ein, die Probleme bei der Ausgabe verursachen.

Gruß
Michael


als Antwort auf: [#333595]

Link Export Skript + Änderungen

Don the Bear
Beiträge gesamt: 58

30. Jan 2008, 16:19
Beitrag # 39 von 101
Beitrag ID: #334181
Bewertung:
(14807 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,
erst einmal ein Riesenlob an Martin und Nighthawk für dieses tolle Script.

Ich habe folgendes Problem damit: Auf meinem MacBook Pro mit ID CS2 läuft es problemlos, auf meinem G5 nicht, d. h. es wird eine Textdatei erzeugt, die leer ist. (Es stehen dort nur die Header "Name % Vertical % Horizontal Width Height Rotation" usw.)

Die Preferences von ID habe ich schon gelöscht, das war es nicht. (Beide Rechner haben 10.4.11, ID-Version ist 4.05)

Hat jemand eine Idee?

Vielen Dank und viele Grüße
Don


als Antwort auf: [#333846]

Link Export Skript + Änderungen

Martin Fischer
  
Beiträge gesamt: 12783

30. Jan 2008, 16:54
Beitrag # 40 von 101
Beitrag ID: #334193
Bewertung:
(14791 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das könnte an der Exportfunktion liegen.
Ist mir auch schon vorgekommen, daß in der exportierten Datei der gesamte Inhalt gelöscht wird, wenn sich ein Sonderzeichen in die Daten einschleicht.

Schick mir mal Dein Skript (email im Profil), damit ich sehen kann, mit welcher Version des Skripts Du arbeitest. Dort könnte ich die Exportfunktion dann entsprechend anpassen.


als Antwort auf: [#334181]

Link Export Skript + Änderungen

Martin Fischer
  
Beiträge gesamt: 12783

26. Mär 2008, 09:10
Beitrag # 41 von 101
Beitrag ID: #343030
Bewertung:
(14552 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
In Dateieigenschaften von verknüpften Bildern auslesen haben wir herausgefunden, daß die im Skript verwendete Funktion getPage() unter InDesign CS3 keine verwertbaren Ergebnisse liefert und das Skript mit einer Fehlermeldung beendet.

Hier eine an InDesign CS3 angepaßte Version des LinkExport-Skripts.


Code
// Link Export and Preflight Images Final 1.1.jsx  

/*
v1.1
- Funktion getPage() an InDesign CS3 angepaßt
- Ausgabe der Maße der Bildbox anstatt des Bilds
v1.0
Dieses Script exportiert den Namen, Skalierung,
Grösse, Rotation, Auflösung, Farbraum, Dateityp,
Seite welche das Bild enthält sowie den Dateipfad
der in einem Dokument enthaltenen Bilder in eine
( mit Tabs getrennte ) Text Datei. ( Dokumentname.txt ).

Als Besonderheit wurden noch einige Kontrollmarkierungen
eingebaut welche
- unterschiedliche Skalierungen ( xxx [!] )
- Auflösung unter 250ppi ( "LQ! [xxx] )
- Bilder ausserhalb der Seite ( x [Outside page!] )
anzeigen.
__________________________________________________________

Ein Dankeschön ist an Martin Fischer zu richten, welcher
das basis Script zur Verfügung gestellt und mir tatkräftig
bei den Änderungen geholfen hat.

Nighthawk
www.hilfdirselbst.ch
*/

var myDoc = app.documents[0];
if ( myDoc.saved == false )
{
alert( "Error!\rPlease save the document!" );
exit( );
}
var myDocName = myDoc.name.split( ".indd" )[0];
var myTXT_File = myDocName + '.txt';
var myPath = myDoc.filePath + "/";
var myCreator = "R*ch";
var myType = "TEXT";
var theFiles = myDoc.links;
var myData = "Name\t% Vertical\t% Horizontal\tWidth\tHeight\tRotation\tOrig. Res.\tUsed. Res.\tCol. Space\tFile type\tPage Nr.\tPath\r";

var f = new File( myPath + myTXT_File );
f.open( 'w', myType, myCreator );
f.writeln( myData );

for ( myCounter = 0; myCounter<theFiles.length;myCounter ++ )
{
var myBounds = theFiles[myCounter].parent.parent.geometricBounds;
var myWidth = Math.round( myBounds[3]-myBounds[1] );
var myHeight = Math.round( myBounds[2]-myBounds[0] );
var myScaleVert = Math.round( theFiles[myCounter].parent.absoluteVerticalScale );
var myScaleHori = Math.round( theFiles[myCounter].parent.absoluteHorizontalScale );
try
{
var mySpace = theFiles[myCounter].parent.space;
}
catch ( e )
{
var mySpace = "--";
}
try
{
var myLinkType = theFiles[myCounter].linkType;
}
catch ( e )
{
var myLinkType = "--";
}
var myImagePath = theFiles[myCounter].filePath;

// WARNING if vertical scale is different to horizontal scale
if ( myScaleVert != myScaleHori )
{
myScaleVert += " [!]";
myScaleHori += " [!]";
}
try
{
myPPI = ( theFiles[myCounter].parent.actualPpi );
if ( theFiles[myCounter].parent.actualPpi[0] < 250 ) myPPI[0] = ( "LQ! [" + myPPI[0] );
if ( theFiles[myCounter].parent.actualPpi[1] < 250 ) myPPI[1] += "]";
}
catch ( e )
{
myPPI = 0;
}
try
{
myPPI2 = ( theFiles[myCounter].parent.effectivePpi );
if ( ( theFiles[myCounter].parent.effectivePpi[0] < 250 ) || ( theFiles[myCounter].parent.effectivePpi[1] < 250 ) )
{
myPPI2[0] = ( "LQ! [" + myPPI2[0] );
myPPI2[1] += "]";
}
}
catch ( e )
{
myPPI2 = 1;
}
try
{
myRA = Math.round( theFiles[myCounter].parent.rotationAngle );
}
catch ( e )
{
myRA = 2;
}
var myPage = getPage( theFiles[myCounter].parent.parent.parent );
if ( myPage.constructor.name == "Page" )
var myPageName = myPage.name;
else
var myPageName = myPage.pages[0].name + " [Outside page!]"; // Textrahmen auf Montagefläche

myData = theFiles[myCounter].name + "\t" +
myScaleVert + "\t" +
myScaleHori + "\t" +
myWidth + " mm" + "\t" +
myHeight + " mm" + "\t" +
myRA + "°" + "\t" +
myPPI + "\t" +
myPPI2 + "\t" +
mySpace + "\t" +
myLinkType + "\t" +
myPageName + "\t" +
myImagePath + "\r";
f.writeln( myData );
}
f.close( );

function getPage( myObject )
{
if ( ( myObject.constructor.name == "Page" ) || ( myObject.constructor.name == "Spread" ) )
return myObject;


if ( myObject.constructor.name == "Character" )
{
var myVersion = String( app.version ).substr( 0,1 );
if ( Number( myVersion ) >= 4 ) return getPage( myObject.parentTextFrames[0] );
else if ( myVersion == "3" ) return getPage( myObject.parentTextFrame );
}

return getPage( myObject.parent );
}



als Antwort auf: [#235983]
(Dieser Beitrag wurde von Martin Fischer am 26. Mär 2008, 09:34 geändert)

Link Export Skript + Änderungen

Martin Fischer
  
Beiträge gesamt: 12783

28. Mär 2008, 21:57
Beitrag # 42 von 101
Beitrag ID: #343595
Bewertung:
(14495 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hier eine neue Version des LinkExport-Skripts.
In dieser Version werden nun die Maße der Bilder und die Abmessungen der Bildrahmen exportiert. Außerdem wurde die Struktur des Codes etwas aufgeräumt.

Code
// LinkExport_and_PreflightImages_1.2.jsx    
//DESCRIPTION: Export von Bild- und Verknüpfungsinformationen

/*
v.1.2
- Ausgabe der Maße des Bildes und des Bildrahmens
- Skriptstruktur aufgeräumt
v1.1
- Funktion getPage() an InDesign CS3 angepaßt
- Ausgabe der Maße der Bildbox anstatt des Bilds
v1.0
Dieses Script exportiert den Namen, Skalierung,
Grösse, Rotation, Auflösung, Farbraum, Dateityp,
Seite welche das Bild enthält sowie den Dateipfad
der in einem Dokument enthaltenen Bilder in eine
( mit Tabs getrennte ) Text Datei. ( Dokumentname.txt ).

Als Besonderheit wurden noch einige Kontrollmarkierungen
eingebaut welche
- unterschiedliche Skalierungen ( xxx [!] )
- Auflösung unter 250ppi ( "LQ! [xxx] )
- Bilder ausserhalb der Seite ( x [Montagefläche!] )
anzeigen.

Nighthawk &
Martin Fischer
http://www.hilfdirselbst.ch/foren/Link_Export_Skript_%2B_%C4nderungen_P343595.html#343595
*/

var myMinimumPPI = 250; // Limit of PPI
var myRounding = 10;
var myLan = 'de'; // Language (de or int)

if ( app.documents[0].saved == false )
( myLan == 'de' )
? errorExit( "Fehler!\rBitte sichern Sie das Dokument!" )
: errorExit( "Error!\rPlease save the document!" );

var myDoc = app.documents[0];
main();

// -----------------------------------------------------------------------------------------------------------------
// functions
// -----------------------------------------------------------------------------------------------------------------
function main()
{
var myOldProps = storeProps( );
var myDocName = myDoc.name.substring( 0, myDoc.name.lastIndexOf( '.' ));
var myFile = myDocName + '.txt';
var myPath = app.documents[0].filePath + "/";
var myLinks = myDoc.links;
var myData = ( myLan == 'de' )
? "Name\t% vertikal\t% horizontal\tBildbreite\tBildhöhe\tRahmenbreite\tRahmenhöhe\tDrehung\tBildauflösung\teffektive Auflösung\tFarbraum\tTyp\tSeite\tPfad\r"
: "Name\t% Vertical\t% Horizontal\tImgWidth\tImgHeight\tFrameWidth\tFrameHeight\tRotation\tOrig. Res.\tUsed. Res.\tCol. Space\tFile type\tPage Nr.\tPath\r";

for ( myCounter = 0; myCounter<myLinks.length;myCounter ++ )
myData += getInfo( myLinks[myCounter] );

saveData ( myPath + myFile, myData );
restoreProps( myOldProps );
}

function getInfo ( aLink )
{
var myImgMeasure = getMeasure( aLink.parent );
var myFrameMeasure = getMeasure( aLink.parent.parent );
var myScaling = getScaling( aLink.parent );
var mySpace = getSpace( aLink.parent );
var myLinkType = getLinkType ( aLink.parent );
var myImagePath = aLink.filePath;
var myPPI = getPPI ( aLink.parent );
var myRA = getRotationAngle( aLink.parent );
var myPageName = getPage( aLink.parent.parent.parent );

someData = aLink.name + "\t" +
myScaling.vertical + "\t" +
myScaling.horizontal + "\t" +
myImgMeasure.width + " mm" + "\t" +
myImgMeasure.height + " mm" + "\t" +
myFrameMeasure.width + " mm" + "\t" +
myFrameMeasure.height + " mm" + "\t" +
myRA + "°" + "\t" +
myPPI.actual + "\t" +
myPPI.effective + "\t" +
mySpace + "\t" +
myLinkType + "\t" +
myPageName + "\t" +
myImagePath + "\r";
return someData;
}

function getMeasure ( o )
{
var b = o.geometricBounds;
var w = Math.round( b[3]-b[1] );
var h = Math.round( b[2]-b[0] );
return { width:w, height:h };
}

function getScaling ( anImg )
{
var myScaleVert = Math.round( anImg.absoluteVerticalScale * myRounding ) / myRounding;
var myScaleHori = Math.round( anImg.absoluteHorizontalScale * myRounding ) / myRounding;
if ( myScaleVert != myScaleHori ) // WARNING if vertical scale is different to horizontal scale
{
myScaleVert += " [!]";
myScaleHori += " [!]";
}
return { vertical:myScaleVert, horizontal:myScaleHori }
}

function getSpace( anImg )
{
try
{
var aSpace = anImg.space;
}
catch ( e )
{
var aSpace = "--";
}
return aSpace
}

function getLinkType (anImg )
{
try
{
var aLType = anImg.linkType;
}
catch ( e )
{
var aType = "--";
}
return aType;
}

function getPPI ( anImg )
{
try
{
var actPPI = checkPPI( anImg.actualPpi );
var effPPI = checkPPI( anImg.effectivePpi );
}
catch ( e )
{
var actPPI = effPPI = '0';
}
return {actual:actPPI, effective:effPPI};
}

function checkPPI ( aPPI )
{
var aString = aPPI.join( '/' );
if ( aPPI[0] < myMinimumPPI || aPPI[1] < myMinimumPPI )
var aString = ( "LQ! [" + aString + "]" );
return aString;
}

function getRotationAngle ( anImg )
{
try
{
var r = Math.round( anImg.rotationAngle * myRounding ) / myRounding;
}
catch ( e )
{
var r = '--';
}
return r;
}

function getPage( myObject )
{
if ( myObject.constructor.name == "Page" )
return myObject.name
else if ( myObject.constructor.name == "Spread" )
{
var myPB = ( myLan == 'de' ) ? " [Montagefläche!]" : " [Pasteboard!]";
return myObject.pages[0].name + myPB ; // Textrahmen auf Montagefläche
}
else if ( myObject.constructor.name == "Character" )
{
var myVersion = String( app.version ).substr( 0,1 );
if ( Number( myVersion ) >= 4 )
return getPage( myObject.parentTextFrames[0] );
else if ( myVersion == "3" )
return getPage( myObject.parentTextFrame );
}
return getPage( myObject.parent );
}

function storeProps()
{
var myHorizontalMeasurementUnits = myDoc.viewPreferences.horizontalMeasurementUnits;
var myVerticalMeasurementUnits = myDoc.viewPreferences.verticalMeasurementUnits;
var myRulerOrigin = myDoc.viewPreferences.rulerOrigin;
var myZeroPoint = myDoc.zeroPoint;
myDoc.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS;
myDoc.viewPreferences.verticalMeasurementUnits = MeasurementUnits.MILLIMETERS;
myDoc.viewPreferences.rulerOrigin = RulerOrigin.spreadOrigin;
myDoc.zeroPoint = [0,0];
return { h:myHorizontalMeasurementUnits, v:myVerticalMeasurementUnits, r:myRulerOrigin, z:myZeroPoint }
}

function restoreProps ( p )
{
myDoc.viewPreferences.horizontalMeasurementUnits = p.h;
myDoc.viewPreferences.verticalMeasurementUnits = p.v;
myDoc.viewPreferences.rulerOrigin = p.r;
myDoc.zeroPoint = p.z;
}

function errorExit( aMessage )
{
alert( aMessage );
exit();
}

function saveData ( myFilePath, aData )
{
var myCreator = "R*ch";
var myType = "TEXT";
var f = new File( myFilePath );
f.open( 'w', myType, myCreator );
f.writeln( aData );
f.close( );
}



als Antwort auf: [#343030]
(Dieser Beitrag wurde von Martin Fischer am 21. Apr 2008, 07:45 geändert)

Link Export Skript + Änderungen

Maxomat
Beiträge gesamt: 2

21. Apr 2008, 15:53
Beitrag # 43 von 101
Beitrag ID: #347212
Bewertung:
(14260 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammen,
tolles SKript, kann man das auch so umbauen, dass an Stelle der Informationen zu den Verknüpfungen, die Größenangebe aller Rahmen/Vektorgrafiken im Dokument ausgegeben werden?
Habe zwar versucht, das Skript bzw.
Code
myDoc.links 

zu ändern z.B. in
Code
app.selection; 

, doch erfolglos; kenne ich mich im Skripten einfach nicht aus.


als Antwort auf: [#343595]

Link Export Skript + Änderungen

Martin Fischer
  
Beiträge gesamt: 12783

21. Apr 2008, 16:24
Beitrag # 44 von 101
Beitrag ID: #347227
Bewertung:
(14248 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Maxomat,

Verknüpfte Vektorgraphiken müßten in dem Skript berücksichtigt werden.
Wenn nicht, dann bräuchte ich Stoff zum Analysieren.

Für die anderen Rahmen müßte es umgebaut werden.
Infos müßten statt aus den 'links' und ihren 'parents', also den 'rectangles', 'ovals' ... ausgelesen werden.

Viele Eigenschaften, die im Skript oben abgefragt werden, machen bei Rahmen ohne Bild keinen Sinn (Verknüpfungsinformationen, Auflösung).


als Antwort auf: [#347212]

Link Export Skript + Änderungen

Maxomat
Beiträge gesamt: 2

21. Apr 2008, 16:42
Beitrag # 45 von 101
Beitrag ID: #347239
Bewertung:
(14242 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin Fischer,

vielen Dank für die prompte Antwort.
Die Verktorgrafiken sind alle in Pfade umgewandelte Texte in einer Tabelle (nicht Verknüpft, sonst hätte ich das Problem leider nicht.)
Mir geht es bei der Ausgabe auch nur um die Maße oder besser Bounding-Box der Grafiken (Breite, Höhe), ppi wäre ja Blödsinn bei Vektorgrafik.

Gruß
Max


als Antwort auf: [#347227]
X