Чому PDF-файли, створені з MS Word, такі великі?


70

Я створив простий документ MS Word, що містить саме це речення:

Це невеликий документ.

Більш нічого. Потім я зберегла цей документ як DOCX та PDF. Ось розміри файлів:

DOCX: 12 kB
PDF: 89 kB

Ця різниця величезна , технічно, і це насправді починає турбувати мене, коли в основному текстові документи, які налічують десятки кБ у DOCX, починають генерувати PDF-файли, що мають сотні кБ . Що такого неефективного у форматі PDF? Або просто Word використовує якийсь жахливий вихідний алгоритм?

До речі, параметри виводу PDF були встановлені для створення найменшого можливого файлу:

Параметри виведення PDF


28
Я здогадуюсь, що в PDF вбудовується шрифт, який необхідний, якщо документ повинен бути справді портативним.
AFH

2
Так, підмножина шрифту вбудована. Це може бути все. Я намагався повторити одне і те ж речення кілька сотень разів, і розмір PDF-файлу лише збільшився на 4 кБ, що майже вірно. (DOCX залишився на 12 КБ, що не дивно, тому що формат в блискавці, і повторний текст займе майже будь-які нові байти.)
Borek Bernard,

1
@AFH Це не вставляє Arial. i.stack.imgur.com/aUZgt.png
MonkeyZeus

1
Думаючи про це з точки зору складності Колмогорова, Microsoft Word більший, ніж у середнього перегляду PDF, набагато більше, ніж на кілька сотень кБ.
варення

8
Я думаю, що справжнє питання полягає в тому, чому ваш формат обробки текстів набагато більший, ніж еквівалентний LaTeX ... :-p
Toby Speight

Відповіді:


104

Якщо ви відкриєте PDF у блокноті ++, ви знайдете:

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, (джерело Wikipedia )

  • Times New Roman> Times (v3) (у звичайному курсиві, жирному та жирному курсиві)
  • Кур'єр Новий> Кур'єр (у звичайній, косою, жирній та жирній косою)
  • Arial> Helvetica (v3) (у правильній, косий, жирній та жирній косою)
  • Символ> Символ
  • Крилати> Zapf Dingbats


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 була не лише шрифтом, але й від градієнтів до плоских, що робить різницю в розмірі. Крім того, експорт документа у великий растровий файл буде значно більшим, ніж шрифт + текст. Математичні рівняння, як ви введено в оману, - це лише цілі пари координат, яких може бути кілька десятків на гліф. А оскільки це шрифт, його не потрібно повторювати для кожної літери.
Joey
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.