Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>Hilfe: InDesign Script

Hilfe: InDesign Script

uplift
uplift19.08.0816:53
Ich möchte gerne ein InDesign-Dokument mit mehreren Seiten (gefüllt über Datenzusammenführung) als Einzelseitendokumente abspeichern. Dazu habe ich auch ein passendes Script gefunden.
//**************************************************************************************************************
//**************************************************************************************************************
//****
//****    Page extractor 1.0 - A script from Loïc Aigon with the great help of Peter Kahrel and other guys
//****    that cooperated on this stuff in tha adobe scripting forum. Feel free to improve. 
//****    a little mail at loic _ aigon@yahoo.fr if you appreciate that script would be nice.
//****
//**************************************************************************************************************
//**************************************************************************************************************


// 1. Control for documents open. If true, the script launches the dilog

if(app.documents.length >0)
{
    var doc = app.activeDocument;
    if(doc.saved==true)
    {
        extractdlg();
    }
    else
    {
        alert("Please save you file first before processing the script");
    }
}
else
{
    alert("No documents open !"); 
}














// 2. Gathers many infos on the document.

function pageinfos()
{
    var pg = doc.pages;
    var pglg  = pg.length;
    var pFirst = Number(pg[0].name);
    var pLast = Number(pg[pglg-1].name);
    var pgHeigth = doc.documentPreferences.pageHeight;
    var pgWitdh = doc.documentPreferences.pageWidth;
    var docname = String(doc.fullName).replace (/\.indd$/, "");
    var docpath = doc.filePath;
    var docfullname = doc.fullName;

    var infoarr = [pglg, pFirst, pLast, pgHeigth,pgWitdh,docname,docpath,docfullname];
    return infoarr;
}


// 3. Main function. First part is the dialog

function extractdlg()
{
    var docfile = String(pageinfos()[7]);
    var dlg = app.dialogs.add({name : "Pages Extractor 1.0"}); 
    with(dlg)
    {
        var firstclmn = dialogColumns.add();
        with(firstclmn)
        {
            var firstrow = dialogRows.add();
            with(firstrow)
            {
                var clmn1 = dialogColumns.add();
                with(clmn1)
                {
                    var row1 = dialogRows.add();
                    row1.staticTexts.add({staticLabel : "Extract pages..."});
                    var row2 = dialogRows.add();
                    with(row2)
                    {
                        var r2c2 = dialogColumns.add();
                        with(r2c2)
                        {
                            var r2c2r1 = dialogRows.add();
                            var pgStart = r2c2r1.realEditboxes.add({editValue:pageinfos()[1], minWidth: 30});
                        }
                        var r2c3 = dialogColumns.add();
                        with(r2c3)
                        {
                            var r2c3r1 = dialogRows.add();
                             r2c3r1.staticTexts.add({staticLabel : "to"});
                        }
                        var r2c4 = dialogColumns.add();
                        with(r2c4)
                        {
                            var r2c4r1 = r2c4.dialogRows.add();
                            var pgEnd = r2c4r1.realEditboxes.add({editValue:pageinfos()[2], minWidth: 30});
                        }
                            
                    }
                }
            }
            var secondrow = dialogRows.add();
            with(secondrow)
            {
                var clmn2 = dialogColumns.add();
                with(clmn2)
                {
                    var row2 = dialogRows.add();
                    with(row2)
                    {
                        var sepbox = checkboxControls.add({staticLabel:"Extract as separate pages", checkedState:false});
                    }
                }
            }
            var thirdrow = dialogRows.add();
            with(thirdrow)
            {
                var clmn3 = dialogColumns.add();
                with(clmn3)
                {
                    var row3 = dialogRows.add();
                    with(row3)
                    {
                        var rembox = checkboxControls.add({staticLabel:"Remove pages after extraction", checkedState:false});
                    }
                }
            }
            var foutrhrow = dialogRows.add();
            with(foutrhrow)
            {
                var clmn4 = dialogColumns.add();
                with(clmn4)
                {
                    var row4 = dialogRows.add();
                    with(row4)
                    {
                        var savebox = checkboxControls.add({staticLabel:"Choose other extraction folder", checkedState:false});
                    }
                }
            }
        }
    }

    // If the user made good choices, the script operates.

    if(dlg.show()==true)
    {
        if(pgStart.editValue >= pageinfos()[2] || pgEnd.editValue <= pageinfos()[1])
        {
            alert("The pages numbers may be at least "+pageinfos()[1] +" for the first page of the range and "+ pageinfos()[2] + " at maximum for the last page");
        }
        else
        {    
            // If the user choose to pick a different folder, he will be asked for. Otherwise, the dafault folder is the one containing the file.
            if(savebox.checkedState==true)
            {
                var extractfolder = Folder.selectDialog ("Please choose a folder where to save extracted pages...");
                var saveextractfolder = String(extractfolder.fullName)+"/" +String(doc.name).replace (/\.indd$/, "");
            }
            else
            {
                var saveextractfolder = String(pageinfos()[5]);
            }
            var rem0 = pageinfos()[0]-1;
            var rem2 =  (pgStart.editValue-2);
            
            // Variables definition regarding to the choice of the user to separate or not the extracted pages.
            
            if(sepbox.checkedState==true)
            {    
                var W = pgEnd.editValue-pgStart.editValue+1;
                var rem1 = pgStart.editValue;
            }
            else
            {
                var W = 1;
                var rem1 = pgEnd.editValue;
            }
            
            // Extraction loop 
            for(w=0; w<W;w++)
            {
                if(sepbox.checkedState==true)
                {
                    var exportdocname = "_Pg" +(pgStart.editValue+w) +".indd";
                }
                else
                {
                    var exportdocname = "_Pg"+pgStart.editValue+"_to_Pg_"+pgEnd.editValue +".indd";
                }
                for(i=rem0; i>=rem1+w;i--)
                {
                    doc.pages[i].remove();
                }
                for(i=rem2+w; i>=0;i--)
                {
                    doc.pages[i].remove();
                }
                var exportdoc = doc.save(File(saveextractfolder + exportdocname));
                exportdoc.close(SaveOptions.no);
                if(sepbox.checkedState==true && w<(pgEnd.editValue-pgStart.editValue))
                {
                    app.open(File(docfile));
                }
            }
        
            // If the user chose to remove the extracted pages from the original document, it will re open the first document then remove the unuseful pages.
            if(rembox.checkedState == true)
            {
                app.open(File(docfile));
                for(i=pgEnd.editValue-1; i>=pgStart.editValue-1;i--)
                {
                    doc.pages[i].remove();
                }
                app.activeDocument.close(SaveOptions.yes);
            }
        }
    }
}

            

Allerdings möchte/muss ich die Dateinamen dynamisch aus dem Dokument generieren. Das Ganze sind Anzeigen für zig Händler. Jeder der Händler hat in der Datenbank eine eindeutige ID. Diese muss vor den Dateinamen gestellt werden. Dann folgt ein statischer Begriff und dann müsste noch die Postleitzahl ausgegeben werden.
Ein Beispiel-Dateiname wäre also <ID>Sebtember_08<PLZ>.indd. Kann mir da vielleicht jemand helfen. Habe schon überlegt die ID und die PLZ mit einem eigenen Absatzformat auszugeben, aber wie komme ich dann daran um es in den Dateinamen zu bekommen. Vielen Dank schonmal im voraus.
„Computer erleichtern uns ungemein die Arbeit an Problemen, die wir ohne sie nicht hätten. Ich habe keine Lösung, aber ich bewundere das Problem.“
0

Kommentare

uplift
uplift12.12.0809:58
Ich schiebs noch mal nach oben.

Kann man in InDesign einen Text auslesen und diesen an den Dateinamen beim Export weiter geben?
„Computer erleichtern uns ungemein die Arbeit an Problemen, die wir ohne sie nicht hätten. Ich habe keine Lösung, aber ich bewundere das Problem.“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.