2017-11-30 4 views
0

Wie kann ich Ghostscript Arial/Arial-Bold für Arial + 000040/Arial, Bold + 000041 ersetzen beim Lesen jhtest.pdf?Ghostscript Schriftart Substitution Rätsel

Ghostscript besteht darauf, Helvetica-Bold für beide Schriftarten zu ersetzen. Ändern der Schriftname in der pdf vim im Binär-Modus unter Verwendung hilft - jhtest-patched.pdf

Log für jhtest.pdf

GS_FONTPATH=C:\Windows\Fonts 
gs -dNOPAUSE -dBATCH -dCCFONTDEBUG -sDEVICE=nullpage jhtest.pdf 
GPL Ghostscript 9.18 (2015-10-05) 
Copyright (C) 2015 Artifex Software, Inc. All rights reserved. 
This software comes with NO WARRANTY: see the file PUBLIC for details. 
Processing pages 1 through 1. 
Page 1 
Scanning C:\windows\Fonts for fonts... 666 files, 473 scanned, 447 new fonts. 
Querying operating system for font files... 
Substituting font Helvetica-Bold for Arial+000040. 
Loading NimbusSanL-Bol font from %rom%Resource/Font/NimbusSanL-Bol... 8611036 7144230 2673392 1348904 3 done. 
Substituting font Helvetica-Bold for Arial,Bold+000041. 
Substituting font Times-Bold for TimesNewRoman,Bold+000013. 
Loading NimbusRomNo9L-Med font from %rom%Resource/Font/NimbusRomNo9L-Med... 8870100 7399404 3366000 1964135 3 done. 

Log für jhtest-patched.pdf - Arial und Arial-Bold ersetzt werden, wie erwartet.

GS_FONTPATH=C:\Windows\Fonts 
gs -dNOPAUSE -dBATCH -dCCFONTDEBUG -sDEVICE=nullpage jhtest-patched.pdf 
GPL Ghostscript 9.18 (2015-10-05) 
Copyright (C) 2015 Artifex Software, Inc. All rights reserved. 
This software comes with NO WARRANTY: see the file PUBLIC for details. 
Processing pages 1 through 1. 
Page 1 
Can't find (or can't open) font file %rom%Resource/Font/ArialMT. 
Can't find (or can't open) font file ArialMT. 
Can't find (or can't open) font file %rom%Resource/Font/ArialMT. 
Can't find (or can't open) font file ArialMT. 
Scanning C:\windows\Fonts for fonts... 666 files, 473 scanned, 447 new fonts. 
Can't find (or can't open) font file %rom%Resource/Font/ArialMT. 
Can't find (or can't open) font file ArialMT. 
Loading ArialMT font from C:\windows\Fonts/arial.ttf... 8312100 3435413 4127492 2703302 3 done. 
Can't find (or can't open) font file %rom%Resource/Font/Arial-BoldMT. 
Can't find (or can't open) font file Arial-BoldMT. 
Loading Arial-BoldMT font from C:\windows\Fonts/arialbd.ttf... 8369364 3483445 6172560 4696464 3 done. 
Querying operating system for font files... 
Substituting font Times-Bold for TimesNewRoman,Bold+000013. 
Loading NimbusRomNo9L-Med font from %rom%Resource/Font/NimbusRomNo9L-Med... 8413932 3678215 7135440 5602384 3 done. 
+0

Meine Versuche, die erforderlichen Ersetzungen in Fontmap.GS wie von KenS vorgeschlagen zu definieren, sind fehlgeschlagen, weil der Parameter -sFONTMAP = Fontmap.GS von der Datei Resource/Init überschrieben wird. Ghostscript-Parameter erfordern einen vollständigen Pfadnamen, der mit einem Schrägstrich oder einem Laufwerksbuchstaben gefolgt von einem Doppelpunkt beginnt. Rätsel gelöst. – user1016438

Antwort

1

Das sieht aus wie ein Versuch der Erstellung von Software einer Teilmenge der Schrift enthält (Subset-Schriften werden in der Regel mit einem 6 Buchstaben ‚Tag‘ ein Pluszeichen und dann dem ursprünglichen Schriftnamen genannt). Dies ist jedoch (offensichtlich) keine Schriftart, die diesem Schema entspricht.

Die Schriften sind nicht eingebettet, was ehrlich gesagt eine schlechte Idee ist, und die Namen sind nicht standardisiert. Dies bedeutet, dass der PDF-Consumer eine Ersatzschriftart verwenden muss. Die Standard-Ersatzschriftart für Ghostscript ist Helvetica, weshalb Sie das bekommen.

Wenn Sie die Schriftartnamen so ändern, dass sie dem 'echten' Schriftnamen entsprechen, können Sie , Ghostscript (und andere PDF-Consumer) Arial als Ersatz finden.

Um Ghostscript dazu zu bringen, die "entstellten" Namen in Ihrer Datei zu finden, müssten Sie einen Ersatz für genau diese Fontnamen definieren.

Da Sie Windows verwenden, verwendet Ihr Build ein ROM-Dateisystem. Um die Sache jedoch zu komplizieren, verwenden Sie anscheinend eine Linux-Version von Ghostscript (gs statt gswin32 oder gswin64).

Das macht mich unsicher, was genau Sie tun. Wenn ich jedoch die Ghostscript-Quelle erhalte, modifiziere die Datei /ghostpdl/Resource/Init/fontmap.GS:

/Arial + 000040/ArialMT;

und dann Ghost auszuführen:

gswin32c -I/ghostpdl/Ressource/Init jhtest.pdf

das Ergebnis ist, dass für Arial Arial + 000040 verwendet wird. Sie müssen dies an Ihre Umgebung anpassen, und Sie müssen die Ressourcendateien suchen, die für die Version von Ghostscript geeignet sind, die Sie verwenden (weil sie versioniert sind).

Sie können dann so viele Ersatzzeichen hinzufügen, wie Sie möchten.

Oder Sie können "Visual Software" erhalten, um sinnvollere PDF-Dateien zu erzeugen, in die die Schrift eingebettet ist. Oder falsch, dass zumindest die Schriftnamen nicht beschädigt werden.