Редактировать содержимое XPS

У меня есть приложение, которое должно отправить форматированный документ на принтер с некоторыми штрих-кодами.

Я сделал другие приложения, которые работают с принтерами и печатают напрямую через сервер печати, отправляя файл xps, поэтому я подумал, что я попытаюсь посмотреть, смогу ли я создать файл.xps, изменить текст и покончить с этим, однако каждый Статья, которую я могу найти в сети, касается создания файлов xps, а не их изменения. Я чувствую, что это возможно, и было бы неплохо не прибегать к установке Office на сервер и распечатывать там. Тогда я мог бы также использовать Open XML и файл.docx.

Изображение штрих-кодаЭто очень просто. Допустим, я хочу изменить текст INCNUMMER в файле.xps на "testing123". Как бы я пошел об этом?

Я пробовал весь распаковать, открыть XML, найти текст, редактировать, распаковать, но я боюсь, что слишком много о формате.xps, я не понимаю, чтобы это работало.

С наилучшими пожеланиями, Каспар.

1 ответ

Решение

Как вы уже знаете, XPS-файл - это просто ZIP-архив, содержащий несколько файлов и папок с определенными именами и определенной структурой.

На корневом уровне есть Documents папка, которая обычно будет содержать только одну папку с именем документа 1, Внутри это Pages папка, содержащая один или несколько .fpage файлы: они определяют содержание каждой страницы в документе.

Documents
    1
        Pages
            1.fpage
            2.fpage
            etc

Если вы откроете эти .fpage Файлы в текстовом редакторе вы увидите, что они просто XML-файлы. Каждая страница обычно представлена <Canvas> элемент, который содержит несколько <Path> а также <Glyphs> элементы (текст представлен последним). Тем не менее, даже если <Glyphs> элементы имеют UnicodeString Атрибут значение этого атрибута нельзя изменить изолированно.

каждый <Glyphs> элемент также имеет Indices приписывать. Если вы полностью удалите этот атрибут и измените UnicodeString атрибут в то же время, это почти работает. Однако вы, вероятно, обнаружите, что при просмотре файла в приложении XPS Viewer определенные символы в тексте заменяются символами вопросительного знака.

Глифы шрифтов встраиваются в файл XPS (odttf файлы в Resources папку), а программное обеспечение, сгенерировавшее файл XPS, будет содержать только те глифы, которые используются в исходном документе. Например, это означает, что (для данного шрифта), если вы не использовали букву "А" в исходном документе, то глиф для этой буквы не будет записан в ресурсы файла XPS. Следовательно, если вы измените UnicodeString атрибут включает букву "А", тогда этот символ будет отображаться в виде знака вопроса в средстве просмотра, поскольку у него нет ресурса глифа, который бы указывал, как этот символ должен быть нарисован.

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

  • Откройте соответствующий .fpage XML-файл
  • Искать все UnicodeString атрибуты <Glyphs> элементы, чтобы найти текст, который вы хотите
  • Замените этот текст чем-то другим
  • Удалить Indices атрибут из измененного <Glyphs> элементы
  • Сохраните обновленный XML обратно в файл
  • Повторно заархивируйте и измените расширение с ZIP на XPS
Другие вопросы по тегам