Почему в pdf файле вместо букв кракозябры
Перейти к содержимому

Почему в pdf файле вместо букв кракозябры

  • автор:

Кракозябры при печати PDF файлов

Вообщем замучался 🙁 При печати некоторых (почти всех) файлов при печати вместо нормального текста какие-то хреновы иероглифы печатаются. По сети лазил, проблема встречается часто, но решения так никто и не нашел. Акробат уже разных версий пробовал — без разницы. Танцы с бубном какие только не делал, все без толку. Печатать нормально получается если только выставить «as image», но это не выход. Если кто-то сталкивался и смог пофиксить, поделитесь плиз решением.

Есть желание, — тысяча способов; нет желания, — тысяча поводов! /Петр-I/.
На сайте с 27.09.2007
22 апреля 2009, 08:31

Попробуй PDF/X−1a. Ну в крайнем случае «печатать как изображение», хотя вы правы, утомительно это, если много.

«Молодой» редактор ODP — Top: World: Russian: .
На сайте с 01.08.2004
22 апреля 2009, 12:48
Не очень понял что там в ссылке. В любом случае, хочется решить проблему раз и навсегда.
На сайте с 08.12.2008
22 апреля 2009, 12:53
Когда отправляете на печать включите функцию — печатать как изображение, и будет Вам счастье
В Украине признаком смены Папы станет дым над Межигорьем. Цвет дыма не принципиален.
На сайте с 01.08.2004
22 апреля 2009, 13:43
TOVSTUN, сами поймете что написали или подсказать?
На сайте с 01.08.2004
27 апреля 2009, 16:57

Пришлось потратить нехилое количество времени, прежде чем удалось найти решение проблемы. Во всем буржунете и рунете (насколько это возможно я его перелопатил) нашелся только один человек которые предложил реальное решение. http://forum.rudtp.ru/showpost.php?p=94073&postcount=11

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

В секции реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Nls\Codepage
все параметры вида:
«125n»=»c_125n.nls»
исправляет на
«125n»=»c_1251.nls»

Нужно проделать обратную процедуру: перебить «c_1251» на «c_125n», где
«n» — та же цифра, что и слева.
т.е там где было 1252 — 1251
нужно вернуть обратно на 1252 — 1252 и т.д.

еще то же самое здесь [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nl s\CodePage]
и здесь [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Control\Nl s\CodePage]

Смотрите в реестре в секции FontsSubstitution.
Наверняка там найдете такую подстановку:
«Arial,0″=»Arial,204»
Если да — её надо просто грохнуть.
Ну, и аналогичную для Таймса и Курьера. Там по стандарту только по три
следующих подстановки для каждого шрифта:
Arial Cyr,204=Arial,204
Arial Cyr,0=Arial,204
Arial CE,238=Arial,238

А вот подстановка «Arial,0″=»Arial,204» приводит к тому, что Вам
_кажется_, что у Вас русский текст, даже если он в самом деле
панъевропейский.

Мне оказалось достаточно сделать такое: Идем в реестр HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes И удаляем Arial,0 Arial,204 Courier,0 Courier New,204 Тоже самое для Times New Roman, если есть.

Искаженный или отсутствующий текст при преобразовании или объединении документов PDF в Acrobat 9

Текст выводится на печать или отображается некорректно

Текст должным образом не отображается или не выводится на печать после преобразования или объединения документов PDF в Acrobat 9.

  • Текст выглядит размытым, или буквы и символы накладываются друг на друга.
  • Текст зашифрован, искажен или отображается как набор нечитаемых символов.
  • Текст в некоторых местах отображается с нижним индексом.
  • Текст не печатается должным образом.

Решение. Встройте шрифты, чтобы избежать подстановки

Встраивание делает ненужной подстановку шрифта при просмотре или печати файла, поэтому пользователь видит текст, отображаемый в первоначальном шрифте.

Следующие шаги объясняют, как встроить шрифты.

Встраивание шрифтов в Acrobat 9 при помощи Distiller:

Сменить кодировку текста pdf

Даны pdf-файл, сделаны latex+dvips+ps2pdf, исходник утеряны или скрыты создателями 🙂
Если в adobe pdf reader выделить текст и скопировать куда-нибудь, скопируются крякозябры, например «Ñòîõàñòè÷åñêèé».
Вследствие плохой кодировки не работает, например поиск по файлу.
Для некоторых из имеющихся файлов помогает использование foxit вместо adobe для поиска, но хочется, чтобы любой ридер мог читать. Требуется, видимо, изменить кодировку чего-то внутри (или вне?) pdf. Порылся в интернетах, ничего полезного не нашёл, хотя проблема, вроде, не редкая. Посоветуйте какой-нибудь софт или последовательность действий, чтобы это исправить. Операционная система любая.

  • Вопрос задан более трёх лет назад
  • 212332 просмотра

Комментировать
Решения вопроса 1
PoCTo @PoCTo Автор вопроса
Нашёл решение для моих случаев:

gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -sOutputFile=output.pdf input.pdf

После этого у output.pdf невероятным образом появляется верная кодировка.
В Windows исполняемый файл должен называться gsw32c, gswin32c, или тоже gs.

Ответ написан более трёх лет назад
Нравится 10 9 комментариев
В моём случае не работает Т__Т (Ubuntu 12.10, GPL Ghostscript 9.06)

romakoks

на windows не вышло просто потому что ghostscript не хотел добавляться в path. На ubuntu все прошло гладко.

у меня тоже не сработало.

vlasovde

romakoks: Скачал Ghostscript c «ghostscript.com/download/gsdnld.html». Установил версию x64, Win 8.1. Затем запустил грубо указав полный путь к файлам^ C:\>»C:\Program Files\gs\gs9.19\bin\gswin64.exe» -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -sOutputFile=»C:\test\output.pdf» «C:\test\Input.pdf»

Дмитрий Власов:
У меня при выполнении данных действий Ghostscript выдаёт ошибку:

Error: /undefined in C:\
Operand stack:

Execution stack:
%interp_exit .runexec2 —nostringval— —nostringval— —nostringval-
— 2 %stopped_push —nostringval— —nostringval— %loop_continue —n
ostringval— —nostringval— false 1 %stopped_push .runexec2 —nostr
ingval— —nostringval— —nostringval— 2 %stopped_push —nostringval

Dictionary stack:
—dict:1194/1684(ro)(G)— —dict:0/20(G)— —dict:78/200(L)—
Current allocation mode is local
Last OS error: No such file or directory
Current file position is 3

Не подскажете, как решить проблему? Win7 32

PoCTo @PoCTo Автор вопроса

R80: попробуйте слеш в пути к файлу другую сторону развернуть, проверьте, что взяли пути в кавычки, или просто указывайте относительные пути вместо полных. Судя по «Last OS error: No such file or directory», не получилось распознать путь, который вы задали.
Чтобы не мучаться с путями, добавьте в PATH путь к бинарнику gs, тогда будет удобно и коротко, как в моем изначальном решении

Впрочем, через полтора месяца после вопроса это уже может быть и неважно 🙂

PoCTo: да нет, почему же, очень важно. Потому как имеющийся документ тянет почти на 300 страниц. Через OCR его заново прогонять просто дикость. Что касается GS, то попробовал сейчас ваши рекомендации относительно слэша и кавычек — всё тщетно. Кавычки стоят. Разворот слэша ничего не меняет. Вот фраза про добавление в PATH путь к бинарнику gs, мне, как полнейшему профану в этом деле, не совсем понятна.
Сейчас я действую по сценарию, описанному у Дмитрия. Я просто копирую его путь C:\>»C:\Program Files\gs\gs9.19\bin\gswin64.exe» -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -sOutputFile=»C:\test\output.pdf» «C:\test\Input.pdf», естественно поместив в указанные папки нужные файлы с указанными наименованиями, и меняю gswin64.exe на gswin32c.exe. Может быть я где-то на этом этапе допускаю некую кощунственную ошибку, которая и является причиной гневных ответов gs в мой адрес? Хотелось бы разобраться.

iLeonidze

Пытаюсь сконвертировать CP1252 → CP1251, увы, фокус не удался, хотя все верно отработало и новый файл даже создался

Почему в pdf файле вместо букв кракозябры

Электронные книги вошли в нашу повседневную жизнь и продолжают укреплять свою позицию. PDF – один из самых популярных форматов, который можно встретить на интернет просторах, посещая сайты и магазины. Но бывают досадные ситуации, когда текст, который мы хотим скопировать, просто превращается в непонятные символы. Кто-то на них говорит иероглифы, другие – кракозябры . Как же исправить такую ситуацию?

Я не уверен, что следующие советы помогут для всех решить проблему, но частичное решение ее все же возможно.

Давайте сразу отбросим отсканированые и нераспознанные PDF документы, из которых просто невозможно скопировать текст. Это равносильно попытке копирования текста из обычной фотографии, сделанной на ваш смартфон. В таком случае текст нужно распознать специальной программой, вроде ABBYY FineReader.

Наша книга (тестовая) полностью поддерживает копирование текста и изображений. Но при попытке перенести такой текст в Microsoft Office Word, можно видеть такие нечитабельные символы как на скриншоте сверху статьи.

Способ 1 (длинный).

Вся проблема в шрифтах и системе кодирования. PDF документ, с которого производится копирование имеет встроенные шрифты. И если такие шрифты отсутствуют в вашей операционной системе, то вы увидите такие кракозябры .

Чтобы можно было видеть нормальные буквы, при переносе текста нужно устанавливать соответствующие шрифты .

Чтобы узнать какие именно нужно инсталлировать на компьютер шрифты, нужно открыть наш PDF документ поддерживаемой программой (на примере PDF-XChange Viewer ). Далее идем в «Файл» → «Свойства документа» (можно нажать сочетание клавиш Ctrl + D).

кракозябры

Далее нажимаем на параметр «Шрифты» и видим список шрифтов, установленных в документе. Их и нужно найти в интернете и установить на компьютер. Для этого на загруженном шрифте два раза нажимаем левой клавишей мыши (то есть, открываем его), а потом нажимаем на кнопку «Установить» .

кракозябры

кракозябры

Далее копируем и вставляем текст из PDF документа, выделяем его в Microsoft Office Word (или в другом офисном редакторе, который у вас установлен) и выбираем из списка недавно установленный шрифт. Все должно быть нормально. Снизу на скриншоте видно, что я намеренно применил нужный шрифт только на одно предложение, другую часть текста прочитать невозможно.

кракозябры

Способ 2 (быстро и удобно).

кракозябры

Другой, более правильный и простой вариант – это использование программы (или плагина к редактору Notepad ++ ), которая называется Shtirlitz. Программа старая, давно не обновлялась, однако работает отлично. Прямо на лету выполняется вставка нормального текста. Никаких шрифтов не требуется. После копирования текста с данной программы и дальнейшей вставкой его в редактор Microsoft Office Word, все буквы и символы будут читаться и с использованием любого шрифта. Первый вариант не позволяет изменить шрифт. То есть, всегда, и на каждом компьютере нужно будет инсталлировать нужные шрифты для чтения только определенного документа. А если таких документов несколько сотен? Поэтому желательно воспользоваться этой программой для декодирования.

Способ 3 (онлайн).

Кто не хочет использовать программу Shtirlitz или она не работает, может использовать следующие онлайн сервисы для перекодирования (отдельные сервисы имеют ограничения по объему текста).

кракозябры

Обратите внимание, что кодирование нашей тестовой книги windows-1252. Для нас нужна кодировка windows-1251. Поэтому переходим на сервис online-decoder.com.

Там можно видеть окно, где написано «Скопируйте сюда текст». Вставляем наш непонятный текст и нажимаем на кнопку «Подбор». Такой способ будет правильно использовать если вам неизвестна система кодирования. Декодер попытается подобрать ее автоматически. Если вы знаете исходное кодирование своей кракозябры, то можете смело нажимать кнопку «Точно», указав перед этим кодирование, напротив текста «Я знаю нужные кодировки».

кракозябры

Второй сервис «artlebedev.ru». Есть два способа для декодирования: «Просто» и «Сложно». Первый вариант работает на автомате. Второй – дает возможность, при необходимости, указать исходное и конечное кодирование.

кракозябры

Третий онлайн сервис для декодирования текста «2cyr.com» имеет отличие от предыдущих в том, что позволяет выбирать язык. Кроме русского, доступен также и украинский язык интерфейса (и надеюсь, что кодирования также, просто не было возможности проверить).

Есть также два режима: автоматический и режим эксперта. Во втором можно указывать исходное и конечное кодирование. Рекомендуется автоматический режим. После того как вставили текст, напротив слов «Выберите кодировку : » , нужно выбрать «Автоматически (рекомендуется)» и нажать на кнопку «Ок».

Все три сервиса отлично работали на моей тестовой книге в формате PDF с кракозябрами.

Способ 4 (с помощью макросов для Microsoft Office Word ).

Еще один вариант для программы Microsoft Office Word. Никаких шрифтов ставить не нужно. Создаем макрос со следующим кодом:

Код 1: «Перекодирование 1252 в 1251»

Sub Corr1252_1251()
Dim s$, i&, j&
s = Selection
For i = 1 To Len(s)
j = AscW(Mid$(s, i, 1))
If j < 256 Then
Mid$(s, i, 1) = Chr(j)
‘ Debug.Print i & vbTab & Mid$(s, i, 1) & vbTab & j & vbTab & Chr(j)
End If
Next
Selection.Text = s
End Sub

Код 2: «Перекодирование 1252 в 1251 (с учетом русской буквы Ё)»

Sub changeToRus()

‘ Замена кракозябр на кириллические буквы
‘ CP1252 -> CP1251

For i = 192 To 255
a1 = i
a = Trim(«^u») & Trim(Str(a1))
‘ Формирование запроса для поля Найти
sRus = Array(«А», «Б», «В», «Г», «Д», «Е», «Ж», «З», «И», «Й», «К», «Л», «М», «Н», «О», _
«П», «Р», «С», «Т», «У», «Ф», «Х», «Ц», «Ч», «Ш», «Щ», «Ъ», «Ы», «Ь», «Э», «Ю», «Я», _
«а», «б», «в», «г», «д», «е», «ж», «з», «и», «й», «к», «л», «м», «н», «о», _
«п», «р», «с», «т», «у», «ф», «х», «ц», «ч», «ш», «щ», «ъ», «ы», «ь», «э», «ю», «я»)
‘ Формирование массива кириллических букв для поля Заменить
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = a
.Replacement.Text = sRus(i — 192)
.Forward = True
.Wrap = wdFindContinue
.MatchCase = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
‘ Выполнение замены по тексту
Next i

‘ Замена Ё и ё
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ChrW(168)
.Replacement.Text = «Ё»
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ChrW(184)
.Replacement.Text = «ё»
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Выделяем вставленный текст с иероглифами. Тогда запускаем макрос на выполнение и получаем нормальный текст, который можно спокойно редактировать, изменять шрифты и т.д.

Для добавления готового макроса в Word делаем следующее:

Открываем редактор и переходим в «Вид».

кракозябры

Там находим кнопку «Макросы» и нажимаем на нее.

кракозябры

кракозябры

Даем для макроса имя (любое, оно будет автоматически изменено при полном копировании кода выше).

кракозябры

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

кракозябры

Как видно, макрос начинается так:

Sub названиемакроса()
дальше идет код макроса
End Sub

Название макроса может любым, но не цифры и не должно быть пробелов. Может быть так: декодирование_кракозябр_с_ё. Но не может быть так: декодирование кракозябр с ё.

То есть, для нас нужно заменить для нашего созданного пустого макроса весь текст с кодом, который показан выше.

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

кракозябры

Ваш текст должен стать читабельным.

кракозябры

Источник макросов для Microsoft Office Word: http://wordexpert.ru

Как ни крути, но это не полное решение ситуации. Поиск после данных действий в самом PDF документе работать не будет. Проблема остается. Кто может подсказать ее решение, просьба писать в комментариях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *