[GastForen Programmierung/Entwicklung JavaScript JPG Export Script macht Kummer

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

JPG Export Script macht Kummer

NEU!
Beiträge gesamt: 179

30. Nov 2015, 12:08
Beitrag # 1 von 7
Bewertung:
(3683 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich stricke ein Script um, und komme nun zum JPG-Export:
Das hat alles schon einmal gut funktioniert, doch nun hab ich mich irgendwo verzwackt, dass app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM;

Code
function myExport(Xquali, Xdpi, XAA, XSP, Xpath, BMcounter) { 
switch (Xquali) {
case "Low": app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.LOW; break;
case "Medium": app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MEDIUM; break;
case "High": app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.HIGH; break;
case "Max": alert("?"); app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM; alert("!");
}


sich nicht mehr setzen lässt. Das Script bricht einfach vor dem zweiten Test-Alert "!" ab.
Ich habe leider nur Anfängerskills in JS und weiss garnicht, wie ich das debuggen soll…

Hat irgendwer eine Idee, welche Faktoren diese Eigenschaft plötzlich nicht setzbar machen?
X

JPG Export Script macht Kummer

pixxxelschubser
Beiträge gesamt: 1679

30. Nov 2015, 19:51
Beitrag # 2 von 7
Beitrag ID: #545024
Bewertung:
(3652 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo @NEU!
Gegenfrage: Woher hast du denn diese Codezeilen:
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.LOW
etc.?
Das gibt es IMHO nur im PDF oder Tiff-Export – für JPEG wäre mir ein solches DOM-Objekt neu. (ich lerne aber gerne dazu Wink)

Ansonsten: erstelle dir eine neue JPEG-Export-Option und gib dort die Qualität in der gewünschten Stufe NUMERISCH an. In etwa so:
Code
saveAsJPEG("Name",10);  

function SaveAsJPEG(saveFile, jpegQuality){
var doc = activeDocument;
jpgSaveOptions = new JPEGSaveOptions();
jpgSaveOptions.quality = jpegQuality;

activeDocument.saveAs(File(/*deinBild*/+".jpg"), jpgSaveOptions, true,Extension.LOWERCASE);
}


Oder du verwendest das ScriptListener-Plugin und zeichnest den für-Web-und-Geräte-speichern-Dialog auf und änderst den Code deinem Zweck entsprechend.

Viel Spass

/edit/
Beim Drüberlesen:
Für den Fall, dass du nicht Photoshop meinst (und das könnte hier durchaus der Fall sein) --> schreibe dein Programm dazu. Das vermeidet „falsche“ Antworten.
/edit/



Wink
Viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton




als Antwort auf: [#544999]
(Dieser Beitrag wurde von pixxxelschubser am 30. Nov 2015, 19:56 geändert)

JPG Export Script macht Kummer

NEU!
Beiträge gesamt: 179

1. Dez 2015, 08:53
Beitrag # 3 von 7
Beitrag ID: #545032
Bewertung:
(3585 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo pixxxelschubser,

vielen Dank für deine Antwort, vielleicht kommen wir ja gemeinsam dem Hase im Pfeffer auf die Schliche:

Also es geht um InDesign CS5.5, ich hänge jetzt mal ein Script hier an. Es ist etwas konfus, aber eine Sache macht micht stutzig: Zeile 20-24 wechsel ich testweise die Exportqualität auf Low/Max und prüfe das mit einem Alert, das klappt noch.
Weiter unten, funktionieren die gleichen Zeilen Code nicht mehr, das Script bricht wortlos ab – Zeile 119 oder 128, jeweils hinter einer Buttonfunktion. ...und ich weiss nicht warum.

Zum Testen muss eine Datei geöffnet sein mit Namen:
#Typ @Titel !DE.indd
Außerdem muss ein Seiten-Lesezeichen angelegt sein mit Länderkürzelnamen zB "de". (Fenster»Interaktiv»Lesezeichen; Beim Setzen drauf achten, dass über die Seiten-Palette eine Seite ausgewählt ist, nicht eine Textstelle).

Code
var MyBuild = "15.49.2"; 
var MyVersion = "2";
var MyScriptNameShort = "JYSK BookmarkXport";
var MyScriptName = MyScriptNameShort+" v"+MyVersion+"."+MyBuild
// alert("Renderstyle:\r"+app.JPEGExportPreference.jpegRenderingStyle+"\r\rRes:\r"+app.jpegExportPreferences.exportResolution+"\r\rQuali:\r"+app.jpegExportPreferences.jpegQuality+"\r\rAA:\r"+app.jpegExportPreferences.antiAlias+"\r\rSpread:\r"+app.jpegExportPreferences.antiAlias);

// 0.FullPath – 1.Fullpath+Folders – 2.Shortname – 3.Pagesize – 4.selected - 5.BMcounterZb "002" - 6. Land(zB "de_ch")
var BM = ["", "", "", "", 1, true, ""];
var myMark = [];

if (app.documents.length == 0) {
alert("Keine Dokument geöffnet.");
} else if (app.activeDocument.bookmarks.length == 0) {
alert("Keine Leesezeichen im Dokument.\r\rLesezeichen = Seitenname/Sprachversion\r · Land aus Dateiname (!CH)\r · Bannertyp aus Abmessung\r\rAusgabebeispiel: 9er_Banner_»WSV_1«_it_ch.jpg");
} else if (filenamecheck() == false) {
alert("Dateiname ungültig.\rSyntax:\r#Typ @Titel !Land\r\rBeispiel:\r#Themenwelt @Winter !AT\r\rAusgabe-Beispiel:\r6er_Themenwelt_»Winter«_de_at.jpg");
} else {
// Hier gehts los

app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.LOW;
alert(app.jpegExportPreferences.jpegQuality);
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM;
alert(app.jpegExportPreferences.jpegQuality);


var RootFolder = "~/Desktop";
// var RootFolder = Folder.selectDialog ("Bitte Export-Ordner wählen");
var myDoc = app.activeDocument;
var myDocName = myDoc.name.replace(/\.[^.$]+$/, '');
var myTyp = myDocName.substring((myDocName.search("#")+1),(myDocName.search("@")-1));
var myTitel = myDocName.substring((myDocName.search("@")+1),(myDocName.search("!")-1));
var myLand = myDocName.substring((myDocName.search("!")+1)).toLowerCase();

for (var i = 0; i < myDoc.bookmarks.length; i++)
{
BM = ["", "", "", "", 1, true, ""];
BM[6] = myDoc.bookmarks[i].name.toLowerCase()+"_"+myLand;
BM[5] = 0;
BM[4] = false;
BM[3] = ReturnSize(Math.round(myDoc.bookmarks[i].destination.destinationPage.bounds[3]) +"x"+Math.round(myDoc.bookmarks[i].destination.destinationPage.bounds[2]));
BM[2] = BM[3]+" | "+BM[6]+" | "+NumLength(BM[5]);
BM[1] = "leer2";
BM[0] = "leer1";
myMark.push(BM);
}

for (var i = 0; i < myMark.length; i++) {
lookfor = myMark[i][2];
for (var j = i; j < myMark.length; j++) {
if (myMark[j][2].toString().indexOf(lookfor) != -1) {myMark[j][5]++; myMark[j][2] = myMark[j][3]+" | "+myMark[j][6]+" | "+NumLength(myMark[j][5]);}
}
}

for (var i = 0; i < myMark.length; i++) {
myMark[i][0] = ""+RootFolder+"/"+myMark[i][3]+"_"+myTyp+"_»"+myTitel+"«_"+myMark[i][6]+"_"+NumLength(myMark[i][5])+".jpg"
myMark[i][1] = ""+RootFolder+"/"+myMark[i][6]+"/"+myMark[i][3]+"_"+myTyp+"_»"+myTitel+"«_"+myMark[i][6]+"_"+NumLength(myMark[i][5]);
}

MyWindow();
// Hier endets
};

function MyWindow()
{
var w = new Window ("dialog",MyScriptName);
w.preferredSize = [250, 200];
w.alignChildren = "left";


var z0 = w.add ("group");
z0.add ("statictext", undefined, "Pfad:" );
var PfadButt = z0.add ("button", undefined, "Wahl…");

var z0a = w.add ("statictext", undefined, RootFolder);
z0a.graphics.font = "Verdana:11"

PfadButt.onClick = function ()
{RootFolder = Folder.selectDialog ("Bitte Export-Ordner wählen");
z0a.text = RootFolder.fullName.substring((_folder.fullName.length - 35), _folder.fullName.length); }

var z1 = w.add ("group");
z1.add ("statictext", undefined, "Auflösung:");
myDropdownRes = z1.add ("dropdownlist", undefined, [72.0, 150.0, 300.0]);
myDropdownRes.selection = 0;

var z2 = w.add ("group");
z2.add ("statictext", undefined, "Qualität:");
myDropdownQual = z2.add ("dropdownlist", undefined, [JPEGOptionsQuality.LOW, JPEGOptionsQuality.MEDIUM, JPEGOptionsQuality.HIGH, JPEGOptionsQuality.MAXIMUM]);
myDropdownQual.selection = 3;

checkAA = w.add ("checkbox", undefined, "Anti-Alias");
checkSP = w.add ("checkbox", undefined, "Druckbögen");
checkOF = w.add ("checkbox", undefined, "Unterordner anlegen (_"+myLand+")");
checkAA.value = true;
checkSP.value = false;
checkOF.value = true;

w.add ("panel", [0,0,262,2]);

var tempList = [];
for (var i = 0; i < myMark.length; i++) {tempList[i] = " "+myMark[i][2]}
myList = w.add ("listbox", undefined, tempList, {multiselect: true});
for (var i = 0; i < myList.items.length; i++) {myList.items[i].checked = true; myList.selection = i;}
myList.size = [262,200];

myList.onChange = function () {
for (var i = 0; i < myList.items.length; i++) {
if (myList.items[i].selected == true)
{myList.items[i].checked = true; myList.items[i].checked = true;}
else {myList.items[i].checked = false; }
}
}

var buttons = w.add ("group")
var OKbutt = buttons.add ("button", undefined, "OK", {name: "ok"});
buttons.add ("button", undefined, "Abbruch", {name: "cancel"});
HELPbutt = buttons.add ("button", undefined, "Hilfe", {name: "help"});

HELPbutt.onClick = function ()
{
alert(MyScriptNameShort+"\rVersion/Build: "+MyVersion+"."+MyBuild+"\rAutor: Jan Krause");
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.LOW;
alert(app.jpegExportPreferences.jpegQuality);
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM;
alert(app.jpegExportPreferences.jpegQuality);
}

OKbutt.onClick = function ()
{
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.LOW;
alert(app.jpegExportPreferences.jpegQuality);
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM;
alert(app.jpegExportPreferences.jpegQuality);

for (var i = 0; i < myList.items.length; i++)
{ if (myList.items[i].selected == true) { myMark[i][4] = true;} }

app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.LOW;
alert(app.jpegExportPreferences.jpegQuality);

app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.LOW;
alert(app.jpegExportPreferences.jpegQuality);
app.jpegExportPreference.jpegRenderingStyle = JPEGOptionsFormat.PROGRESSIVE_ENCODING;
app.jpegExportPreferences.exportResolution = myQualiChoice;
app.jpegExportPreferences.jpegExportRange = ExportRangeOrAllPages.exportRange;
app.jpegExportPreferences.jpegQuality = myQualiChoice;
app.jpegExportPreferences.exportingSpread = checkSP.value;
app.jpegExportPreferences.antiAlias = checkAA.value;

// alert("Renderstyle:\r"+app.jpegExportPreference.jpegRenderingStyle+"\r\rRes:\r"+app.jpegExportPreferences.exportResolution+"\r\rQuali:\r"+app.jpegExportPreferences.jpegQuality+"\r\rAA:\r"+app.jpegExportPreferences.antiAlias+"\r\rSpread:\r"+app.jpegExportPreferences.antiAlias);

for (var k = 0; k < myMark.length; k++)
{
if (myMark[k][4] == true)
{
if (checkOF.value == false) {
app.jpegExportPreferences.pageString = myDoc.bookmarks[k].destination.destinationPage.name;
// myExport(myQualiChoice, myResChoice, checkAA.value, checkSP.value, myMark[k][0].absoluteURI, k);
}
else
{ var ff = new Folder(RootFolder+"/"+myMark[k][6]);
if (!ff.exists) ff.create();
//myExport(myQualiChoice, myResChoice, checkAA.value, checkSP.value, myMark[k][1]+".jpg".absoluteURI,k);
};
}
}
alert("done.");
w.close();
}

w.show();

}




// Qualität, Auflösung, AntiAlias, Doppelseiten, Ausgabepfad, Welches Lesezeichen
function myExport(Xquali, Xdpi, XAA, XSP, Xpath, BMcounter) {
app.jpegExportPreferences.jpegQuality = JPEGOptionsFormat.PROGRESSIVE_ENCODING;

switch (Xquali) {
case "Low": app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.LOW; break;
case "Medium": app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MEDIUM; break;
case "High": app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.HIGH; break;
case "Max": alert("?"); app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM; alert("!");
}
app.jpegExportPreferences.jpegExportRange = ExportRangeOrAllPages.exportRange;
app.jpegExportPreferences.exportingSpread = XSP;
app.jpegExportPreferences.antiAlias = XAA;
app.jpegExportPreferences.exportResolution = Xdpi;
app.jpegExportPreferences.pageString = myDoc.bookmarks[BMcounter].destination.destinationPage.name;

var myFile = new File(Xpath);
myDoc.exportFile(ExportFormat.jpg, myFile, false);
};

function NumLength(checkthis) {
var temptextadder = "";
if (checkthis >= 10) { temptextadder = "0"};
if (checkthis < 10) { temptextadder = "00"};
if (checkthis >= 100) { temptextadder = ""};
Stringer = temptextadder+checkthis;
return Stringer;
}

function ReturnSize(MyInput) {
var myPageSize = "default"
switch (MyInput) {
case "300x600": myPageSize = "HalfPageAd"; break;
case "230x220": myPageSize = "3er"; break;
case "470x220": myPageSize = "6er"; break;
case "710x220": myPageSize = "9er"; break;
case "950x220": myPageSize = "12er"; break;
case "710x483": myPageSize = "9er-hoch"; break;
case "950x100": myPageSize = "12er-flach"; break;
case "710x75": myPageSize = "9er-flach"; break;
case "728x90": myPageSize = "SG-banner"; break;
case "122x191": myPageSize = "TW-teaser"; break;
case "2560x1440": myPageSize = "YouTube-header"; break;
case "160x600": myPageSize = "Skyscraper-wide"; break;
case "120x600": myPageSize = "Skyscraper"; break;
case "180x150": myPageSize = "Rectangle"; break;
case "300x250": myPageSize = "Rectangle-medium"; break;
case "468x60": myPageSize = "Banner-full"; break;
case "234x60": myPageSize = "Banner-half"; break;
default: myPageSize = MyInput+"px";
}
return myPageSize
}

function filenamecheck() {
var truelean = true;
var myDocName = app.activeDocument.name.replace(/\.[^.$]+$/, '');
if (myDocName.search("#") == -1) {truelean = false}
if (myDocName.search("@") == -1) {truelean = false}
if (myDocName.search("!") == -1) {truelean = false}
return truelean
}



als Antwort auf: [#545024]

JPG Export Script macht Kummer

NEU!
Beiträge gesamt: 179

1. Dez 2015, 09:06
Beitrag # 4 von 7
Beitrag ID: #545033
Bewertung:
(3579 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Grade noch einen Test gemacht:
Statt oben der Zeilen
Code
    app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.LOW; 
alert(app.jpegExportPreferences.jpegQuality);
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM;
alert(app.jpegExportPreferences.jpegQuality);

habe ich diese in eine Funktion gepackt und weiter unten abgelegt:
Code
function MYCHECK() { 
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.LOW;
alert(app.jpegExportPreferences.jpegQuality);
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM;
alert(app.jpegExportPreferences.jpegQuality);
};


Wenn ich die Funktion aufrufe an der gleichen Stelle wo vorher die Zeilen stand passiert nix mehr :(

Entweder deklariere ich Funktionen nicht richtig, oder die Einstellungen müssen irgendwie anders angesprochen werden, wenn in einer Funktion eingebaut…


als Antwort auf: [#545032]

JPG Export Script macht Kummer

pixxxelschubser
Beiträge gesamt: 1679

4. Dez 2015, 18:22
Beitrag # 5 von 7
Beitrag ID: #545181
Bewertung:
(3418 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo @NEU!,
danke, dass du den Code gepostet und (vor Allem) das Programm, um das es geht, benannt hast.

Ich kann mich zur zeit leider nicht wirklich darum kümmern. Die liebe Zeit, sie fließt dahin … Und es ist auch schon eine Weile her, dass ich etwas in InDesign geskriptet habe (so CS4 o.ä.).

Aber vielleicht könntest du einen Moderator bitten, dein Thema in die InDesign-Skriptwerkstatt http://www.hilfdirselbst.ch/...kstatt_Forum_61.html zu verschieben. Dort dürfte deine Anfrage wesentlich besser aufgehoben sein.



Wink
Viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton




als Antwort auf: [#545033]

JPG Export Script macht Kummer

NEU!
Beiträge gesamt: 179

9. Dez 2015, 15:14
Beitrag # 6 von 7
Beitrag ID: #545306
Bewertung:
(3268 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Also, ich habe mein Problem eingrenzen können:

Wenn ich die App-Einstellungen aus meiner Window-Funktion setzen wollte, ging das nicht. Als ich die Einstellung in mein Hauptprogramm gesetzt habe, empfing InD wieder seine Einstellungen.

Der Ordnung halber wollte ich den Export mit seinem Code ausgliedern. Nachdem ich dies dann in meiner Buttonfunktion aufrufen wollte, klappte es nicht.

Ich bin ein JS-Anfänger und verstehe noch nicht, wie und warum das nicht ging:

EtwasCode
MyWindow(true);
function MyExport() {}
function MyWindow(trigger) {
function OK.butt
MyExport()
}
MyWindow(false);


Aber funktionieren tut jetzt:


EtwasCode
MyWindow();
MyExport();
function MyExport() {}
function MyWwindow() {
function OK.butt
w.close()


als Antwort auf: [#545181]
(Dieser Beitrag wurde von NEU! am 9. Dez 2015, 15:15 geändert)

JPG Export Script macht Kummer

NEU!
Beiträge gesamt: 179

15. Dez 2015, 08:42
Beitrag # 7 von 7
Beitrag ID: #545440
Bewertung:
(3116 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich würde das Thema hier gerne schließen:

Genau bin ich dem Problem zwar nicht auf die Schliche gekommen, aber es muss was damit zu tun gehabt haben, dass ich mein Code in einen function main() gesteckt habe, aus der ich meine Window-Funktion gerufen habe, aus der eine Exportfunktion aufgerufen wurde…die dann irgendwie nicht mehr die App/Export-Voreinstellungen addressieren konnte…

Da merke ich, dass ich die Struktur von JS noch etwas ergründen muss.

Trotzdem vielen Dank.
Hilfe gibt es trotzdem zu Leisten, das nächste Problem ist aufgetreten, Stichwort image crop->scale, hier:
https://forums.adobe.com/thread/2041828


als Antwort auf: [#545306]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
21.06.2022

Online
Dienstag, 21. Juni 2022, 10.00 - 10.30 Uhr

Webinar

Viele Druckereien – kleine und große – suchen heute nach Wegen, ihre Effizienz und Produktivität zu steigern. Dabei erkennen sie oft, dass sie sich dringend um die Optimierung, Standardisierung und Automatisierung ihrer Workflows und Prozesse kümmern sollten. In unserer kostenlosen, jeweils ca. 30 minütigen Webinar-Reihe erfahren Sie, wie Sie die Effizienz- und Produktivitätspotenziale Ihrer Druckerei erschließen können – und wie einfach und kostengünstig das sein kann.

kostenlose 3-teilige Webinar-Reihe, 21., 23. und 26. Juni 2022, jeweils 10:00 - 10:30

Ja

Organisator: Impressed GmbH

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://impressed-workflow-server.de/impressed-webinar-reihe-the-big-picture/

Impressed Webinar-Reihe THE BIG PICTURE
Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/