[GastForen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Forenindex -- Lesezeichen

2 Lesezeichen für fehlerprotokoll

HyperlinkTextDestination.destinationText.contents
Guten Tag Philipp,

Zitat @ Herr Perplies: Ich habe Ihr Script "WpsReadHyperLinkUrls" ausprobiert, jedoch ist es bei meinem Versuch mit den bildern als Hyperlink auch abgebrochen.


Vielen Dank für die Rückmeldung, der Fehler ist erkannt, und wird kurzfristig behoben.

Ursache ist eine fehlende, lokalisierte Fehlermeldung, deshalb kann die erkannte Fehlermeldung nicht ausgegeben werden.

Andernfalls hättest Du vermutlich auch die Fehlersituation in Deinem Sorucecode erkannt.

Meine Empfehlung:

Setze try - catch sinnvoll ein:

dieser Einsatz;
try
{
...
}
catch {e}
ist eine echte Holzhammermethode zum Ignorieren jeglichen Fehlers innerhalb der Try-Klammer und ist mit Sicherheit die Ursache vieler schlafloser Nächte von Programmierern.

Auch in Deinem Code wird der eigentliche Fehler jetzt ignoriert.

Richtige Fehlerbehandlung geht so:

Jeder Funktionsinhalt, in der eine Fehlersituation auftreten kann, sollte so in
Code
try  
{
...
}
catch (error)
{
Fehlerbehandlung!
}

in try - catch geklammert werden.

Falls es jetzt einen Aufschrei geben sollte:
try - catch ohne Fehler ist Schreibarbeit, kostet aber fast keine Performance.

Den Performanceeinbruch gibt es erst im Fehlerfall, und da sollte er nicht kritisch sein.

Fehlerbehandlung:

Im einfachsten Fall so:

alert(error.message+"\n" + error.line + "\n");

Falls Du Fehler hast, die [b]ignoriert werden sollen:

In etwas so:

// Fehler 12345 ignorieren
if (error.number != 12345)
{
alert(error.message+"\n" + error.line + "\n");
}

In vielen meinen Skripts unterdrücke ich die fast alle Fehlermeldungen während des Skriptlaufs, schreibe sie aber in eine Protokolldatei.

Vorteil:
Skript wird nicht abgebrochen, aufgetretene Fehler können nachträglich analysiert werden.

Es gibt natürlich [b]NoGo-Fehler, bei denen ein Abbruch erfolgen muss.

Für zu ignorierende Fehler sollte aber nur im Ausnahmefall ein Fehler ausgelöst werden, deshalb ist es besser, eine mögliche Fehlerquelle im Voraus zu erkennen und zu umgehen.

Damit wäre ich bei Deinem Sourcecode:

Der Fehler liegt m. E. nach in dieser Zeile, und ein richtig angewendeter try - catch hätte ihn Dir verraten:
Code
    usedSourcesContentsArray[n] = d.hyperlinkTextSources.itemByID(coupledArrayIDs[n][1]).sourceText.contents; 

eerror.message ---> Objekt unterstützt Eigenschaft [i]sourceText nicht!

Die Fehlerbehandlungkönnte so aussehen:
Code
if (d.hyperlinkTextSources.itemByID(coupledArrayIDs[n][1]).hasOwnProperty("sourceText")) 
{
usedSourcesContentsArray[n] = d.hyperlinkTextSources.itemByID(coupledArrayIDs[n][1]).sourceText.contents;
}


offTopic: Warum werden eigentlich bei dieser Forumssoftware so oft die Auszeichnungstags falsch interpretiert?
...
WernerPerplies
22. Mär 2012, 07:45
Skript um Schriften aus Dokument auszulesen?
Hallo HDSler!

Nachdem ich in den vergangenen Tagen nun endlich ein wenig Zeit fand, mich mit den Basics von JavaScript zu befassen, habe ich mit Hilfe von eins/zwei weiteren Skript-Schnipseln einen Entwurf erstellt, welcher meinen Anforderungen genügt; aber sicher nicht perfekt ist. Die Aufgabenstellung hatte sich allerdings während der Erstellung nochmals geändert, so dass nun nicht nur TrueTypes, sondern alle Nicht-OpenType-Schriftschnitte einmalig mit ihren (vmtl. zu 99% eindeutigen) PostScriptnamen, ihrem Schrifttyp, ihrer Versionsnummer und der Angabe zum ID-Quelldokument in einer externen Textdatei auf dem Schreibtisch des Benutzers protokolliert werden. Auslöser der Aktion ist jeweils der "Sichern" oder "Sichern unter"-Befehl. Dass bei Letzterem der bisherige Dokumentname (anstelle des neuen) protokolliert wird, obwohl ich den EventListener mit "afterSaveAs" definiert habe, ist mir nicht wirklich klar - damit kann ich aber leben.
Auf die Auflistung aller Dokumentnamen (in denen ein Schriftschnitt vorkommt) habe ich der Einfachheit halber nun doch verzichtet. Leider funktioniert das Skript nicht in CS4 (Fehler in Zeile 51), sondern nur in CS 5 und 5.5. Ebenfalls noch etwas unschön die Skriptfehlermeldung, falls man versucht ein Dokument mit fehlenden Schriften versucht zu speichern.
Bei korrekter Arbeitsweise kommt dies aber ja nicht vor :o)

Dank nochmals an Martin und Werner, die mir mit ihren Antworten wichtige Details vermittelt haben!
Nachfolgend das Skript, falls jemand eine ähnliche Aufgabenstellung hat:
Code
//DESCRIPTION:Protokolliert alle im geöffneten Indesign-Dokument verwendeten nicht-OpenType-Schriftschnitte in einer Textdatei auf dem Schreibtisch, mit dem vollem Schriftschnitt-Namen, Postscriptnamen, Typ, Version und Namen des ID-Dokuments 
// Es ergänzt neue Schriftschnitte nur dann, wenn deren PostScript-Name noch nicht in der Liste vorhanden ist.
// Der Name der Desktop-Textdatei lautet "Fonts_", plus dem in der CS-Suite eingetragenen Benutzernamen, plus "__NICHT LOESCHEN.txt"
// Ist diese Textdatei noch nicht verhanden, wird sie erzeugt.
// LogMyNonOpenTypeFonts_IDCS5_V01.jsx
// Version 1.0
// 04.11.2011
// Lauffähig in Indesign CS 5

#targetengine "session"

var myEventListener1 = app.addEventListener("afterSave", ListNonOpenTypeFonts, false);
var myEventListener2 = app.addEventListener("afterSaveAs", ListNonOpenTypeFonts, false);

myLogfile = null;
myFontsLogged = [];
csUsername = app.userName; //Aktuell in der CS Suite eingetragener Benutzername
myLogfile = "~/Desktop/Fonts_" + csUsername + "__NICHT_LOESCHEN.txt"; // Definiert den Dateinamen und Speicherort der Textdatei

function ListNonOpenTypeFonts()
{
if (app.documents.length > 0) {//Prüft, ob mindestens 1 Dokument geöffnet ist
//Liest alle bereits protokollierten Schriftschnitte in ein Array namens 'myFontsLogged' ein
var myFile = File(myLogfile);

if (myFile.open("r")) {
do{
var _zeile = myFile.readln();
myFontsLogged.push(_zeile)
} while (myFile.eof == false);
myFile.close();

}
else {
}
getNonOpenTypeFonts(app.activeDocument)
}
}


function getNonOpenTypeFonts(d)
{
var myDoc = app.activeDocument.name.replace(/\.indd$/i,'').toString(); //myDoc = aktueller Dokumentnamen ohne ".indd"
var myFontsToLog = new Array;
var myDocFonts = d.fonts.everyItem().getElements();
for (var i = 0; i < myDocFonts.length; i++)
{
var myDocFontPSName = "" ;
var myDocFontVersion = "";
var myDocFontType = "";
if (myDocFonts[i].fontType != FontTypes.OPENTYPE_CFF && myDocFonts[i].fontType != FontTypes.OPENTYPE_CID && myDocFonts[i].fontType != FontTypes.OPENTYPE_TT) { // Filter auf NICHT-OpenType-Fonts
myDocFontPSName = app.activeDocument.fonts[i].postscriptName + "@";

//Versuche den Schrifttyp auszulesen
try {
var myDocFontType = String(app.activeDocument.fonts[i].fontType);
}
catch(_fehler) { //Kein Schriftschnitt definiert
}

//Versuche den Schrift-Version auszulesen
try {
var myDocFontVersion = app.activeDocument.fonts[i].version;
}
catch(_fehler) { //Keine Schriftversion definiert
var myDocFontVersion = "";
}

if (String(myFontsLogged).indexOf (myDocFontPSName) == -1) { //Ergänze myDocFontPSName in Textdatei nur, wenn noch nicht enthalten
myFontsToLog.push(myDocFontPSName + '\t'+ myDocFonts[i].name.replace('\t',' ') + '\t'+ myDocFontType + '\t'+ myDocFontVersion + '\t'+ myDoc);
}
else {
}
}
}

if (myFontsToLog.length > 0)
{
var myNonOpenTypeFonts = myFontsLogged.concat(myFontsToLog);
myNonOpenTypeFonts.sort(); //Sortiere alle Zeilen alphabetisch (Zeilenanfang = PostScript-Name des Schriftschnittes)
var _f = write_file(File(myLogfile), myNonOpenTypeFonts.join('\r'));
}
else {
//alert('Es wurde kein neu-aufzunehmender NonOpenType-Font gefunden.')
}
myFontsToLog = [];
myFontsLogged = [];
myNonOpenTypeFonts = [];
}


//Öffnet eine Textdatei (read/write)
function write_file ( _file, _data )
{
if (! Folder(_file.path).exists)
Folder(_file.path).create();
_file.open( 'w' );
_file.encoding = 'UTF-8';
_file.writeln ( _data );
_file.close();
return (_file);
}


MfG Thomas
...
t-kittel
8. Nov 2011, 09:08

Aktuell

Farbmanagement

| 03.02.2020

colorant_300

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
07.02.2020 - 11.09.2020

Digicomp Academy AG, 8005 Zürich
Freitag, 07. Feb. 2020, 13.00 Uhr - Freitag, 11. Sept. 2020, 12.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. Mit dem Abschluss «Publisher Professional – Profil «Multimedia» verliehen durch die Digicomp Academy AG, bestätigen Sie Ihre Praxiserfahrungen und Qualifizierung in den genannten Themengebieten gegenüber Ihrem Arbeitgeber sowie Ihren Kunden.

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

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/publishing-lehrgaenge/lehrgang-publisher-professional-profil-multimedia

Veranstaltungen
22.02.2020 - 04.07.2020

Lehrgang zielgerichtet auf die Zertifizierung zum Publisher Basic

Schulungsraum PubliCollege, Kronenhalde 9d, 3400 Burgdorf
Samstag, 22. Feb. 2020, 13.14 Uhr - Samstag, 04. Juli 2020, 13.15 Uhr

Projektseminar/Lehrgang

Ziele In der Medienproduktion unter Einbezug der aktuellen Publishing-Programme mitarbeiten. Voraussetzungen Sie möchten gestalterisch tätig sein und eigene grafische Ideen kompetent entwickeln sowie umsetzen; Medienproduktionen professionell planen und ausführen. Kompetenzen Nach Abschluss dieses Lehrgangs können Sie Printpublikationen aller Art von der Gestaltung über die Umsetzung bis zu druckfertige PDFs erstellen. Sie sind fähig, CI/CD-Vorgaben umzusetzen. Sie lernen die Grundlagen der grafischen Gestaltung kennen und setzen diese mit Adobe Photoshop, InDesign und Illustrator effizient um.

15 Halbtage, jeweils am Samstag von 08.30 bis 14 Uhr im Kursraum des PubliCollege, 3400 Burgdorf


Daten
Samstag, 22.2., 29.2., 14.3., 21.3., 28.3., 4.4., 25.4., 2.5., 9.5., 16.5., 6.6., 13.6., 20.6., 27.6., 4.7. 2020
Reservedatum am 23.5. 2020

Ja

Organisator: PubliCollege GmbH, 3400 Burgdorf

Kontaktinformation: Beat Kipfer, E-Mailinfo AT publicollege DOT ch

https://www.publicollege.ch/kursangebote/20-publisher-basic