[CDR X4 и ранее] Нужен макрос для преобразования многостраничного документа в одностраничный

  • Автор темы Автор темы foxix2006
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

foxix2006

Участник
Топикстартер
Сообщения
24
Реакции
0
Доброго времени суток . Нужен макрос который бы перемещал объекты со всех страниц документа на одну предварительно сгруппировав 1 страница 1 объект.
 
Зачем вам такой макрос?
Экспортируете документ в PDF затем импортируете с отжатой галкой Maintain layers and pages
 
Нет экспорт в PDF не подходит , размеры страницы не всегда совпадают с размерами объектов на них. при экспорте лишнее обрежется . мне нужно просто сложить блок из мелких растров расположенных по страницам и экспортировать в tiff.
 
А что мешает перед экспортом задать всем страницам размер заведомо больший максимального объекта, чтобы все гарантированно влезало?
 
Да кстати вариант, спасибо за идею. Подскажите еще такой момент при этспорте в PDF меняется цвет , картинки становятся более насыщенными, заготовка PDF (архивирование CMYK)
 
Вы хотите чтобы объекты не преобразовывались в CMYK а оставались в исходных моделях?
Тогда по идее надо так
upload_2016-11-12_11-43-36.png

но сейчас проверил и нашел странную багофичу у себя в X6 - при такой раскладке RGB битмапы почему то в Paletted превращаются 'hz''hmmm'
А если не в PDF а например в CMX экспортировать?
 
Сейчас не могу проверить у меня данные проблемы с цветами на работе на х4 версии , дома в х7 нет ни каких проблем с цветами. А вообще если все же макросом , а то в процессе преобразований туда сюда еще не мало может подводных камней всплыть , сложный макрос получится ?
 
сложный макрос получится ?
Да нет, простой совсем, но зачем множить сущности, когда есть уже готовое решение безо всякого кодинга? А подводные камни - они везде возможны, разве ж можно предугадать заранее? Особенно в такой непредсказуемой области, как автоматизация
 
Если у Вас будет время, может все же поможете с макросом? Мне так как то удобней кажется)
 
мне нужно просто сложить блок из мелких растров расположенных по страницам и экспортировать в tiff
Если под "блоком" вы понимаете упиханные на один лист картинки, то проще это сделать так: разархивировать cdr , извлечь все растры и, чем удобно, раскидать их на листе. Вроде даже у Фотошопа был на сей случай инструмент.
 
не понял какого формата у вас будет финальный документ, куда вы будите перемещать страницы?
Вот например если у вас 4 страницы формата а4, то вам нужен будет док-т формата а2, чтоб все влезло... А если у вас часть изображения за пределами рабочей области?

Я давно делал макрос, который делал экспорт страницы в маленьких размерах, например по ширине 4 см, а высота какая получится, с сохраннием пропорции. А потом на формат а4 все обратно импортировал - 5 в ширину, 5 в высоту - типо таблички получалось, для просмотра коллекции... Но у меня за пределы листа не выходило ничего... Но потом стал делать проще: делал постраничный экспорт, а потом в XnView - Создать - Лист эскизов. Делает быстрее и удобнее, там можно имена выводить, можно менять размеры получаемой "таблички"
 
Если под "блоком" вы понимаете упиханные на один лист картинки, то проще это сделать так: разархивировать cdr , извлечь все растры и, чем удобно, раскидать их на листе. Вроде даже у Фотошопа был на сей случай инструмент.
Ты спутал с odt, в cdr этот номер годится только для превьюшек ;)
 
  • Спасибо
Реакции: ~RA~
До X6 можно было моей тулзой битмапы распаковывать оттуда, демка это умела.
Но потом я забил на поддержку
Впрочем, тема про X4, в ней, возможно и такой вариант работает
 
Ну вот в первом приближении как то так
Код:
Sub PageFlatten()
    ActiveDocument.Unit = cdrMillimeter
    
    Set l = ActiveDocument.Pages(1).ActiveLayer
    
    For i = 2 To ActiveDocument.Pages.Count
     For j = 1 To ActiveDocument.Pages(i).Shapes.Count
        Set s = ActiveDocument.Pages(i).Shapes(j)
        s.MoveToLayer l

    Next j
 Next i
End Sub
 
  • Спасибо
Реакции: foxix2006
Все супер! Все работает , нужно добавить только строчку чтоб пустые странички удалялись.
 
Код:
Sub PageFlatten()
    ActiveDocument.Unit = cdrMillimeter
    
    Set l = ActiveDocument.Pages(1).ActiveLayer
    
    For i = 2 To ActiveDocument.Pages.Count
     For j = 1 To ActiveDocument.Pages(i).Shapes.Count
        Set s = ActiveDocument.Pages(i).Shapes(j)
        s.MoveToLayer l

    Next j
 Next i
 For i = ActiveDocument.Pages.Count To 2 Step -1
   ActiveDocument.Pages(i).Delete
 Next i
End Sub
 
  • Спасибо
Реакции: foxix2006
Все то что доктор прописал!!!!!
 
Статус
Закрыто для дальнейших ответов.