2013-10-15 3 views
2

Я использую MigraDoc (v1.32.3885), чтобы отобразить некоторые отчеты для моего приложения .NET 4.0, которое частично VB.NET и C#. Основной пользовательский интерфейс - VB.NET, но это не имеет значения. Система имеет несколько разных отчетов.MigraDoc PDF Reports Renders по-разному на 2 машинах

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

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

Приложение запускается пользователями из общей папки UNC, где также копируются все библиотеки DLL. Все пользовательские ПК работают на одной платформе - Microsoft Windows NT 5.1.2600 с пакетом обновления 3 (32-разрядная версия) - XP с установленным .NET4. Я кусочки экрана, на котором я регистрирую все файлы пользователей приложений с помощью следующего, которые хранятся в виде списка, а затем скопированные в буфер обмена для моего анализа:

Dim assembly = Reflection.Assembly.GetExecutingAssembly() 
Dim loadedAssemblies = assembly.GetReferencedAssemblies() 

For Each an In loadedAssemblies 
     Dim a = Reflection.Assembly.Load(an.FullName) 
     Dim fvi = FileVersionInfo.GetVersionInfo(a.Location) 
     Dim lvi As New ListViewItem 
     Me.FileVersionsListView.Items.Add(lvi) 
     lvi.Text = fvi.FileName 
     lvi.SubItems.Add(fvi.FileVersion) 
Next 

Все вошедших файлы и версия, используя то же ссылку сборки - та же структура, те же версии файлов (из вышеперечисленного).

Пользователи используют Adobe Reader для просмотра сгенерированных отчетов в формате PDF, но даже когда я использую MigraDoc.Rendering.Forms.DocumentPreview - тот же плохо отчетный отчет отображается, как и в Adobe для этого одного пользователя.

MigraDoc и PDF Sharp, похоже, не имеют внешних зависимостей - только .NET Framework, поэтому я смущен этим.

+0

Вы можете попытаться использовать различие PDF в чем-то вроде Adobe Acrobat, чтобы узнать, какие различия между двумя PDF-файлами или использовать iText RUPS для изучения содержимого каждого из них. Возможно, это может дать некоторые подсказки. –

ответ

0

Эти же сборки, разные результаты? MigraDoc загружает изображения и шрифты. Вы получаете сообщение об ошибке «Изображение не найдено» на некоторых компьютерах, поэтому, возможно, это проблема с правами пользователя (я понимаю, что изображение загружается с помощью редактора Paint - возможно, это простая ошибка MigraDoc и загрузка изображений для пользователей с доступом для чтения и записи но не для пользователей с доступом для чтения? Просто дикая догадка ...).

Недостаточно прав, MigraDoc иногда использует метрики шрифта, который он должен использовать, но не может вставлять этот шрифт. Обычно это приводит к широким разрывам между словами или перекрывающимися словами.
Вы можете проверить список шрифтов в свойствах документа PDF-файла (в Adobe Reader).

Дикие угадывания только. Было бы легче проанализировать с правильным и неправильным файлом PDF, сгенерированным с теми же данными.

+0

Мне очень интересно знать, какие права должны быть предоставлены, чтобы эта ошибка не произошла. Я испытываю это прямо сейчас, и я должен был вернуться к Arial на данный момент: очень широкое пространство между персонажами, и даже начало и конец слов сталкиваются. Благодаря! –

+0

@Mathieu Leblanc: MigraDoc, вероятно, использует другой шрифт для метрик, чем он вставляет. Я не знаю, какие права необходимы. Дайте ему пробный пул с пулом приложений, который использует учетную запись System - если PDF выглядит нормально, вы узнаете, что это проблема с правами. Вы можете использовать частные шрифты. Или выясните, какие права необходимы (я боюсь, что не могу очень помочь). –