Штрих-коды в кривых Corel X6 - Цифровая печать как бизнес - форум и портал
Индустрия цифровой печати - отраслевой портал  

Вернуться   Цифровая печать как бизнес - форум и портал > Компьютеры и программное обеспечение в оперативной полиграфии > Программное обеспечение для оперативной полиграфии

Реклама на форуме
  • Дополнительный доход для сервисного инженера. Узнать как…
Ответ
 
Опции темы
Старый 05.03.2013, 15:46   #1
hatrix
Местный
 
Регистрация: 11.03.2011
Адрес: Russia
Сообщений: 777
Репутация: 44
По умолчанию Штрих-коды в кривых Corel X6

Тут лежит макрос для конвертации кореловских штрих-кодов в кривые. Работает только до версии X4. Немного поковырялся в нем и подточил для X6, добавил в конце окрашивание в K100. Можно скачать тут или скопипастить ниже.
Чтобы заработал в X5 (не проверял правда) нужно найти в макросе "Corel BARCODE X6" и заменить на "Corel BARCODE X5" (должно сработать по идее).

Код:
Sub BarCodeCurves()
   Dim sr As New ShapeRange, sh As Shape, expF As ExportFilter, colorWHITE As New Color, colorBLACK As New Color
   Dim file$, toDEL As New ShapeRange, toSelect As New ShapeRange, bars&
   If ActiveDocument Is Nothing Then Exit Sub
   If ActiveShape Is Nothing Then sr.AddRange ActivePage.FindShapes(, cdrOLEObjectShape) _
      Else sr.AddRange ActiveSelection.Shapes.FindShapes(, cdrOLEObjectShape)
   If sr.Count = 0 Then Beep: Exit Sub
   ActiveDocument.BeginCommandGroup "BARCODE curves"
   On Error GoTo NextBar
   For Each sh In sr
      If InStr(sh.OLE.FullName, "Corel BARCODE X6") Then
         sh.CreateSelection: bars = bars + 1
         file = Environ("temp"): file = file + IIf(Right(file, 1) <> "\", "\", "") + Hex(Timer) + ".eps"
         Set expF = ActiveDocument.ExportEx(file, cdrEPS, cdrSelection)
         EPSOptionsLoad expF
         expF.Finish
         If FileSystem.FileLen(file) > 0 Then
            sh.Layer.Import file, cdrPSInterpreted
            If Not ActiveShape Is Nothing Then
               ActiveShape.SetPosition sh.PositionX, sh.PositionY
               ActiveShape.OrderFrontOf sh
               toDEL.Add sh
               toSelect.Add ActiveShape
               FileSystem.Kill file
            End If
         End If
      End If
NextBar:
      Err.Clear
   Next
   toDEL.Delete
   ActiveDocument.EndCommandGroup
   If toSelect.Count = 0 Then
      ActiveDocument.ClearSelection
      MsgBox IIf(bars = 0, "No BARCODES found", "Error on internal EPS export/import of BARCODE")
      Exit Sub
   End If
   toSelect.CreateSelection
   If MsgBox("Found: " + CStr(bars) + " barcodes. " + _
             IIf(bars = toSelect.Count, "EVERYTHING is curved", "Only " + CStr(toSelect.Count)) + " are curved" + vbNewLine + vbNewLine + _
             "Remove white background and combine individually?", vbYesNoCancel, "BARCODE curver") <> vbYes Then
                        colorBLACK.RGBAssign 0, 0, 0
                        For Each sh In toSelect
                         Set sr = sh.UngroupAllEx
                           For bars = 1 To sr.Count
                             If sr(bars).Fill.UniformColor.IsSame(colorBLACK) Then sr(bars).Fill.UniformColor = CreateCMYKColor(0, 0, 0, 100)
                           Next
                        Next
                        Exit Sub
                        End If
   ActiveDocument.BeginCommandGroup "BARCODE combine curves"
   On Error GoTo NextShape
   colorWHITE.RGBAssign 255, 255, 255
   toDEL.RemoveAll
   For Each sh In toSelect
      Set sr = sh.UngroupAllEx
      For bars = 1 To sr.Count
         If sr(bars).Fill.UniformColor.IsSame(colorWHITE) Then _
            sr(bars).Delete: Exit For
      Next
      toDEL.Add sr.Combine
NextShape:
      Err.Clear
   Next
   ActiveDocument.EndCommandGroup
   toDEL.CreateSelection
   ActiveSelection.Fill.UniformColor = CreateCMYKColor(0, 0, 0, 100)
   End Sub

Private Function EPSOptionsLoad(eFlt As ExportFilter)
   With eFlt
   .AdjustFountainSteps = False: .ApplyICCProfile = False: .AutoSpread = False
    .CropMarks = False: .FixedWidth = False: .IncludeFonts = False: .MaintainOPILinks = False
    .OverprintBlack = False: .PreserveOverprints = False: .TextAsCurves = True: .Transparent = True
    .UseBleed = False: .UseFloatNumbers = True: .UseJPEGCompression = False: .UseSeparationProfile = False
   .Bleed = 0: .BoundingBox = 0: .FountainSteps = 256: .Header = 0: .MaxSpread = 0: .PSLevel = 2
   End With
   End Function
hatrix вне форума   Ответить с цитированием
Старый 05.03.2013, 17:33   #2
Murik
Местный
 
Регистрация: 24.05.2009
Адрес: Черкесск
Сообщений: 3,692
Репутация: 153
По умолчанию

В Кореле до 5 включительно - делаем штрих-код (Edit - Insert Barcode), потом вырезаем (Ctr-X), потом Edit - PasteSpetial - Рисунок (метафайл) - вставляет штрихи в кривых, цифры текстом. До 14-15 корел работает.
Murik вне форума   Ответить с цитированием
Старый 07.03.2013, 19:48   #3
hatrix
Местный
 
Регистрация: 11.03.2011
Адрес: Russia
Сообщений: 777
Репутация: 44
По умолчанию

Еще один скрипт на основе метода от Murik. Добавлена оптимизация, можно выбирать кривить/не кривить шрифты в кодах.

Код:
Sub BarCodeCurves()
startoptimization
   Dim sr As New ShapeRange, sh As Shape, colorWHITE As New Color, colorBLACK As New Color
   Dim file$, toDEL As New ShapeRange, toSelect As New ShapeRange, bars&
   If ActiveDocument Is Nothing Then GoTo Finish
   If ActiveShape Is Nothing Then sr.AddRange ActivePage.FindShapes(, cdrOLEObjectShape) _
      Else sr.AddRange ActiveSelection.Shapes.FindShapes(, cdrOLEObjectShape)
   If sr.Count = 0 Then GoTo Finish
Select Case MsgBox("Convert fonts to curve?", vbYesNoCancel, "BARCODE curver")
          Case vbYes
              For Each sh In sr
               If InStr(sh.OLE.FullName, "Corel BARCODE X6") Then
                sh.CreateSelection: bars = bars + 1
                sh.Copy
                ActiveLayer.PasteSpecial "Metafile"
                ActiveShape.SetPosition sh.PositionX, sh.PositionY
                ActiveShape.OrderFrontOf sh
                Err.Clear
                toDEL.Add sh
                toSelect.Add ActiveShape
               End If
              Next
             toDEL.Delete
             toSelect.ConvertToCurves
          Case vbNo
              For Each sh In sr
               If InStr(sh.OLE.FullName, "Corel BARCODE X6") Then
                sh.CreateSelection: bars = bars + 1
                sh.Copy
                ActiveLayer.PasteSpecial "Metafile"
                ActiveShape.SetPosition sh.PositionX, sh.PositionY
                ActiveShape.OrderFrontOf sh
                Err.Clear
                toDEL.Add sh
                toSelect.Add ActiveShape
               End If
              Next
             toDEL.Delete
          Case vbCancel
             GoTo Finish
   End Select
   
   If toSelect.Count = 0 Then
      ActiveDocument.ClearSelection
      MsgBox IIf(bars = 0, "No BARCODES found", "Error on internal EPS export/import of BARCODE")
      stoptoptimization
      Exit Sub
   End If
   toSelect.CreateSelection
   If MsgBox("Found: " + CStr(bars) + " barcodes. " + _
             IIf(bars = toSelect.Count, "EVERYTHING is curved", "Only " + CStr(toSelect.Count)) + " are curved" + vbNewLine + vbNewLine + _
             "Remove white background and combine individually?", vbYesNoCancel, "BARCODE curver") <> vbYes Then
                        colorBLACK.RGBAssign 0, 0, 0
                        For Each sh In toSelect
                         Set sr = sh.UngroupAllEx
                         Err.Clear
                           For bars = 1 To sr.Count
                             If sr(bars).Fill.UniformColor.IsSame(colorBLACK) Then sr(bars).Fill.UniformColor = CreateCMYKColor(0, 0, 0, 100)
                           Next
                         Set sh = sr.Group
                        Next
                        stoptoptimization
                        Exit Sub
                        End If

   colorWHITE.RGBAssign 255, 255, 255
   toDEL.RemoveAll
   For Each sh In toSelect
      Set sr = sh.UngroupAllEx
      For bars = 1 To sr.Count
         If sr(bars).Fill.UniformColor.IsSame(colorWHITE) Then _
            sr(bars).Delete: Exit For
      Next
      toDEL.Add sr.Combine
   Next
   toDEL.CreateSelection
   ActiveSelection.Fill.UniformColor = CreateCMYKColor(0, 0, 0, 100)
Finish:
   Err.Clear
   stoptoptimization
   End Sub

Sub startoptimization()
ActiveDocument.PreserveSelection = False
Optimization = True
EventsEnabled = False
End Sub

Sub stoptoptimization()
EventsEnabled = True
Optimization = False
ActiveDocument.PreserveSelection = True
ActiveDocument.EndCommandGroup
End Sub
hatrix вне форума   Ответить с цитированием
Старый 07.03.2013, 22:18   #4
XXL
Местный
 
Регистрация: 18.04.2009
Адрес: Мурманск
Сообщений: 566
Репутация: 19
По умолчанию

В кореле никогда не требовались скрипты для конвертации штрих кодов в кривые.
XXL вне форума   Ответить с цитированием
Старый 07.03.2013, 22:18   #5
Александр В.
Местный
 
Аватар для Александр В.
 
Регистрация: 25.06.2008
Адрес: Москва, Зеленоград
Сообщений: 3,141
Репутация: 291
По умолчанию

Простите, что-то я не догоняю зачем это нужно? Что потом с этим баркодом переведенным в кривые делать?
Александр В. вне форума   Ответить с цитированием
Старый 07.03.2013, 22:55   #6
XXL
Местный
 
Регистрация: 18.04.2009
Адрес: Мурманск
Сообщений: 566
Репутация: 19
По умолчанию

Например цвет другой задать
XXL вне форума   Ответить с цитированием
Старый 11.03.2013, 15:39   #7
hatrix
Местный
 
Регистрация: 11.03.2011
Адрес: Russia
Сообщений: 777
Репутация: 44
По умолчанию

Цитата:
Сообщение от Александр В. Посмотреть сообщение
зачем это нужно
Затем, что баркоды (штрихкоды) в кореле - это OLE-объект. Собственно вот основная причина из которой потом вытекает куча других проблем. Чтоб их не было - вот скрипт.
hatrix вне форума   Ответить с цитированием
Ответ


Быстрый переход

183 204 195 210 237 243 263 7 8 152 15 16 13 11 10 14 35 9 256 123 37 144 145 146 179 20 258 21 22 124 23 24 97 127 128 25 26 126 136 154 64 65 254 233 159 162 163 164 66 27 98 48 56 120 58 59 60 61 62 135 63 165 166 200 201 202 51 53 167 169 168 172 52 55 54 125 255 207 217 218 219 220 221 222 223 224


"Форум индустрии цифровой печати" 2008-2023

Все вопросы по сотрудничеству:

Электропочта: info@trade-print.ru

Москва, Печатников пер.

Текущее время: 11:07. Часовой пояс GMT +4.

Яндекс.Метрика