اكتشاف تفيضات النص بشكل موثوق في الألعاب النصية في خادم InDesign باستخدام Scripting JavaScript؟

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

سؤال

أقوم ببعض البرمجة النصية JavaScript مع خادم InDesign في الوقت الحالي. أواجه مشكلة في محاولة اكتشاف الفائض بشكل موثوق في الإطارات النصية، بعد تغيير تنسيق أو وضع XML داخلها.

على سبيل المثال، لدي وظيفة تقلص ارتفاع 4 أعمدة TextFrame حتى يتضح النص الإطار. ثم يزيد من الارتفاع حتى لا يفيض. يجب أن يؤدي ذلك إلى قريب من مرتفعات الأعمدة المتساوية قدر الإمكان.

while(!bodyTextFrame.overflows) {
  var bounds = bodyTextFrame.geometricBounds;
  bodyTextFrame.geometricBounds = [bounds[0], bounds[1], bounds[2] - 1, bounds[3]];
  //app.consoleout("shrinking");
}

while(bodyTextFrame.overflows) {
  var bounds = bodyTextFrame.geometricBounds;
  bodyTextFrame.geometricBounds = [bounds[0], bounds[1], bounds[2] + 1, bounds[3]];
  //app.consoleout("expanding");
}

في InDesign Desktop هذا يعمل بشكل جيد (مع بعض التعديلات لجعله يستخدم الكائن المحدد حاليا)، ولكن في InDesign Server، يبدو أن هذا يتجاوز أثناء المرحلة المتقلص، ثم قم بتوسيع مرة واحدة فقط.

تحدث مشكلة مماثلة أيضا بعد وضع XML في إطار TextFrame ثم اكتشاف ما إذا كان هذا النص قد تسبب في تجاوز سعة. إذا قمت بالتحقق من تجاوز الفائض مباشرة بعد pacexml ()، فستظهر دائما خطأ، ولكن إذا قمت بالتحقق من تجاوز الفائض في جزء لاحق من البرنامج النصي، فهو يكتشفه بشكل صحيح.

يشبه بعض الشيء، هناك تأخير في حساب ما إذا كان النص يفيض، لكنه يحمل عبر البرنامج النصي بغض النظر عن محدثات خاصية تجاوز الفائض في الإطار النصي.

هل هناك طريقة لإجبار البرنامج النصي على الانتظار حتى تم تحديث خاصية Overflow؟ أو تعيين وضع البرنامج النصي لانتظار التحديث؟ أو هل أنا فقط أفعل ذلك خطأ؟

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

المحلول 2

لذلك، اتضح أن هذا كان يحدث بسبب تأثير جانبي لكيفية هيكلة XML الخاصة بي. XML كنت أتقدم بطلب إلى TextFrame تحتوي على عدد من <p> العلامات التي بدت تخلط بين محرك التخطيط عند تقييم الفرق. ركضت بلدي XML من خلال برنامج نصي لاستبدال العلامات مع &#x2029; (حرف فاصل الفقرة) ويعمل بشكل جيد الآن.

نصائح أخرى

كما وجدت، التكوين مهمة مؤجلة. ستجبر معظم أنشطة البرمجة النصية التي تتطلب تكوين صالحها تلقائيا، ولكن في بعض الأحيان عليك استخدام الأسلوب RECOMPOOD ()، على سبيل المثال

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