2016-04-08 2 views
0

Итак, у меня есть PDF, который был создан «на лету», открыв шаблон, изменив значения для определенных полей и затем сохранил.IE10/Edge PDF не отображает правильные значения

работы:

  • Если открыть файл в Chrome, у меня есть правильные значения.
  • Если я сохраню файл на диск и откройте его с помощью Adobe Reader DC (или что-то еще, что называется), я получаю правильные значения.

не работает:

  • Когда я открываю документ в IE 10, он открывается в Edge, и показывает значения «по умолчанию» для полей.
  • Когда я сохраняю файл на диск и открываю его в IE, он показывает значения по умолчанию.
  • Когда я открываю файл, используя «PDF reader - Document Viewer and Manager», он показывает значения «по умолчанию».

Я использую Windows 10, приложение, над которым я работаю, выполняется в ASP.Net. Он работает так же, как я возвращаю FileStreamResult, FilePathResult или File.

И теперь я уверен, что проблема заключается в продуктах Microsoft, а не в моем коде.

Любая идея, почему продукты Microsoft не могут правильно открыть мои PDF-файлы? Их нужно сгладить каким-то определенным образом или что-то еще?

Edit (больше информации по запросу в комментариях):

  • Документы создаются с использованием PDFsharp.
  • У них есть поля, которые динамически заменяются значениями (т. Е. [MyFieldA] заменяется на «ActualValueA»).
  • После поля слияний заменяются фактическими значениями, файл записывается с помощью File.WriteAllText(fileName,fileText); где fileText получают через File.ReadAllText(fileTemplateName);

Изображения сравнения полей, шаткие: Comparison

+1

Вы должны включить более подробную информацию о том, как вы создаете свои документы и как вы заполняете данные, которые, как представляется, отсутствуют в IE. –

+0

@WiktorZychla Я добавил еще немного информации в нижней части сообщения. Я впервые зарождаюсь в процессе создания документа и буду обновлять информацию, когда я ее нахожу. Одна из теорий, которая была высказана коллегой, заключалась в том, что шаблоны документов создаются в Acrobat 5, с которыми IE10/Edge не справляется достаточно, потому что у другого сотрудника возникли проблемы с шаблонами, которые были созданы в Acrobat 6 (которые совместимы с IE10/Край). – Bardicer

+0

Просьба поделиться образцом PDF, чтобы проиллюстрировать проблему для анализа. – mkl

ответ

0

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

Один кусок головоломки, который, как я считаю, был запоминающим элементом, используемым для создания PDF-файла. Он был объявлен во внутренней области, используемой в вызове PdfReader.Open в назначении var, который был объявлен во внешней области, и затем область завершилась, в то время как var все еще использовался. Я переместил объявление memystream во внешнюю область, где объявление var было таким, чтобы они находились в одной области. Кроме того, memystream не закрывался с вызовом memoryStream.Close() или в блоке using (var memoryStream = new MemoryStream()) { }. Поэтому я добавил звонок memoryStream.Close().

Другая часть состоит в том, что поля формы шаблона PDF имеют некоторые значения отображения по умолчанию. Похоже, что материал Microsoft (Edge, PDF Viewer) может оказаться не в состоянии получить вставленные значения и вместо этого отображать значения отображаемых по умолчанию полей и их отображение. После удаления всех отображаемых значений по умолчанию, Edge начал открывать PDF и отображать значения правильно.

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

+1

Что касается первой возможной причины: поскольку в вашем вопросе вы не указали полезный фрагмент кода, никто не мог бы дать намек в этом направлении, не догадываясь. Что касается второй возможной причины: поля формы PDF могут предоставлять поток внешнего вида (относительно содержимого поля в макете) в дополнение к значению простого поля. Затем зритель может отобразить этот поток внешнего вида или создать его с нуля, используя значение простого поля. Вероятно, такие потоки внешнего вида являются вашими * значениями отображения по умолчанию *. Остерегайтесь, есть превьюмеры, которые не могут создать его с нуля. – mkl

+0

Это очень вероятно. Я наткнулся на эту ошибку вслепую, не работая в этой области ранее. Я просто являюсь «бульдогом ошибок» группы, который не может допустить, пока это не будет разрешено. – Bardicer

Смежные вопросы