2013-03-12 3 views
1

Я разработал веб-сервис для печати (C# MVC 4), который создает документы XPS, а затем печатает их с помощью различных серверов печати (MS) в различные очереди печати. Все это отлично работает с очередями печати Sharp, но при печати в Lexmark все данные шрифтов теряются, хотя размеры шрифтов остаются правильными. Документы XPS все правильно отображаются при просмотре в средстве просмотра XPS и при печати с помощью программы просмотра в Lexmarks через сервер печати работают правильно. Шрифты находятся на серверах печати, очереди Sharp находятся на тех же серверах печати, что и Lexmarks, и все шрифты указаны в документах XPS. Изменение параметров принтера Lexmark, драйверов и т. Д., Похоже, не имеет значения.XPS-печать: потерянные шрифты на принтере Lexmark

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

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

+0

Я искал какое-то решение для этого, это не только драйверы Lexmark, я видел то же самое с другими принтерами. Это похоже на печать с помощью службы Windows. Кажется, что это исправлено в драйверах v4 (основано на XPS), поэтому я предполагаю, что MS ничего не собирается делать, но просто подождите, пока производители принтеров перейдут на свои драйверы до последних спецификаций. –

ответ

1

Ну, там не так много, чтобы идти дальше, но я подозреваю, что три вещи:

  1. В XPS документ, который вы производите референции шрифты без вложения их
  2. Драйверы печати Lexmark на сервере являются XPS драйвера
  3. Шрифты не установлены на самих принтерах.

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

Причина, по которой это происходит, заключается в том, что шрифты не используются до тех пор, пока XPS не растрируется - это преобразуется в необработанные данные изображения. Я подозреваю, что в случае с Lexmark это происходит на устройстве, а в случае Sharp - на сервере печати. Это подтверждается тем фактом, что печать документа XPS из средства просмотра XPS работает правильно, поскольку это приводит к возникновению растеризации на компьютере, на котором работает программа просмотра.

Использование драйвера не-XPS на сервере печати приведет к небольшому результату. Сервер печати будет эффективно преобразовывать XPS в GDI, который вместо XPS-драйвера затем преобразует в другой PDL, например PostScript или PCL. Я подозреваю, что это относится к драйверам Sharp, хотя также может быть, что драйвер Sharp является XPS-драйвером, который выполняет растеризацию на хосте.

+0

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

+0

Согласно спецификации XPS-документ должен содержать все ссылочные ресурсы, включая шрифты, если это не так, то это не действительный документ XPS. –

1

ОК .. после большого количества испытаний было отмечено (и может быть полезно другим).

В ответ на вышеуказанные вопросы .. 1) встроенные шрифты подтвердили и использовали MS официальные тестовые файлы XPS. Это не помогло. 2) Драйвер Lexmark использовался winprint> RAW. изменение этого не помогло. 2) Шрифты установлены на принтере

Тесты 1) новый сервер печати, печатающий непосредственно на острый принтер. Проблема в том, что шрифты были потеряны. Решением к этому было изменение настроек спулера для печати только после того, как были распечатаны все документы. Проблема исчезла, однако я не хотел полагаться на людей, настраивающих принтеры, которые требуют специальных настроек, поэтому я отклонил это. Это клиентская сеть, и я не контролирую ее.

2) напечатано на существующий веб-сервис (с использованием пользовательской олицетворения) на сервере печати в очереди Sharp, чтобы подтвердить, что это все еще работает. Подтверждено.

3) Отпечатано на существующей веб-службе (с использованием олицетворения пользователя) на сервере печати в очереди Lexmark, и это все еще не удалось, а шрифты были потеряны.

4) Отпечатано из двух отдельных ящиков IIS на сервер печати в очереди Lexmark (с использованием учетной записи идентификации пула доменных имен), и теперь это работает корректно (в C# new printserver (\ printererservername)) в том, что Lexmarks напечатаны правильно ,

5) Отпечатано на существующей веб-службе (с использованием учетной записи идентификации пула доменных имен) на сервере печати в очереди Lexmark, и это все еще не удалось (в C# new localprintserver()).

6) Отпечатано в существующий веб-службы (с использованием учетной записи домена приложение удостоверения пула) на сервере печати в очереди Lexmark, и это до сих пор не удалось (в C# новый Printserver (\ printerservername))

Кончилось все это заключается в том, что если вы печатаете локально, шрифты теряются по какой-то нечетной причине, но если вы печатаете удаленно, шрифты сохраняются. Все серверы имеют одинаковую базовую настройку (нет xps viewer и т. Д., А учетная запись пула приложений домена - учетная запись службы), и единственная разница, которую я вижу, - это новый локальный сервер для новых вызовов printserver (\ printservername). Тот же код был перенесен с машины на машину с файлом веб-конфигурации, содержащим локальную или удаленную настройку. Все машины имеют IIS 7.5 .net 4.5 MVC 4 и находятся в доверенной зоне.

Таким образом, мое решение будет разделено, а печать без Sharp будет выполняться на удаленном сервере создания документов для сервера печати, и на сервере печати будет сделана печать Sharp (это необходимо для печати Equitrac «Follow me»), потому что я не хотел использовать делегацию герберы. Как заявлено, это не мой домен, и я мог видеть, как все место размалывается, чтобы прекратить печатную работу над потерянным spn или отказом от kerberos.

В любом случае, надеюсь, что это кому-то поможет.

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