كيف يمكنني تحسين الأداء عند إضافة InDesign XMLElements عبر AppleScript?

StackOverflow https://stackoverflow.com/questions/11574

سؤال

لدي AppleScript البرنامج الذي يخلق علامات XML و العناصر داخل برنامج Adobe InDesign الوثيقة.البيانات في الجداول ، ووضع علامات على كل خلية يأخذ .5 ثانية.النص كاملا يستغرق عدة ساعات لإكمال.

لا أستطيع الرد على الحلقة الداخلية رمز, ولكن لست متأكدا إذا كان من المفترض أن تكون عامة أو خاصة.سأترك الغوغاء تقرر.

[عدل] رمز يبني قائمة (قبل هذه الحلقة) الذي يحتوي على عنصر واحد لكل صف في الجدول.هناك أيضا قائمة تحتوي على سلسلة واحدة لكل عمود في الجدول.لكل خلية, البرنامج يخلق عنصر XML و علامة XML عن طريق وصل العناصر في [الصف]/[عمود] مواقف من القائمتين.كما أنه يربط النص في الخلية التي أنشئت حديثا عنصر.

أنا جديدة تماما AppleScript حتى بعض من هذه المدونة هو بفجاجة معدلة من أدوبي العينات.إذا كان رمز فظيعة لن يكون المتضرر.

هنا كود:

repeat with columnNumber from COL_START to COL_END

    select text of cell ((columnNumber as string) & ":" & (rowNumber as string)) of ThisTable

    tell activeDocument

        set thisXmlTag to make XML tag with properties {name:item rowNumber of symbolList & "_" & item columnNumber of my histLabelList}

        tell rootXmlElement

            set thisXmlElement to make XML element with properties {markup tag:thisXmlTag}

        end tell

        set contents of thisXmlElement to (selection as string)

    end tell

end repeat

تحرير:لقد أعاد صياغة السؤال بحيث تعكس بشكل أفضل إجابة صحيحة.

هل كانت مفيدة؟

المحلول 2

فكرت في هذا الأمر.

المستند يحتوي على مجموعة من جداول البيانات.في كل شيء ، هناك حوالي 7000 نقاط البيانات التي تحتاج إلى تصديرها.لقد كان إنشاء عنصر جذر واحد مع 7 ، 000 الأطفال.

لا تفعل ذلك.إضافة إلى العنصر الجذر حصلت على أبطأ وأبطأ حتى في حوالي 5000 طفل AppleScript مهلة البرنامج إحباط.

الحل هو جعل قانون بلدي أكثر هشاشة من خلال خلق ~480 الأطفال خارج الجذر ، مع كل طفل بعد حوالي 16 الأحفاد.نفس العدد من العقد ، لكن الكود يعمل الآن سريع بما فيه الكفاية.(لا يزال يستغرق حوالي 40 دقيقة إلى عملية الوثيقة ، ولكن هذا بلا حدود أقل من الوقت ما لا نهاية.)

بالمناسبة ، الأصلي 7000 طفل الخطة لم يكن غبي أو كسول كما يبدو.الحل الجديد يجبرني على ربط جدولين معا باستخدام البيانات في الجداول التي لا تحكم.سيقوم البرنامج الآن كسر إذا كان هناك الكثير من الفضاء حيث لا ينبغي أن يكون هناك واحد.(لكنه يعمل.)

نصائح أخرى

المشكلة هي بالتأكيد تحديد.هناك على أية حال يمكن استخراج النص كله مرة واحدة ثم تكرار الداخلي المتغيرات ؟

لا أستطيع الرد على الحلقة الداخلية رمز, ولكن لست متأكدا إذا كان من المفترض أن تكون عامة أو خاصة.سأترك الغوغاء تقرر.

الكود بعد وكمثال على ذلك يمكن أن تكون محددة قدر لك (أو رئيسك في العمل) هو مريح مع - في أكثر الأحيان أنه من الأسهل أن تساعد لكم مع تفاصيل محددة.

إذا الحلقة الداخلية رمز معقول طول, أنا لا أرى أي سبب لا يمكنك بعد ذلك.أعتقد تجاوز سعة المكدس هو المقصود لتشمل كل عام و محددة على الأسئلة.

هل تستخدم InDesign أو InDesign الخادم ؟ كم عدد صفحات المستند الخاص بك (أو ما هي المعلومات الأخرى التي يمكن أن تخبرنا عن المستند/ID الإعداد)?

أفعل الكثير من InDesign التنمية الخادم.يمكن أن تكون رؤية بطيئة هبوطا لعدة أسباب التي ليست بالضرورة رمز ذات الصلة.

الآن أنا توليد 100-300 صفحة الوثائق بالكامل تقريبا من البرنامج النصي/xml في حوالي 100 ثانية (يمكنك أن تفعل شيئا أكبر من ذلك بكثير).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top