Проблемы отображения вывода devEMF в MS Word 2010 после обновления Microsoft - PullRequest
1 голос
/ 17 июня 2019

После 2-4 обновлений Microsoft 12 июня отображение вывода devEMF (устройства печати R для файлов EMF / EMF +) повреждено в MS Word 2010.

Проблема возникает на машинах с наибольшимпоследние обновления Microsoft установлены и не там, где KB890830 , KB4503292 , KB4503286 и KB4461619 не установлены.Я пробовал на Windows 10 и Windows 7. Все рассматриваемые обновления я бы рассматривал как обновления безопасности, поэтому я предполагаю, что файлы devEMF как-то выглядят подозрительно для MS Word после обновления, но не раньше.ЭДС, созданная с помощью другой Программы, отображается правильно.Я пробовал с EMF и EMF +, оба они отображались поврежденными.

Следующий R-код создает файл, который корректно отображается в libreOffice, но поврежден в MS Word 2010 с последними обновлениями MS

require(devEMF)
emf("test.emf")
  plot(x=c(0,2),y=c(0,2))
  text(x=1,y=1,"This is a test figure")
dev.off()

Некоторые (например, это тестовое изображение) просто не отображаются вообще (я просто получаю очень мелкую рамку с размером изображения), в других отображаются только несколько элементов (/ слоев?), Часто с красным крестиком инекоторая мета-информация о файле (как на следующем снимке экрана).

this is a typical corrupted display of the images. Axes are not labeled or not displayed at all, metainformation is readable at top left Мой вопрос ... (кроме того, мне бы очень хотелось, чтобы эти эдс отображались правильно в моемсотни страниц и рисунков (документ длинный): неужели Word сейчас слишком обеспокоен или есть (надеюсь, небольшая) поправка, необходимая для того, чтобы пакет devEMF сделал его более безопасным?

Ответы [ 2 ]

1 голос
/ 06 июля 2019

Как я уже упоминал на немецком answers.microsoft.com: кажется, что KB4503292 отключил записи EMF типа EMR_EXTCREATEFONTINDIRECTW, которые содержат только структуру LogFont, но не LogFontExDv, даже если это все еще задокументировано как поддерживаемое:

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-emf/7e266b6d-32e5-4201-b687-8ec40c24cd73

elw (переменная): объект LogFontExDv (раздел 2.2.15), который определяет логический шрифт.Вместо этого МОЖЕТ присутствовать объект LogFont (раздел 2.2.13).Процесс определения типа объекта в этом поле описан ниже.

До сих пор единственное место, где я нашел это объяснение, было

https://social.msdn.microsoft.com/Forums/en-US/a0af7c55-7f13-4a6a-ac41-3c7a2a09d8f5/emf-graphics-specification-amp-security-patch?forum=os_specifications

1 голос
/ 20 июня 2019

В то же время у меня был контакт с разработчиком devEMF, и решение (на данный момент) состоит в том, чтобы создать «полный» файл emfPlus с

emf( ... , emfPlus=TRUE, emfPlusFont=TRUE, emfPlusRaster =TRUE)

Файлы, созданные с этими тегами, отображаются правильно.

EDIT: Microsoft объявила о выпуске патча для виновного патча безопасности: https://social.msdn.microsoft.com/Forums/en-US/a0af7c55-7f13-4a6a-ac41-3c7a2a09d8f5/emf-graphics-specification-amp-security-patch

...