Не видя оригинального PostScript-файла и PDF-файла, на самом деле невозможно сказать, в чем проблема, или если это можно исправить. Вам нужно публиковать файлы где-то публично.
Вы также не указали точно, что такое команда ps2pdf, существует несколько разных утилит, которые используют одно и то же имя. Если он использует Ghostscript, тогда он будет говорить об этом при запуске. Если это так, вам лучше запустить Ghostscript, чтобы избежать путаницы. Вы также должны указать версию Ghostscript, которую вы используете.
Теперь программы PostScript обычно предназначены для отправки на принтеры для печати. Как таковой, не имеет значения, какие коды символов используются для представления глифа, при условии, что кодировка шрифта и код символа объединяются для получения ожидаемой формы символа на выходе. Таким образом, нет абсолютно никакой гарантии, что «A» в вашем исходном приложении, которое печатается как «A» на бумаге, фактически представлено кодом символа 0x41, например. Нередко для приложения создавать шрифт подмножества, который содержит только глифы, которые были напечатаны, и который устроен так, что первый символ, который будет напечатан, получает код 1, второй - код 2 и т. Д. Таким образом, «Hello 'будет 0x01 0x02 0x03 0x03 0x04
Драйвер принтера Windows PostScript добавляет нестандартную таблицу G2U, которая отображает имена глифов в кодовые точки Юникода, и с помощью этого можно построить CMU ToUnicode и вставить его в PDF-файл. Это позволяет преобразовывать сложные кодировки в значения Unicode, что означает, что поиск и копирование/вставка будут работать.
Но вы не указали, какую систему вы используете для создания программы PostScript, и поскольку вы не представили пример, мы просто не знаем, как генерируется ваш PostScript.
Кажется, что ваш файл PDF использует CIDFont и не содержит CMap ToUnicode. Его довольно маловероятно, что это даст файл PDF, в котором вы можете скопировать/вставить материал. Конечно, это не была исходная цель PDF, и поэтому ее невозможно гарантировать.
Может случиться так, что просто невозможно превратить файл PostScript в редактируемый файл PDF, но вы не предоставили достаточную информацию.
[позже]
постскриптум производится Каиром, возможно, из файла PDF, но это не совсем понятно, это может быть просто так, что Каир работает. В любом случае....PostScript содержит встроенное подмножество CIDFont с CIDFontType 2 (контуры TrueType). Поскольку PostScript не имеет определенного механизма для предоставления информации Unicode, ни один из них не поставляется. Как описано выше, «кодирование» создается, поскольку символы встречаются, поэтому первый глиф кодируется как 0x01 и т. Д.
Результатом этого является то, что нет простого способа извлечь значимый текст из этого файла PostScript, кроме печати и использования OCR, конечно.
Его просто мыслимо, что sfnts CIDFont содержит подтаблицу 3,0 CMAP, которая отображает идентификаторы глифов в значения Unicode, но мне потребуется некоторое время для проверки.
Однако, даже если это так, код pdfwrite Ghostscript в настоящее время не пытается совершить этот подвиг (и Acrobat Distiller, и любой другой создатель PostScript для PDF, о котором я знаю).
Итак, в принципе, вы не можете делать то, что вы пытаетесь сделать. Почему Cairo не создает файл PDF вместо файла PostScript? Скорее всего, я буду так думать. Конечно, это, вероятно, означало бы, что вам нужно будет посмотреть, как работает ваш виртуальный принтер, если вы используете CUPS, я должен был подумать, так как PDF - это стандартный формат, используемый современными версиями CUPS.
Hi @KenS, Большое спасибо за ваш быстрый ответ, в моем вопросе «ps2pdf» - утилита ghostscript, а принтер находится в машине linux. Я не знаю, как загрузить файл здесь для ссылки. Если вы поделитесь своим mail Я могу отправить вам файл. – prasad
Вы не можете публиковать файлы здесь, лучше поместить его на DropBox или что-то еще и опубликовать URL-адрес здесь, тогда люди, кроме меня, могут посмотреть. Какую версию Ghostscript вы используете, и где вы ее взяли (пакет, построенный из источника самостоятельно и т. Д.)? Если вы абсолютно должны использовать электронную почту, которую вы можете отправить в ken на spamcop dot net (не хотите размещать здесь явный адрес электронной почты) – KenS
Привет @KenS, моя версия ghostscript - 9.16. Здесь я использую ссылки на Dropbox для postscript и pdf файлов. https://www.dropbox.com/s/jq5m4dkz175o0nk/VirtualPrinter_16_08_2016_16_09_20_865.ps?dl=0, https://www.dropbox.com/s/y8jo3whu2kw12sr/VirtualPrinter_16_08_2016_16_09_24_896.pdf?dl=0 – prasad