[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:
(3455 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: 1643

30. Nov 2015, 19:51
Beitrag # 2 von 7
Beitrag ID: #545024
Bewertung:
(3424 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:
(3357 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:
(3351 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: 1643

4. Dez 2015, 18:22
Beitrag # 5 von 7
Beitrag ID: #545181
Bewertung:
(3190 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:
(3040 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:
(2888 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

Aktuell

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
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
01.03.2021 - 05.03.2021

Persönlichkeitsentwicklung

Online
Montag, 01. März 2021, 00.17 Uhr - Freitag, 05. März 2021, 00.18 Uhr

Webinar

Personal Power Coaching - Um was geht es? ​ Potenzialentfaltung: Potenzial entdecken und entfalten Talente entdecken: Deine Talente und Fähigkeiten erkennen und loslegen Gewohnheiten: schlechte Gewohnheiten durch Positive ersetzen Selbstbewusstsein stärken: Dein Bewusstsein stärken Eigendynamik entwickeln: Mehr Erfolg durch Eigenverantwortung & Disziplin Ängste kontrollieren: Ängste als Antrieb nutzen Entscheidungen treffen: Mit mehr Mut an die Sache ran! Lebensenergie steigern: Deine Lebensenergie steigern und aufrechterhalten Ziele erreichen: Ziele setzen und übertreffen! Motivationssteigerung: Mehr Erfolg durch Selbstmotivation Selbstvertrauen: Selbstvertrauen auf- und ausbauen

Details:
https://www.snfa.ch/swiss-personal-power-birolisik

Ja

Organisator: Birol Isik

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

https://www.snfa.ch/swiss-personal-power-birolisik

Neuste Foreneinträge


Affinity Designer

Optimierung doc2pdf-withPresets.jsx

Layout / Bildauflösung druckfertig anlegen

Affinity Publisher 1.9

Alternative Acrobat Pro

Affinity Photo

Open CL-Berschleunigung

Studiovorgaben (Workspace) beim Programmstart vorgeben?

Illustrator AI in Designer öffnen

Verknüpfung mit Format aufheben
medienjobs