Редактировать содержимое 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