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

enter image description here

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

enter image description here

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

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

0
Akshay Gaur 8 Окт 2018 в 21:40

2 ответа

Лучший ответ

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

Этот артефакт вызван странностью самого 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 width .

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

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

    Снимок экрана Adobe Reader

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

    Снимок экрана Chrome

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

    Снимок экрана с края

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

1
mkl 9 Окт 2018 в 10:00

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

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

enter image description here

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

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

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

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

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

До тех пор вы можете попробовать использовать обходные шаги.

enter image description here

1
Deepak-MSFT 9 Окт 2018 в 05:35