Diese Frage enthält keinen direkten Bezug zu TeX; ich bin jedoch beim Arbeiten mit auf das Problem gestoßen pdflatex
, insbesondere beim Einfügen eps
der Ausgabe in eine pdf
Datei. Außerdem erwarte ich von diesem SE die meiste Expertise in Bezug auf die eps
und pdf
Dateiformate. Ich hoffe also, dass diese Frage themenbezogen ist. Ich habe ein paar andere Fragen zur Konvertierung der MATLAB-Ausgabe recherchiert; keine davon schien sich jedoch mit dem spezifischen Problem zu befassen, mit dem ich konfrontiert bin, oder der Detaillierungsgrad der Frage war äußerst begrenzt.
Mein Problem ist: Einige Grafikelemente werden im Acrobat Reader nicht angezeigt. Text wird einwandfrei angezeigt, und ob Elemente angezeigt werden oder nicht, hängt von der Exportroutine und ihrer Größe ab. Es scheint kein Beschneidungsproblem zu sein. In anderen Viewern sehe ich dieses Problem nicht. Ich werde also die Lösung von ausprobieren.Bestimmte EPS-Dateien lassen sich mit epstopdf nicht konvertieren, Aber ...
... meine Frage ist, warum passiert das trotzdem? Ist das ein Fehler im Acrobat Reader? In epstopdf
? In MATLAB? Oder verwendet diese Toolchain eine Funktion, die ich besser vermeiden sollte, weil sie bekanntermaßen Probleme verursacht?
Wie gesagt, ich habe das Problem auf ein Problem reduziert, das unabhängig von ist pdflatex
.
So erstelle ich die Dateien in MATLAB. Ich hoffe, dass der Code für jeden verständlich ist.
for dim = 32 : 33
im = rand(dim);
suf = sprintf('_%d.eps', dim);
close all;imagesc(im);axis off;text(0, 0, 'Text');
saveas(gcf, ['saveas' suf]);
system(['epstopdf saveas' suf]);
close all;imagesc(im);axis off;text(0, 0, 'Text');
print(gcf, ['print-d' suf], '-deps');
system(['epstopdf print-d' suf]);
close all;imagesc(im);axis off;text(0, 0, 'Text');
print(gcf, ['print' suf]);
system(['epstopdf print' suf]);
end
Die Dateien
saveas_32.pdf
und print-d_32.pdf
sind die Dateien, die falsch angezeigt werden. So sieht das aus:
Meine Beobachtungen
- Alle EPS-Dateien werden in GSview gut angezeigt.
- Alle PDF-Dateien werden in Google Chrome gut angezeigt.
saveas
undprint-d
die Dateien sehen überall gleich aus; das ist nicht überraschend. Es ist eher überraschend, dassprint
die Dateien einen hässlichen Rand haben, den ich manuell zuschneiden müsste; das möchte ich nicht tun.- Alle anderen (Nicht-
print
)PDF-Dateien sehen hinsichtlich der Komposition ziemlich perfekt aus. - Alle
33
PDF-Dateien werden im Acrobat Reader einwandfrei angezeigt. - Die
print_32
PDF-Datei sieht im Acrobat Reader gut aus (aber dieser hässliche Rand ...). - In allen anderen (nicht-
print
)32
PDF-Dateien fehlt das Bild. Der Text steht an der erwarteten Position. - In
32
EPS-Dateien werden die Bilddaten als „Muster“ gespeichert. - In
33
EPS-Dateien werden die Bilddaten als java.awt.image.BufferedImage gespeichert.
Versionsinformation
GSView 5.0
GPL Ghostscript 9.20 (2016-09-26)
MATLAB Version: 9.1.0.441655 (R2016b)
Operating System: Microsoft Windows 10 Pro Version 10.0 (Build 14393)
Java Version: Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot(TM)
64-Bit Server VM mixed mode
MATLAB's Ghostscript:
It seems that MATLAB does not ship with Ghostscript any longer.
From pdf files saved with MATLAB, I find this:
Apache FOP Version 2.2.0-SNAPSHOT: PDFDocumentGraphics2D
I cannot see if this is used to generate eps output, too.
C:\>which epstopdf
/Program Files/MiKTeX 2.9/miktex/bin/x64/epstopdf
C:\>epstopdf --version
MiKTeX EPS-to-PDF Converter 2.9.6200 (MiKTeX 2.9.6210 64-bit)
From EPS files, which are converted using this tool:
MiKTeX GPL Ghostscript 9.19
Adobe Acrobat Reader DC 2015.023.20056
Chrome Version 55.0.2883.87 m (64-bit)
Antwort1
Die Antwort ist einfach, und @samcarters Kommentar hat mich darauf gebracht. Es waren die Anzeigeeinstellungen in meiner Installation von Adobe Reader. Ich hatte „Dokumentfarben ersetzen“ aktiviert (ich erinnere mich, einmal mit dieser Einstellung herumgespielt zu haben), und obwohl dies in einem normalen Dokument nicht viel ändert (und sicherlich keine Bilder entfernt), werden meine Beispielbilder im Format 32 x 32 (oder kleiner) entfernt. Ich vermute, der Unterschied zwischen 32 x 32 und 33 x 33 besteht darin, dass letztere als Bitmaps codiert (und nicht ersetzt) werden, während erstere als Muster einer Form codiert (und ersetzt) werden. Dies muss eine Unterscheidung sein, die der ursprüngliche Encoder (in diesem Fall MATLAB) vornimmt, da Sie diesen Unterschied in den EPS-Dateien sehen.
Wenn ich diese Option deaktiviere, werden meine Bilder wiederhergestellt!