Tipps & Tricks zu digitaler Medienproduktion, Netzwerken und Servertechnologien
   


back to homepage

Thematisch:

Chronologisch:

Alles als PDF

Durchsuchen:

      

kaiser-edv.de » Tipps & Tricks » MacOS » indesign-cs3-postscript-title.html

Tipp: [MacOS X] InDesign CS3 und Druckjobs mit Umlauten     (09. Mai 2007 — tk)

Das gerade erschienene InDesign 5.0.0 (CS3) zeigt sich recht kreativ im PostScript-Workflow bei der
Verwendung von Umlauten oder sonstigen Sonderzeichen im Dateinamen. Anstatt daß der Name sauber innerhalb
der PostScript-Datei im sogenannten »%%Title«-Kommentar kodiert würde, erzeugt InDesign 5.0.0 einen
seltsamen hexadezimal kodierten UTF-8-String. Aus dem Dateinamen »IDCS3-Täst.indd« bspw. erzeugt InDesign
den DSC-Kommentar »%%Title: FEFF00490044004300530033002D00540061030800730074002E0069006E0064006400005F7800240018007900620000000043382D65000000000000000000000000«

Heißt die Datei dagegen »IDCS3-Test.indd« so lautet auch der Kommentar korrekterweise »%%Title: IDCS3-Test.indd«
und wird auch von Weiterverarbeitungs-Mechanismen (bspw. Druckserver, Distiller) korrekt verarbeitet.

Adobe scheint das Phänomen aktuell noch nicht mal besonders aufregend zu finden sondern verweist darauf,
daß das Ganze genau so geplant sei — vielleicht weil sich das ein amerikanischer Entwickler, der sich mit
Umlauten, Accents, etc. allenfalls im Fremdsprachenunterricht herumschlagen mußte, gar nicht vorstellen kann,
daß dem Rest der Welt mit »US-ASCII« alleine nicht wirklich geholfen ist.

Solange Adobe keinen Fix bereitstellt, hilft ein wenig Perl-Code, der die garstige Zeile innerhalb des
PostScript-Datenstroms wieder bändigt und in nicht-kodierte UTF-8-Zeichen umwandelt. Im Folgenden ein kleiner
CUPS-Filter, der das Ganze transparent innerhalb des MacOS X’ Drucksystems erledigen kann nebst einer
Regel-Datei, die dafür sorgt, daß Dateien vom Typ »application/postscript« (simple PostScript-Dateien)
entsprechend gefiltert bzw. repariert werden. Ein praktischer Installer erledigt die Installation von beidem
im System (Uninstaller ist mit im Paket und wird auf den Schreibtisch gelegt). Der Code von beiden Dateischnipseln
sieht so aus:

CUPS-Regel-Datei (/etc/cups/fixidcs3jobtitle.convs):

application/postscript   application/vnd.cups-postscript                20     fixidcs3jobtitle

Der CUPS-Filter, der die Reparatur der %%Title-Zeile übernimmt (/usr/libexec/cups/filter/fixidcs3jobtitle):

#!/bin/bash
#
# Usage:     fixidcs3jobtitle job user title copies options [filename]
#
# Main use:  CUPS filter to fix InDesign 5.0.0 (ID CS3) job titles in 
#            PostScript print jobs containing special characters, eg. umlauts.
#            Tested with CUPS 1.1.23
#
#############################################################################
#
# author:    Thomas Kaiser <mailto:Thomas.Kaiser@phg-online.de>
# url:       http://kaiser-edv.de/en/CUPS/fixidcs3jobtitle-filter
# license:   http://www.opensource.org/licenses/bsd-license.php
# date:      1 May 2007 (v0.1.1)
# kudos to:  Axel Rose for the Perl code below (hacked together in his limited 
#            spare time)
#
#############################################################################
#
# Changes
#
# 0.1.1: - fixed version which transparently handles the PS code passed through
#
# 0.1.0: - first official release (30 Apr 2007)
#
#############################################################################
#
# Non-Warranty: 
# This script comes with absolutely no warranty.
#
# Use at your own risk!
#
#############################################################################
 
case $# in
	5)
		# print job is on stdin
		echo "DEBUG: filter postscript stream originating from stdin" >&2
		cat | perl -CO -ne 'if(/^%%Title: ]+)>?$/){$m=$1;if($m!~/^FEFF/){print}else{while($m=~/(.{4})/g){$s=$1;next if$s eq"FEFF";last if$s eq"0000";$t.=pack("U*",hex($s));}print"%%Title: $t\n";}}else{print}' | /usr/libexec/cups/filter/pstops "$1" "$2" "$3" "$4" "$5"
		;;
	6)
		# print job is $6
		echo "DEBUG: filter postscript stream originating from \"$6\"" >&2
		cat "$6" | perl -CO -ne 'if(/^%%Title: ]+)>?$/){$m=$1;if($m!~/^FEFF/){print}else{while($m=~/(.{4})/g){$s=$1;next if$s eq"FEFF";last if$s eq"0000";$t.=pack("U*",hex($s));}print"%%Title: $t\n";}}else{print}' | /usr/libexec/cups/filter/pstops "$1" "$2" "$3" "$4" "$5"
		;;
	*)
		echo "ERROR: $(basename "$0") job user title copies options [filename]" >&2
		;;
esac


Copyright © Thomas Kaiser, 2007 (erstellt am Mittwoch, 09. Mai 2007)

Dieser Beitrag kann durch jedermann gemäß den Bestimmungen der Lizenz für die freie Nutzung unveränderter Inhalte genutzt werden. Die Lizenzbedingungen können unter http://www.uvm.nrw.de/opencontent abgerufen oder bei der Geschäftsstelle des Kompetenznetzwerkes Universitätsverbund MultiMedia NRW, Universitätsstraße 11, D-58097 Hagen, schriftlich angefordert werden.