Странная проблема рендеринга изображений при чтении PDF в Microsoft Edge - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь прочитать PDF с некоторыми изображениями в нем.Вот как это выглядит в Google Chrome:

enter image description here

Чтение того же PDF в ребре выглядит так:

enter image description here

Кто-нибудь знает, как это исправить?

Я бы просто использовал Chrome для чтения PDF, но я использую расширенные функции аннотации PDF в Edge и хотел бы продолжитьпо возможности использовать Edge.

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Короче говоря

Этот артефакт вызван странностью самого PDF-файла!Он рисует довольно широкую линию с нулевой длиной в верхнем левом углу изображения.Это приводит к тому, что разные зрители создают разные выходные данные, Adobe Reader ничего не рисует, Chrome рисует линию, Edge рисует круг.

Кто-нибудь знает, как это исправить?

Удалите эту бессмысленную операцию из PDF.

Подробнее

Это отрывок из операций в потоке контента на данной странице, комментарии (строки '%'), добавленные мной:

% Fill the bottom section of the page with white color
1 1 1 rg
36.85 54.425 466.242 204.831 re
f
% Show the bitmap image
q
226.885 0 0 189.694 155.905 69.562 cm
/Im4 Do
Q
% Start a marked content block
/Figure <</MCID 0>>BDC
q
1 i 
% Create a clip path along the image borders
% (to make following operations only operate on the image)
155.905 259.257 m
382.79 259.257 l
382.79 69.562 l
155.905 69.562 l
W n
q
% Set a number of properties to eventually draw a line with 0 length
% and ca. 200 width over the top left corner of the image
1.0936 0 0 -.91438 0 0 cm
0 0 0 RG
0 J 0 j 207.458 w 10 M []0 d
q 1 0 0 1 142.556 -283.534 cm 0 0 m
0 0 l
s
Q
EMC
Q
Q 

Таким образом, действительно существуют инструкции в формате PDF для рисования чего-либо в левом верхнем углу изображения.К сожалению, тем не менее, этим инструкциям трудно следовать:

Чтобы правильно нарисовать линию заданной ширины, нужно знать направление этой линии.Но длина линии здесь равна 0, так что нет никакого распознаваемого направления линии и нет ортогонального направления, в котором применяется ширина.

Очевидный выбор - вообще ничего не рисовать.Но длина 0 также может интерпретироваться как означающая «как можно короче, пока она еще видима», в частности, поскольку в спецификации PDF существует явное требование для линии 0 ширина .

В результате разные зрители получают разные результаты,

  • Adobe Reader ничего не рисует,

    Adobe Reader screen shot

  • Chrome считает линию длины 0 горизонтальной (произвольный выбор) и рисует очень короткую, очень широкую горизонтальную линию,

    Chrome screen shot

  • Край не выбирает произвольное направление, а вместо этого применяет ширину во всех направлениях, в результате чего получается круг.

    Edge screen shot

Как только инструкции, рисующие эту линию, будут удалены, все зрители показывают идентичное изображение, как и предполагалось.

0 голосов
/ 09 октября 2018

Я снова пытаюсь выполнить тест с вашим файлом PDF.

Я могу создать проблему с Edge.

enter image description here

Я думаю, что есть проблема с форматом изображения.

В целях тестирования я загружаю файл и открываю в MS Word, затем снова сохраняю его как PDF.

Затем я открываюэто в MS Edge, и он показывает изображение правильно.

Так что в настоящее время вы можете попробовать использовать эту работу, чтобы избежать проблемы.

Я постараюсь проинформировать команду разработчиков об этой проблеме,Чтобы получить от них ответ, может потребоваться некоторое время.

до тех пор, пока вы не сможете попробовать обойти шаги.

enter image description here

...