Загрузка данных
#target "indesign"
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT;
app.scriptPreferences.measurementUnit = MeasurementUnits.MILLIMETERS;
// ============================================================
// 1. ДОКУМЕНТ 210×100 мм + BLEED 3 мм (окно видно)
// ============================================================
var doc = app.documents.add();
doc.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS;
doc.viewPreferences.verticalMeasurementUnits = MeasurementUnits.MILLIMETERS;
doc.documentPreferences.pageWidth = 210;
doc.documentPreferences.pageHeight = 100;
doc.documentPreferences.pageOrientation = PageOrientation.LANDSCAPE;
doc.documentPreferences.facingPages = false;
doc.documentPreferences.documentBleedTopOffset = 3;
doc.documentPreferences.documentBleedBottomOffset = 3;
doc.documentPreferences.documentBleedInsideOrLeftOffset = 3;
doc.documentPreferences.documentBleedOutsideOrRightOffset = 3;
var page = doc.pages[0];
// ============================================================
// 2. БЕЛАЯ ЗАЛИВКА
// ============================================================
var white = doc.colors.itemByName("White");
if (!white.isValid) {
white = doc.colors.add({
name: "White",
model: ColorModel.PROCESS,
space: ColorSpace.CMYK,
colorValue: [0, 0, 0, 0]
});
}
// ============================================================
// 3. ФОНОВАЯ КАРТИНКА Письма.jpg (ищем в 3 местах)
// ============================================================
var imgFile = null;
var candidates = [
File("~/Desktop/Письма.jpg"),
File("~/Рабочий стол/Письма.jpg"),
File("~/Downloads/Письма.jpg")
];
for (var i = 0; i < candidates.length; i++) {
if (candidates[i].exists) { imgFile = candidates[i]; break; }
}
if (imgFile) {
var img = page.place(imgFile)[0];
img.geometricBounds = [-3, -3, 103, 213];
img.sendToBack();
}
// ============================================================
// 4. ТЕКСТ
// ============================================================
var text =
"Почта всегда была для людей способом помнить друг о друге даже тогда, когда время и расстояние строили пропасть между ними.\r" +
"Быстрое почтовое сообщение очень важно как для людей, находящихся на разных концах земли, так и для тех, кто находится на разных концах одного города. Несмотря на стремительное развитие современных технологий, ничто не может заменить старую добрую доставку почты. Утренние газеты, срочная пересылка документов, неожиданный подарок... Никто не заменит эти важные для каждого из нас вещи!\r" +
"Как нас найти?\r" +
"Мы находимся в крупных городах, но выполняем доставку в любую точку земли. Список адресов, куда вы можете обратиться при необходимости воспользоваться экспресс почтой можно найти на нашем сайте www.expresspochta.ru или в городском справочном бюро.\r" +
"Стоимость услуг.\r" +
"Стоимость рассчитывается исходя из срочности доставки почтового отправления, его веса, способа пересылки и т.д. Точную стоимость вы можете рассчитать самостоятельно с помощью нашего сайта (разделе «Калькулятор услуг») или, обратившись в любое наше отделение.";
// ============================================================
// 5. ТРИ ФРЕЙМА + ТЕКСТ + СВЯЗКА (порядок важен!)
// ============================================================
var frame1 = page.textFrames.add();
frame1.geometricBounds = [30, 5, 90, 65];
var frame2 = page.textFrames.add();
frame2.geometricBounds = [5, 68, 45, 205];
var frame3 = page.textFrames.add();
frame3.geometricBounds = [55, 5, 95, 205];
// Сначала текст, потом связка
frame1.contents = text;
frame1.nextTextFrame = frame2;
frame2.nextTextFrame = frame3;
// ============================================================
// 6. ФОРМАТИРОВАНИЕ АБЗАЦЕВ
// ============================================================
function tryFont(obj, names) {
for (var i = 0; i < names.length; i++) {
try { obj.appliedFont = names[i]; return; } catch (e) {}
}
}
var story = frame1.parentStory;
var paras = story.paragraphs;
tryFont(paras[0], ["Courier New\tRegular", "Courier New", "Courier\tRegular", "Courier"]);
paras[0].pointSize = 12;
paras[0].fillColor = white;
tryFont(paras[1], ["Myriad Pro\tRegular", "Myriad Pro", "Arial\tRegular", "Arial"]);
paras[1].pointSize = 10;
paras[1].justification = Justification.CENTER_ALIGN;
tryFont(paras[2], ["Myriad Pro\tBold", "Myriad Pro", "Arial\tBold", "Arial"]);
paras[2].pointSize = 10;
paras[2].spaceAfter = 6;
tryFont(paras[3], ["Myriad Pro\tRegular", "Myriad Pro", "Arial\tRegular", "Arial"]);
paras[3].pointSize = 10;
paras[3].leftIndent = 3;
tryFont(paras[4], ["Myriad Pro\tBold", "Myriad Pro", "Arial\tBold", "Arial"]);
paras[4].pointSize = 10;
paras[4].spaceAfter = 6;
tryFont(paras[5], ["Myriad Pro\tRegular", "Myriad Pro", "Arial\tRegular", "Arial"]);
paras[5].pointSize = 10;
paras[5].leftIndent = 3;
// ============================================================
// 7. ПЯТИУГОЛЬНЫЙ ВЕРХНИЙ ФРЕЙМ (КЛАПАН)
// ============================================================
frame2.paths[0].entirePath = [
[68, 5],
[205, 5],
[205, 40],
[136.5, 22],
[68, 40]
];
// ============================================================
// 8. ДВЕ КОЛОНКИ
// ============================================================
frame3.textFramePreferences.textColumnCount = 2;
frame3.textFramePreferences.textColumnGutter = "5mm";
// ============================================================
// 9. КОНВЕРТЫ — только верхняя линия + текст по контуру
// ============================================================
function drawEnvelope(x, y, w) {
var gl = page.graphicLines.add();
gl.paths[0].entirePath = [
[x, y],
[x + w, y]
];
gl.strokeWeight = 0;
var tp = gl.textPaths.add({ contents: "Почта России · Express" });
tryFont(tp.texts[0], ["Myriad Pro\tRegular", "Myriad Pro", "Arial\tRegular", "Arial"]);
tp.texts[0].pointSize = 6;
tp.texts[0].fillColor = doc.swatches.itemByName("Black");
}
drawEnvelope(80, 48, 14);
drawEnvelope(100, 48, 14);
drawEnvelope(160, 48, 14);
// ============================================================
// 10. ПОКАЗАТЬ ВЕСЬ МАКЕТ
// ============================================================
try {
app.activeWindow.zoom(ZoomOptions.FIT_PAGE);
} catch (e) {}
alert("Готово! Если фото не вставилось — положи Письма.jpg на рабочий стол и запусти скрипт снова.");