Автоматизация печати

Статус
Закрыто для дальнейших ответов.

alexmira

Участник
Топикстартер
Сообщения
155
Реакции
0
Господа, помогите плиз.
Есть задача: куча разноразмерных кореловских файлов.
Есть ли возможность автоматизировать написание деленных ПС или ПДФ?
Чтоб страницы брался из документа?
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Ответ: Автоматизация печати

Надеюсь, в самих файлах все страницы уже одного размера?
Данная болванка макроса для ХЗ выгонит в делённый Device Independent PostScript все открытые в данный момент документы. Нужный Вам принтер, опции печати, папку для принтфайлов и т.д. допишите сами. Для получения автоматом делённых пдф - сделайте данную папку "горячей" в Дистиллере. Если и в файле страницы разного размера, то придётся делать проход по страницам с печатью каждой в отдельный файл.
Код:
К сожалению, код оказался нерабочим, неправильно выставлял размеры страниц, 
поэтому я его удалил :(
 

alexmira

Участник
Топикстартер
Сообщения
155
Реакции
0
Ответ: Автоматизация печати

Это то, что надо. Спасибо. Но...
1) Какими операторами включается оверпринт черного, и оставлять-не оставлять треппинг документа?.
2) И как задать принтер?
3) И опции печати?

Ответьте плиз.
 

alexmira

Участник
Топикстартер
Сообщения
155
Реакции
0
Ответ: Автоматизация печати

и в догонку... А перечень операторов можно? или где его взять (описание опций печати)
 

Asmussen

15 лет на форуме
Сообщения
143
Реакции
47
Ответ: Автоматизация печати

оверпринт- .Separations.AlwaysOverprintBlack = True

полный список можно выудить из справки, в редакторе VBA наведя курсор например на PrintSettings и нажав F1. А там уже потихоньку найдете все что нужно.
 

alexmira

Участник
Топикстартер
Сообщения
155
Реакции
0
Ответ: Автоматизация печати

А как вообще прикрутить к этому корелу эти скрипты?
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Ответ: Автоматизация печати

Это макрос, а не скрипт.
 

alexmira

Участник
Топикстартер
Сообщения
155
Реакции
0
Ответ: Автоматизация печати

lev сказал(а):
Это макрос, а не скрипт.

понял, а как ему присвоить клавиатурное сокращение?
 

ch_alex

Погулять вышел.
15 лет на форуме
Сообщения
8 420
Реакции
2 709
Ответ: Автоматизация печати

lev сказал(а):
Надеюсь, в самих файлах все страницы уже одного размера?
Увы, нет. Вот такой у нас весёленький заказчик.

ЗЫ. Да, говорила мне мама - учи VBA.
 

alexmira

Участник
Топикстартер
Сообщения
155
Реакции
0
Ответ: Автоматизация печати

lev сказал(а):
Надеюсь, в самих файлах все страницы уже одного размера?
Данная болванка макроса для ХЗ выгонит в делённый Device Independent PostScript все открытые в данный момент документы. Нужный Вам принтер, опции печати, папку для принтфайлов и т.д. допишите сами. Для получения автоматом делённых пдф - сделайте данную папку "горячей" в Дистиллере. Если и в файле страницы разного размера, то придётся делать проход по страницам с печатью каждой в отдельный файл.
Код:
К сожалению, код оказался нерабочим, неправильно выставлял размеры страниц, 
поэтому я его удалил :(

хм, а можно повторить, только с рабочим, плиз :)
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Ответ: Автоматизация печати

Рабочего у меня нет :(
Лично мне кажется, что это баг в Corel-VBA.
 

Asmussen

15 лет на форуме
Сообщения
143
Реакции
47
Ответ: Автоматизация печати

Экспериментальным путем выяснил, что у меня .SetCustomPaperSize работает правильно, если размеры ставить в виде mm*100 (я не знаю что это за единицы измерения).
Т.е. у меня работает примерно в таком виде:

ActiveDocument.Unit = cdrMillimeter
H = ActivePage.SizeHeight * 100
W = ActivePage.SizeWidth * 100
With ActiveDocument.PrintSettings
.SetCustomPaperSize W, H, prnPaperPortrait
'и тд...
End With
 

Tonyk

Участник
Сообщения
1 439
Реакции
0
Ответ: Автоматизация печати

mm*100 = дециметр
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Ответ: Автоматизация печати

в данном случае это cdrTenthMicron - десятая доля микрона, внутренняя единица размерности CorelDRAW. При использовании cdrTenthMicron будет правильно выставлятся размер CustomPage принтера, но проблема необнуления PrintSettings, из-за которой я удалил свой код, этим не снимается :(
 

alexmira

Участник
Топикстартер
Сообщения
155
Реакции
0
Ответ: Автоматизация печати

все работает. вот код.

Код:
Sub print_all()
  Dim d As Document
  For Each d In Documents
    d.Activate
    d.Unit = cdrMillimeter
    H = ActivePage.SizeHeight * 100
        W = ActivePage.SizeWidth * 100
         With ActiveDocument.PrintSettings
                  .PrintToFile = True
            .Copies = 1
            .SelectPrinter "Agfa Apogee Normalizer"
      ActiveDocument.Unit = cdrMillimeter
        .SetCustomPaperSize W + 200, H + 200, prnPaperPortrait
      .Separations.Enabled = True
      .Separations.PreserveOverprints = True
      .Separations.SpotToCMYK = False
      .PostScript.Level = prnPSLevel3
        .Separations.AlwaysOverprintBlack = True
        .Options.UseColorProfile = False
      .Options.MarksToPage = False
   .Prepress.ColorCalibrationBar = False
          .FileName = "t:\24_flex\" & d.Name & ".ps"
      .ForMac = False
    End With
    d.PrintOut
  Next d
End Sub
 

alexmira

Участник
Топикстартер
Сообщения
155
Реакции
0
Ответ: Автоматизация печати

Спасибо все за помощь
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Ответ: Автоматизация печати

В том то и дело, что не всё.
Например: откроем несколько документов и напечатаем их с нажатой опцией Documents все в один файл, а теперь попробуем напечатать их данным макросом каждый в свой файл. Что у Вас получится?

зы заключайте публикуемый код в теги [ code ]...[ /code ]
 

ch_alex

Погулять вышел.
15 лет на форуме
Сообщения
8 420
Реакции
2 709
Ответ: Автоматизация печати

Лев, у нас всё получается.
Поскольку не являюсь супер-знатоком Карельских дров, хочу спросить - опция Document - это где? В меню печати?
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Ответ: Автоматизация печати

Ну и ладненько :)
угу в меню печати
 
Статус
Закрыто для дальнейших ответов.