Ergebnis 1 bis 4 von 4
  1. #1
    BlindJones ist offline Grünschnabel
    registriert
    26-08-2020
    Beiträge
    2

    Problem mit Javascript bei Dateinamen mit einem "." im Namen

    Hallo zusammen,

    ich benutze öfters ein Skript, um AI-Dateien zu SVG-Dateien zu konvertieren.

    Das funktioniert an sich richtig gut, allerdings verhaspelt sich das Skript, wenn die Ausgangsdateinamen Punkte im Namen enthalten (z.B. "Datei1.2.ai").

    Ich denke, dass dieser Code-Block angepasst werden müsste, aber trotz viel lesen und rumprobieren kriege ich es nicht hin...

    Code:
    function getNewName()
    {
    	var ext, docName, newName, saveInFile, docName;
    	docName = sourceDoc.name;
    	ext = '.svg'; // new extension for svg file
    	newName = "";
    		
    	for ( var i = 0 ; docName[i] != "." ; i++ )
    	{
    		newName += docName[i];
    	}
    	newName += ext; // full svg name of the file
    	
    	// Create a file object to save the svg
    	saveInFile = new File( destFolder + '/' + newName );
    	
    
    	return saveInFile;
    }
    Hier noch ein Beispiel:

    Ursprungsdateien:

    JS1.png

    Zieldatei nach der Ausführung des Skripts:

    JS2.png

    Es sollten 3x SVG-Dateien erstellt, leider wird nur die eine Datei mit falschem Namen erstellt.

    Kann mir da eventuell jemand helfen?

    Vielen Dank und liebe Grüße,
    BlindJones

    - - - Aktualisiert - - -

    Hallo,

    hier nochmal der gesamte Script-Code, sofern dieser für die Problemanalyse benötigt wird:

    Code:
    /**********************************************************
    
    ADOBE SYSTEMS INCORPORATED 
    Copyright 2005-2010 Adobe Systems Incorporated 
    All Rights Reserved 
    
    NOTICE:  Adobe permits you to use, modify, and 
    distribute this file in accordance with the terms
    of the Adobe license agreement accompanying it.  
    If you have received this file from a source 
    other than Adobe, then your use, modification,
    or distribution of it requires the prior 
    written permission of Adobe. 
    
    *********************************************************/
    
    /**********************************************************
     
    Save as SVGs.jsx
    
    DESCRIPTION
    
    This sample gets files specified by the user from the 
    selected folder and batch processes them and saves them 
    as SVGs in the user desired destination with the same 
    file name.
    
    Based on Adobe's "Save as PDFs" sample script, intended for Illustrator CS6
     
    **********************************************************/
    
    // Main Code [Execution of script begins here]
    
    // uncomment to suppress Illustrator warning dialogs
    // app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;
    
    var destFolder, sourceFolder, files, fileType, sourceDoc, targetFile, svgSaveOpts;
    
    // Select the source folder.
    sourceFolder = Folder.selectDialog( 'Quell-Verzeichnis mit AI-Dateien auswählen', '~' );
    
    // If a valid folder is selected
    if ( sourceFolder != null )
    {
      files = new Array();
    	fileType = prompt( 'Select type of Illustrator files to you want to process. Eg: *.ai', ' ' );
    	
    	// Get all files matching the pattern
    	files = sourceFolder.getFiles( fileType );
    	
    	if ( files.length > 0 )
    	{
    		// Get the destination to save the files
    		destFolder = Folder.selectDialog( 'Ziel-Verzeichnis für die SVGs auswählen.', '~' );
    		for ( i = 0; i < files.length; i++ )
    		{
    			sourceDoc = app.open(files[i]); // returns the document object
    									
    			// Call function getNewName to get the name and file to save the SVG
    			targetFile = getNewName();
    			
    			// Call function getSVGOptions get the SVGSaveOptions for the files
    			svgSaveOpts = getSVGOptions( );
    			
    			// Save as svg
    			sourceDoc.exportFile(targetFile, ExportType.SVG, svgSaveOpts );
    
    			sourceDoc.close();
    		}
    		alert( 'Files are saved as SVG in ' + destFolder );
    	}
    	else
    	{
    		alert( 'No matching files found' );
    	}
    }
    
    
    /*********************************************************
    
    getNewName: Function to get the new file name. The primary
    name is the same as the source file.
    
    **********************************************************/
    
    function getNewName()
    {
    	var ext, docName, newName, saveInFile, docName;
    	docName = sourceDoc.name;
    	ext = '.svg'; // new extension for svg file
    	newName = "";
    		
    	for ( var i = 0 ; docName[i] != "." ; i++ )
    	{
    		newName += docName[i];
    	}
    	newName += ext; // full svg name of the file
    	
    	// Create a file object to save the svg
    	saveInFile = new File( destFolder + '/' + newName );
    	
    
    	return saveInFile;
    }
    
    
    function getSVGOptions()
    {
    	var svgSaveOpts = new ExportOptionsSVG();
    							svgSaveOpts.DTD = SVGDTDVersion.SVG1_1;
    							svgSaveOpts.embedRasterImages = false;
    							svgSaveOpts.cssProperties = SVGCSSPropertyLocation.STYLEATTRIBUTES;
    							svgSaveOpts.coordinatePrecision = 3;
    							svgSaveOpts.fontType = SVGFontType.SVGFONT;
    							svgSaveOpts.documentEncoding = SVGDocumentEncoding.UTF8;
    							svgSaveOpts.fontSubsetting = SVGFontSubsetting.None;
    							svgSaveOpts.response = false;
    							svgSaveOpts.sVGTextOnPath = true;
    							svgSaveOpts.slices = false;
    							svgSaveOpts.preserveEditability = false;
    							svgSaveOpts.sVGAutoKerning = false;
    						return svgSaveOpts; }
    Danke für eure Hilfe!

    LG
    BlindJones
    Geändert von BlindJones (26-08-2020 um 12:24 Uhr)

  2. #2
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.799

    AW: Problem mit Javascript bei Dateinamen mit einem "." im Namen

    Die function getNewName() sucht in der Schleife von links den ersten Punkt. Das muss - wenn überhaupt - gedreht werden, damit es von rechts sucht. Und dann nicht konkatenieren sondern in einem mit .substr() den linken Teil ab Fundstelle nehmen.

    Aber richtig ist m. E. beides nicht. Wer sagt denn, was Extension ist und was nicht? Ich würde generell auf die Endung .ai prüfen und wenn false einen Plausibilitätsfehler melden, dann stimmt nämlich was nicht, würde ich zumindest annehmen.
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png

  3. #3
    BlindJones ist offline Grünschnabel
    registriert
    26-08-2020
    Beiträge
    2

    AW: Problem mit Javascript bei Dateinamen mit einem "." im Namen

    Danke für die Antwort, mikdoe

    Also kann das mit diesem Skript so nicht funktionieren, verstehe ich dich da richtig?
    Ich hatte gehofft eine kleine Code-Anpassung würde schon den Punkt im Namen ignoreren und ab .ai den gesamten Namen als neuen Namen übernehmen.
    Aber meine Frickelei am Code sorgte nur dafür, dass das Skript gar nicht mehr funktionierte...

    LG
    BlindJones

  4. #4
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.799

    AW: Problem mit Javascript bei Dateinamen mit einem "." im Namen

    Du musst halt definieren, was die Dateierweiterung für eine Bedeutung hat. Wenn das meins wäre würde ich den Namen nicht zerpflücken, sondern .ai einfach nur rechts dran hängen. Dann gibt es nirgendwo Probleme und man kann immer sehen, wie die Datei ursprünglich hieß.
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png

Ähnliche Themen

  1. Stehe vor einem Problem mit "select" mysql und JavaScript
    Von funnix im Forum Serverseitige Programmierung
    Antworten: 17
    Letzter Beitrag: 21-11-2012, 19:20
  2. "include" eines javascripts in einem javascript...
    Von benicio19789 im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 01-12-2007, 19:35
  3. JavaScript "ausführen" nach einem event
    Von benicio1978 im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 09-11-2007, 11:36
  4. Antworten: 17
    Letzter Beitrag: 17-10-2005, 18:46
  5. suche bestimmtes script bzw. dessen "namen"
    Von heaven im Forum Serverseitige Programmierung
    Antworten: 12
    Letzter Beitrag: 13-12-2001, 15:55

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •