Corel Draw X6/X7 Seriendruckausgabe - Text automatisch anpassen
#16
Hallo Destiny,

destiny schrieb:Ich hoffe, ich nerve nicht ;-)

Nein, Jürgen hat das Forum ja eingerichtet, damit man sich über solche Fragen austauschen kann.
Wen das nervt, der soll es sich nicht anschauen.

destiny schrieb:...Gibt es auch eine Möglichkeit, den Text nicht allgemein zu verkleinern, sondern nur den Zeichenabstand entsprechend zu verringern?...

Die Möglichkeit gibt es, aber ob man es auch Praxis machen sollte?
Dabei kann nämlich so etwas herauskommen:

[Bild: seriendruck1oxxg2.jpg]

Und das, wo sich doch die Schriftkünstler so viel Mühe mit den Unterschneidungstabellen machen!

Das soll uns aber nicht hindern, damit herumzuspielen:

Code:
Sub KurztextVerschandeln()
    Dim Seite As Page
    Dim Kurztext As Shape
    Dim Breite As Double, BreiteA As Double
    Dim szp As Double
    Dim z As Double
    
    Breite = 80 '(%)
    
    ActiveDocument.Unit = cdrMillimeter
    ActiveDocument.ReferencePoint = cdrCenter
    Statusleiste 0, , True, "Text verschandeln"
    ActiveDocument.BeginCommandGroup "Kurztext verschandeln"
    Optimization = True
    szp = 100 / ActiveDocument.Pages.Count
    For Each Seite In ActiveDocument.Pages
        BreiteA = Seite.SizeWidth / 100 * Breite
        Set Kurztext = Seite.Shapes("Kurztext")
        If Not Kurztext Is Nothing Then
            For i = 0 To -100 Step -1
                Kurztext.Text.Story.RangeKerning = i
                If Kurztext.SizeWidth <= BreiteA Then Exit For
            Next i
        End If
        z = z + 1
        Statusleiste szp * z
        If Application.Status.Aborted Then
            Exit For
        End If
    Next
    Optimization = False
    ActiveDocument.EndCommandGroup
    Statusleiste szp * z, True
    ActiveWindow.Refresh
End Sub

Sub Statusleiste(Fortschritt As Long, Optional Ende As Boolean = False, Optional Start As Boolean = False, Optional Text As String = "")
    If Start Then
         Application.Status.BeginProgress CanAbort:=True
         Application.Status.SetProgressMessage Text
         Application.Status.UpdateProgress Fortschritt
    End If
    If Text <> "" Then
         Application.Status.SetProgressMessage Text
    End If
    Application.Status.UpdateProgress Fortschritt
    If Ende Then
         Application.Status.EndProgress
    End If
End Sub

Die Ausführung dauert lange, weil das Makro die Zielbreite nicht berechnet sondern so lange probiert, bis es passt.
Du kannst die Schrittweite der For-Schleife erhöhen, dann geht es schneller, ist aber nicht mehr so genau.

Um das Makro abbrechen zu können habe ich die Sub „Statusleiste“ eingebaut.
Man kann dadurch das Makro mit der ESC-Taste abbrechen.
Bis zur Version X6 erschien in der Statusleiste ein Fortschrittsbalken, mit X7 klappt das leider nicht mehr.

Viel Spaß beim Programmieren und beim Schnee schaufeln.

Gruß

Koter
Zitieren



Nachrichten in diesem Thema
Corel Draw X6/X7 Seriendruckausgabe - Text automatisch anpassen - von koter - 08.11.2016, 21:59

Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  PDF nach importieren, automatisch verändert sebastian84 4 605 06.04.2025, 21:20
Letzter Beitrag: mvm
  Corel Draw Essentials 2024 - Speichert keine Dateien Xaroh 1 286 02.04.2025, 18:37
Letzter Beitrag: Xaroh
  Verzerren im Corel Draw 2019 Werner7272 1 340 06.03.2025, 20:37
Letzter Beitrag: Piet
  Neuinstallation von Corel DRAW X5 nach einem Crash Bronimus 1 476 08.02.2025, 09:49
Letzter Beitrag: Bronimus
  MAUSZEIGER COREL 19 WIN 11 eon247 0 306 21.01.2025, 13:54
Letzter Beitrag: eon247
  Öffnen von Corel-Dateien leroc 0 407 14.01.2025, 01:22
Letzter Beitrag: leroc
  Corel Graphic Suite 2023 Dietmar 2 577 05.12.2024, 22:28
Letzter Beitrag: Dietmar
  Importierte AI-Datei in Corel Draw wird nicht richtig dargestellt Kurtus 5 1.140 20.11.2024, 11:01
Letzter Beitrag: Kurtus
  Corel Draw Objekt dupliziert mehrfach Berlinerillustrator 1 635 24.09.2024, 10:55
Letzter Beitrag: Berlinerillustrator
  Corel Draw standard 2021 Lorei 8 2.234 16.08.2024, 15:19
Letzter Beitrag: norre