Почему PDF-файлы, созданные из MS Word, такие большие?

70

Я создал простой документ MS Word, содержащий только это предложение:

Это небольшой документ.

Ничего больше. Затем я сохранил этот документ в формате DOCX и PDF. Вот размеры файлов:

DOCX: 12 кБ
PDF: 89 кБ

Технически это различие огромно , и оно действительно начинает меня беспокоить, когда в основном текстовые документы, размер которых в DOCX составляет десятки килобайт, начинают генерировать PDF-файлы размером в сотни килобайт . Что такого неэффективного в формате PDF? Или просто Word использует какой-то ужасный алгоритм вывода?

Кстати, настройки вывода PDF были установлены для создания наименьшего возможного файла:

Параметры вывода PDF

Борек Бернард
источник
28
Я предполагаю, что PDF-файл встраивает шрифт, который необходим, чтобы документ был действительно переносимым.
AFH
2
Да, подмножество шрифтов встроено. Это может быть так. Я пытался повторить одно и то же предложение несколько сотен раз, и размер файла PDF вырос только на 4 КБ, что примерно так. (DOCX остался на 12 КБ, что неудивительно, поскольку это сжатый формат, а повторный текст вряд ли займет новые байты.)
Борек Бернард
1
@AFH Он не встраивает Arial. i.stack.imgur.com/aUZgt.png
MonkeyZeus,
1
Думая об этом с точки зрения сложности Колмогорова, Microsoft Word больше, чем ваш обычный просмотрщик PDF, на несколько сотен килобайт.
Хоббс
8
Я думаю, что реальный вопрос заключается в том, почему ваш формат текстовой обработки намного больше, чем эквивалентный LaTeX ... :-p
Тоби Спейт

Ответы:

104

Если вы откроете PDF в notepad ++, вы найдете:

9 0 obj
<</Filter/FlateDecode/Length 79100/Length1 171804>>
stream
xœì}    XTGºvÕ9½/t7Ðl
..... many more bytes  ...   ëH|  
endstream
endobj
10 0 obj

и этот объект упоминается здесь в конце в инструкции / FontFile2:

6 0 obj
<</Type/FontDescriptor/FontName/ABCDEE+Calibri/Flags 32/ItalicAngle 0/Ascent 750/Descent -250/CapHeight 750/AvgWidth 521/MaxWidth 1743/FontWeight 400/XHeight 250/StemV 52/FontBBox[ -503 -250 1240 750] /FontFile2 9 0 R>>
endobj

Шрифты, используемые в документе Word, встраиваются в PDF, поэтому PDF-файл является автономным.

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

Если вы хотите предотвратить встраивание шрифтов в файл PDF, убедитесь, что в документе Word используется одна из 14 стандартных гарнитур, доступных в средствах просмотра PDF (исходная Википедия )

  • Times New Roman> Times (v3) (обычный, курсив, полужирный и полужирный курсив)
  • Курьер New> Курьер (обычный, наклонный, жирный и жирный наклонный)
  • Arial> Helvetica (v3) (обычный, наклонный, жирный и жирный наклонный)
  • Символ> Символ
  • Wingdings> Zapf Dingbats
Rene
источник
6
Связано: superuser.com/questions/607840/…
Борек Бернард
2
Sidenote: Связанная слайд-колода (презентация Powershell) стоит того, чтобы ее прочитать. Очень подробно. Не пропустите комментарии, где он объясняет структуру PDF
nixda
3

Это случалось со мной много раз в Microsoft Word, когда я пытался экспортировать простую рукопись в PDF. Документ Word объемом 5–8 страниц, размером ~ 50 КБ, в конечном итоге будет представлять собой PDF-файл размером более 10 МБ, который слишком велик для того, чтобы кому-то было разумно отправить его по электронной почте.

Ответ Рене на правильном пути - проблема в том, что шрифты встраиваются в документ - но использование одной из стандартных гарнитур не обязательно решит проблему.

Все мои документы были в Times New Roman, в котором не использовалось ничего, кроме жирного и курсива. Или я так думал. Оказывается, у меня включен автоматический кернинг в шаблоне по умолчанию (по понятным причинам ). При экспорте в PDF Word фактически встраивал каждую из этих лигатур в качестве отдельного объекта шрифта в документ, раздутый до предела.

Исправление простое, вы просто должны помнить, чтобы делать это каждый раз:

  1. Выделите весь текст в документе.
  2. Формат → Шрифт → Дополнительно
  3. Снимите флажок «Кернинг для шрифтов»

Интересно, что вы можете оставить лигатуры, контекстные альтернативы и другие расширенные функции типографики включенными; они не оказывают заметного влияния на размер получаемого PDF.

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

Коди Грей
источник
-3

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

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

Точно так же, как недавнее изменение шрифта Google уменьшило размер логотипа с ~ 14 КБ до ~ 300 Б, более простые шрифты, вероятно, помогут уменьшить размер вашего файла.

Бен Сандин
источник
4
Эта аналогия не работает. Вообще. Изменение логотипа Google было связано не только с шрифтом, но и с градиентами на плоскую поверхность, что делает разницу в размере. Кроме того, экспорт документа в большое растровое изображение будет намного больше, чем шрифт + текст. Математические уравнения, как вы вводите в заблуждение, представляют собой просто целочисленные пары координат, которых на глиф может быть несколько десятков. И поскольку это шрифт, его не нужно повторять для каждой буквы.
Джои