schön, der integrierte QR-Code-Generator. Doch lässt sich nicht in Kombination mit der Seriendruck-Funktion nutzen, oder?
Wobei ich als Ergebnis die QR-Code-Grafiken als einzelne Dateien (Bitmap oder PDF) bräuchte zur Weiternutzung in InDesign (möglicherweise ist dies mit den CC-Versionen der Adobe Suite machbar; doch wir nutzen noch CS6).
mtemp schrieb:...Wobei ich als Ergebnis die QR-Code-Grafiken als einzelne Dateien (Bitmap oder PDF) bräuchte...
Du könntest Zint benutzen. Damit kann man die QR-Codes als Bitmap (PNG) oder Vektor(EPS, SVG) erstellen. Das Tool kann man mit der eigenen Benutzeroberfläche oder auch über die Kommandozeile benutzen. Über die Kommandozeile ergeben sich vielfältige Automatisierungsmöglichkeiten. InDesign wird doch bestimmt EPS-Dateien importieren können. Falls Du den Grafiken nichts hinzufügen willst, kannst Du Dir damit den Umweg über CorelDraw sparen.
Einziges Problem, da ich gestern über 400 QR-Codes zur Einbindung in ein InDesign-Serienbrief-Dokument brauchte, musste ich die Ausführungszeit von PHP auf meinem loklane server von den wohl standardmäßigen 30s auf 1min verlängern... Erst danach hatte ich alle PNGs "im Kasten".
Das ist Pech! Ich habe Zint immer verwendet, weil es zuverlässig und schnell die Barcodes erzeugte. Ich habe es allerdings immer über die Kommandozeile verwendet (meistens mit VBA).
mtemp schrieb:...da ich gestern über 400 QR-Codes zur Einbindung in ein InDesign-Serienbrief-Dokument brauchte...
Ich hab das gerade mit einer Excel-Datei mit 400 Zeilen über die Zint-Kommandozeile ausprobiert:
Die 400 EPS-Dateien zu erstellen dauerte 12 Sekunden. Wenn das bei Deiner PHP-Lösung viel länger dauerte solltest Du vielleicht doch noch einmal testen, ob die Kommandozeile auf Deinem Rechner läuft.
Bindest Du die 400 QR-Codes per Hand in jeden einzelnen Serienbrief ein?
Doch das sieht ja in der Tat verheißungsvoll aus – in Excel (wo ich die Serienbriefdaten ja bereits und umständlich, wenn auch nur via copy&paste, in mein PHP-Skriptchen übernehmen muss) via Zint zu EPSse.
In InDesign gibts ja die schöne Eigenschaft (und dies sogar in CS6), bei dessen Serienbrief-Funktion auch Bilder einbinden zu können. Mittels Pfadangabe in der Quelldatei und als Spaltenkopf zB "@bildoderaehnlich" – also mit dem at-Zeichen davor –, weiß InDesign, dass die Daten der Spalte Bildpfade enthalten. So lassen sich also auch Bilddaten individuell/automatisiert einbinden.
Konkrekt in meinen Fällen: Urkunden mit Portraitbild des jeweils Geehrten und in meinem jetzigen Fall mit dem Hinweis (als Text + QR-Code)zu seiner "Online-Urkunde" = der Webadresse (auch wenn zB im Kollegenkreise niemand QRs abscannt; obwohl es ja durchaus eine interessante Sache darstellt; vorausgesetzt, der Betrachter weiß, was sich hinter dem QR-Code verbirgt, also welche Seite/Daten darin codiert ist/sind)
... kurze Bitte: könntest Du mir Deinen gesamten VBA-Code zuschicken/abbilden?
Hab VBA viel zu selten benutzt, so dass ich wohl wieder von vorne anfangen müsste ...
Sub QREps1()
ZintPfad = ActiveWorkbook.Path & "\"
EPSPfad = "C:\temp\corelforum\QREPS\"
ECCLevel = 2 '1 = Level L, 2 = Level M, 3 = Level Q, 4 = Level H
Skalierung = "4.5"
Z = 1
Start = Now
Do
a = Cells(Z, 1).Value
If a = "" Then
Exit Do
Else
Befehl = ZintPfad & "zint -o " & Chr(34) & EPSPfad _
& "temp" & Z & ".eps" & Chr(34) & " --binary -b 58 --secure=" & ECCLevel _
& " --scale=" & Skalierung _
& " -d " & Chr(34) & a & Chr(34)
Call warte(Befehl)
Debug.Print a
End If
Z = Z + 1
If Z > 1000 Then Exit Do
Loop
Ende = Now
Debug.Print Format(Ende - Start, "hh:mm:ss")
End Sub
Sub warte(ByVal strPath As String)
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run strPath, 7, 1
Set WshShell = Nothing
End Sub
Die Variable ZintPfad musst Du auf den Pfad zur zint.exe (Das Kommandozeilentool) setzen. Die Variable EPSPfad ist der Ausgabepfad. Die Do-Schleife bricht ab, wenn sie auf eine leere Zelle trifft, spätestens aber ab Zeile 1000. Die Werte werden aus der ersten Spalte gelesen. Wenn eine andere Spalte ausgelesen werden soll, muss die Zahl bei a = Cells(Z, 1).Value von 1 auf die Zahl der auzulesenden Spalte geändert werden.
Wenn Du den Code noch anpassen musst, melde Dich falls dabei Schwierigkeiten auftreten.
Mein jetziges "Projekt"(chen) gerade endlich fertig gestellt, noch mit meiner umständlichen Methode, da ja in PHP ausgelagert statt direkt aus Excel heraus. Wird mir sicherlich bei der nächsten Urkundenerstellung von Nutzen sein.