Регистрация | | запомнить |
 
 
ВК



Просматривают:   1 Анонимно





AIClipBrd копирование через буфер в Adobe
print | #
PC/director
Присоединился:
2005/2/5 2:25
Откуда РФ
Сообщений: 4640
Offline
Эта тем являеться дополненем к макросу AIClipBrd от Alex Vakulenko

Проблема:
При копирование через буфер обмена из CorelDraw в формате PDF, копируются только те объекты которые находятся в приделах активной страницы.
Пример:

Если допустим объекты частично выходят за пределы страницы,то в PhotoShopе мы получаем часть объекта или вовсе пустую область.

или так, если объект вне страницы

плюс ко всему не нужное пространство по краям
Видемо это связано со спецификацией PDF...

Мое решение на уровне кода:

Цитата:
If bCopyPDF Then
'mendow start
'Назначаем документу милиметры
ActiveDocument.Unit = cdrMillimeter
Dim s1 As Shape
Set s1 = ActiveSelectionRange.Group
s1.AlignToPageCenter cdrAlignHCenter + cdrAlignVCenter, cdrTextAlignBoundingBox
'Получаем размер абриса выделеного + 1мм
ActiveDocument.MasterPage.SetSize s1.SizeWidth + 1, s1.SizeHeight + 1

'mendow end
nClipFmtPDF = RegisterClipboardFormat(PDFClipFormat)
sTempFilePDF = GetTempFile("pdf"
With ActiveDocument.PDFSettings
.BitmapCompression = pdfLZW
.ColorMode = pdfCMYK
.EmbedBaseFonts = False
.EmbedFonts = False
.FileInformation = False
.Hyperlinks = False
.IncludeBleed = False
.Linearize = True
.MaintainOPILinks = True
.Overprints = True
.pdfVersion = IIf(VersionMajor > 10, 3, 1) 'pdfVersion14 : pdfVersion13
.PublishRange = pdfSelection
.RegistrationMarks = False
.SpotColors = True
.Startup = pdfPageOnly
.SubsetFonts = False
.TextAsCurves = bTextToCurves
.Thumbnails = False
.UseColorProfile = False
End With
ActiveDocument.PublishToPDF sTempFilePDF

'mendow start отменяем действия преабразующие страницу и групперующие объекты
ActiveDocument.Undo
ActiveDocument.Undo
ActiveDocument.Undo
MsgBox ( "ok" )

'mendow end
End If


получаем объект без всякого лишнего в независимости от того из какой части был скопированы объекты.
Пример:

и в PhotoShope


файл скрипта с моими правками: AIClipBrd.zip

критика по коду от профи, ждеца и приветствуется.

Опубликовано: 2009/2/11 18:00
_________________
I love vector graphics!!!


Re: AIClipBrd копирование через буфер в Adobe
Пользователь 1 уровня
Присоединился:
2006/10/30 14:36
Откуда Барнаул
Сообщений: 252
Offline
Я бы сделал так:

Цитата:
If bCopyPDF Then
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Optimization = True

Dim myUnit As CorelDRAW.cdrUnit, s1 As Shape
myUnit = ActiveDocument.Unit
ActiveDocument.Unit = cdrMillimeter
Set s1 = ActiveSelectionRange.Group
s1.AlignToPageCenter cdrAlignHCenter + cdrAlignVCenter, cdrTextAlignBoundingBox
ActiveDocument.MasterPage.SetSize s1.SizeWidth + 1, s1.SizeHeight + 1
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nClipFmtPDF = RegisterClipboardFormat(PDFClipFormat)
sTempFilePDF = GetTempFile("pdf")
With ActiveDocument.PDFSettings
.BitmapCompression = pdfLZW
.ColorMode = pdfCMYK
.EmbedBaseFonts = False
.EmbedFonts = False
.FileInformation = False
.Hyperlinks = False
.IncludeBleed = False
.Linearize = True
.MaintainOPILinks = True
.Overprints = True
.pdfVersion = IIf(VersionMajor > 10, 3, 1) 'pdfVersion14 : pdfVersion13
.PublishRange = pdfSelection
.RegistrationMarks = False
.SpotColors = True
.Startup = pdfPageOnly
.SubsetFonts = False
.TextAsCurves = bTextToCurves
.Thumbnails = False
.UseColorProfile = False
End With
ActiveDocument.PublishToPDF sTempFilePDF
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ActiveDocument.Undo 3
ActiveDocument.Unit = myUnit
Optimization = False
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
End If


ПС: В теме ИМХО надо было упомянуть что AIClipBrd это макрос Алекса, и в нём есть такой вот недочётик. А то многие просто не поймут о чём вообще речь

Опубликовано: 2009/2/12 7:13

Edited by Sancho on 12/02/2009 7:42:03
Edited by Sancho on 12/02/2009 7:43:55
_________________


Re: AIClipBrd копирование через буфер в Adobe
Пользователь 1 уровня
Присоединился:
2006/10/30 14:36
Откуда Барнаул
Сообщений: 252
Offline
А это для справки, пытливым умам ))))

Class PDFVBASettings

Опубликовано: 2009/2/12 7:23

Edited by Sancho on 12/02/2009 7:43:21
_________________


Re: AIClipBrd копирование через буфер в Adobe
PC/director
Присоединился:
2005/2/5 2:25
Откуда РФ
Сообщений: 4640
Offline
Sancho
А ты не знаешь как узнать глобальную цветовую модель?(CMYK RGB)
точнее вот эти значения

Опубликовано: 2009/2/12 17:55
_________________
I love vector graphics!!!


Re: AIClipBrd копирование через буфер в Adobe
Пользователь 1 уровня
Присоединился:
2006/10/30 14:36
Откуда Барнаул
Сообщений: 252
Offline
Это цветовая модель для эффектов.
В ВБА я не нашёл... может плохо искал конешно.
В ini файликах профиля можно найти значения, но это гемор

Я могу поспрашивать зарубежных знакомых по этому вопросу, может кто что знает.

Опубликовано: 2009/2/12 22:02
_________________


Re: AIClipBrd копирование через буфер в Adobe
PC/director
Присоединился:
2005/2/5 2:25
Откуда РФ
Сообщений: 4640
Offline
Цитата:
Sancho пишет:
Это цветовая модель для эффектов.

Я бы не сказал что это для эффектов, так как она влияет на отображение цветов.
И это очень важно для корректного отображения картинки.


Цитата:
Sancho пишет:
Я могу поспрашивать зарубежных знакомых по этому вопросу, может кто что знает.

Было бы здорово!

Объясню зачем мне это нужно.
Допустим мы работаем в шопе с РГБцветом и потребовалось что то скопировать из корел, так вот в макросе железно вшито .ColorMode = pdfCMYK, не плохо было бы в зависимости от глобальных настроек менять .ColorMode на pdfRGB и .UseColorProfile = False на true. в ручную менять каждый раз как то не того...

Опубликовано: 2009/2/12 22:29
_________________
I love vector graphics!!!


Re: AIClipBrd копирование через буфер в Adobe
Пользователь 1 уровня
Присоединился:
2006/10/30 14:36
Откуда Барнаул
Сообщений: 252
Offline
Может это тебе поможет... бывает такое что надо работать с РГБ, а бывает что со СМИК. Для этого я сделал настройки менеджмента для СМИКа и сохранил их как пресет, а потом написал такой вот код:
Цитата:
Sub colorManag_Sancho()
On Error Resume Next
ColorManager.LoadStyle "Sancho"
Palettes.Open (LanguagePath & "\Custom Data\coreldrw.cpl")
Palettes.Item("Default RGB palette").Close
End Sub

Sub colorManag_Web()
On Error Resume Next
ColorManager.LoadStyle "Optimized for the Web"
Palettes.Open (LanguagePath & "\Custom Data\corelpnt.cpl")
Palettes.Item("Default CMYK palette").Close
End Sub


Соответственно когда я работаю с РГБ то открыта РГБ палитра и настройки цвета для ВЕБ, а когда со СМИКом, то палитра СМИК и мой профиль.

Я думаю что проверку профиля или палитры несложно сделать ))))

Опубликовано: 2009/2/12 22:48
_________________







Форма быстрого ответа
ЛогинИмя   Пароль   Логин
Сообщение:          

      ПРИМЕР


 [далее...]
Уведомлять о сообщениях в теме.



[Настройки поиска]