Word, можливо, просто відображає масштабне зображення і надсилає його таким чином як вхід принтера (я припускаю, що Distiller працює як принтер). Якщо так, то це добре для звичайних принтерів, але неефективне для підроблених принтерів, що виробляють PDF-файли.
Наприклад, pdfLaTeX правильно вставляє зображення у вихідний файл. Перевірте мій PDF, завантажений у галерею min.us: Вставлення зображення в документ LaTeX
Важливим є те, який стек для створення PDF ви використовуєте. Якщо спроба іншого принтера PDF, як-от відмінного та безкоштовного PDFCreator , не усуває проблему, то слід спробувати використовувати спеціальний експорт PDF, тобто не працювати як принтер. Останні версії Word AFAIK мають вбудований експорт у PDF, тож якщо він належним чином реалізований, ви отримаєте невеликий файл завдяки вбудованим зображенням, які використовуються в документі.
ВЕЛИЧЕЗНАЧЕННЯ редагування
Галерею було перейменовано на Вбудовування зображення PNG у LaTeX vs Word
Я більш ретельно переглянув моє mytest.pdf
сформоване pdfLaTeX та ваше test2.pdf
сформоване Word.
mytest.pdf
test2.pdf
Почнемо з розтискування. Якщо ви заглянете в нестиснений файл, ви легко помітите початок потоку зображення ( <<...>>stream
рядок із параметрами Width and Height, такий же, як у test.png
, тобто 176x295), який закінчується endstream
тегом. Заглянути час.
(УВАГА в цьому пункті pdftk передбачається у версії 1.41)
test2.pdf
$ pdftk test2.pdf output test2uc.pdf uncompress
$ sed '\,^<</Width 176[^>]*/Height 295[^>]*>>stream$,!d' test2uc.pdf
<</Width 176/BitsPerComponent 8/Interpolate true/Height 295/Filter[/DCTDecode]/Subtype/Image/Length 20003/ColorSpace/DeviceRGB/Type/XObject>>stream
$ sed '1,\,^<</Width 176[^>]*/Height 295[^>]*>>stream$,d;/^endstream$/,$d' test2uc.pdf > test2stream
$ xxd test2stream | head -10
0000000: ffd8 ffe0 0010 4a46 4946 0001 0101 0048 ......JFIF.....H
0000010: 0048 0000 ffe1 005c 4578 6966 0000 4d4d .H.....\Exif..MM
0000020: 002a 0000 0008 0004 0302 0002 0000 0016 .*..............
0000030: 0000 003e 5110 0001 0000 0001 0100 0000 ...>Q...........
0000040: 5111 0004 0000 0001 0000 0b13 5112 0004 Q...........Q...
0000050: 0000 0001 0000 0b13 0000 0000 5068 6f74 ............Phot
0000060: 6f73 686f 7020 4943 4320 7072 6f66 696c oshop ICC profil
0000070: 6500 ffe2 0c58 4943 435f 5052 4f46 494c e....XICC_PROFIL
0000080: 4500 0101 0000 0c48 4c69 6e6f 0210 0000 E......HLino....
0000090: 6d6e 7472 5247 4220 5859 5a20 07ce 0002 mntrRGB XYZ ....
$ file test2stream
test2stream: JPEG image data, JFIF standard 1.01
Тож Word надає JPEG замість PNG на свій внутрішній вихід для подальшої обробки PDF. Просто ВАЙ! Те саме може статися при надсиланні виводу на принтер.
test2stream.jpg
mytest.pdf
$ pdftk mytest.pdf output mytestuc.pdf uncompress
$ sed '\,^<</Width 176[^>]*/Height 295[^>]*>>stream$,!d' mytestuc.pdf
<</Width 176/BitsPerComponent 8/Height 295/Subtype/Image/Length 155760/ColorSpace/DeviceRGB/Type/XObject>>stream
$ sed '1,\,^<</Width 176[^>]*/Height 295[^>]*>>stream$,d;/^endstream$/,$d' mytestuc.pdf > myteststream
$ xxd myteststream | head -10
0000000: ebeb ebea eaea ecec eceb ebeb ebeb ebeb ................
0000010: ebeb ebeb ebec ecec ebeb ebeb ebeb ebeb ................
0000020: ebeb ebeb ebeb ebeb ebeb ebeb ebeb ebeb ................
0000030: ebeb ebea eaea eaea eaec ecec eaea eaec ................
0000040: ecec ebeb ebec ecec ebeb ebeb ebeb ebeb ................
0000050: ebeb ebeb ebeb ebeb ebeb ebeb ebeb ebeb ................
0000060: ebeb ebeb ebeb ebeb ebeb ebeb ebeb ebeb ................
0000070: ebeb ebeb ebeb ebeb ebeb ebeb ebeb ebeb ................
0000080: ebea eaea ecec eceb ebeb ebeb ebea eaea ................
0000090: ebeb ebeb ebeb ebeb ebeb ebeb ebeb ebeb ................
$ file myteststream
myteststream: DOS executable (COM)
Це не файл COM, але це також не PNG.
$ du -b test.png test2stream myteststream
57727 test.png
20004 test2stream
155761 myteststream
Ви це бачите зараз? Потік зображень (у форматі PNG) у форматі PDF, створений файлом pdfLaTeX, можливо, є простим необробленим форматом (176 * 295 * 3 = 155760, 1 походить із зайвого нового рядка). Давайте перевіримо:
$ convert -depth 8 -size 176x295 rgb:myteststream myteststream.png
І у нас є своє оригінальне зображення назад! Ні, чекай. Схоже, що стискання pdftk 1,41 є помилковим, а зображення було майже однаковим із кількома недоліками. Я оновив до pdftk 1.44, але ця версія зовсім не декомпресує потік зображень. Більше того, pdftk не виводить словник потоку в одному рядку, тому вище вилучення за допомогою sed більше не працює, але зараз немає сенсу виправляти його.
То що ми можемо зробити щодо Word? Не так багато меттекс. Принаймні, ви можете пересаджувати вбудоване зображення з одного PDF в інший. Я повторив розпакування обох PDF-файлів за допомогою недавнього pdftk, відкрив їх у vim, замінив на test2uc.pdf
<<...>>stream...endstream
аналог з mytestuc.pdf
, збережено як test2fixuc.pdf
і стиснув до test2fix.pdf
.
test2fix.pdf
test.pdf
Було б гріхом не перевіряти ваш великий PDF-файл. Гаразд, я підготував ще один oneliner для гри з PDF-файлами без стиснених файлів pdftk 1,44, щоб перелічити потоки зображень та їх початкові рядки у файлах. Тож я почну з розтискування test.pdf
.
(ПОПЕРЕДЖЕННЯ у цьому пункті pdftk передбачається у версії 1.44)
$ pdftk test.pdf output testuc.pdf uncompress
$ awk '{if(i)h=h$0} /^[0-9]+ [0-9]+ obj $/{i=1;h=""}/^stream$/{i=0;if(h!~/\/Image/)next;print h,":"NR+1}' testuc.pdf
<</ColorSpace /DeviceRGB/Subtype /Image/Length 10443804/Width 707/Type /XObject/BitsPerComponent 8/Height 4924>>stream :619
<</ColorSpace /DeviceRGB/Subtype /Image/Length 11264460/Width 953/Type /XObject/BitsPerComponent 8/Height 3940>>stream :12106
<</ColorSpace /DeviceRGB/Subtype /Image/Length 2813256/Width 953/Type /XObject/BitsPerComponent 8/Height 984>>stream :12910
<</ColorSpace /DeviceRGB/Subtype /Image/Length 11264460/Width 953/Type /XObject/BitsPerComponent 8/Height 3940>>stream :18547
<</ColorSpace /DeviceRGB/Subtype /Image/Length 2813256/Width 953/Type /XObject/BitsPerComponent 8/Height 984>>stream :19312
<</ColorSpace /DeviceRGB/Subtype /Image/Length 4845216/Width 328/Type /XObject/BitsPerComponent 8/Height 4924>>stream :19326
Щось тут насправді божевільне! 6 неочищених зображень (мабуть, цього разу pdftk не мав жодних проблем з їх розтисканням), разом взявши 43444452 байти! Давайте повторно перевіримо test2uc.pdf
і mytestuc.pdf
.
$ awk '{if(i)h=h$0} /^[0-9]+ [0-9]+ obj $/{i=1;h=""}/^stream$/{i=0;if(h!~/\/Image/)next;print h,":"NR+1}' test2uc.pdf
<</Width 176/BitsPerComponent 8/Interpolate true/Height 295/Filter /DCTDecode/Subtype /Image/Length 20003/ColorSpace /DeviceRGB/Type /XObject>>stream :113
przemoc@debian:~/latex/test/img/mod$ awk '{if(i)h=h$0} /^[0-9]+ [0-9]+ obj $/{i=1;h=""}/^stream$/{i=0;if(h!~/\/Image/)next;print h,":"NR+1}' mytestuc.pdf
<</DecodeParms <</Colors 3/Columns 176/Predictor 10/BitsPerComponent 8>>/Width 176/BitsPerComponent 8/Height 295/Filter /FlateDecode/Subtype /Image/Length 54954/ColorSpace /DeviceRGB/Type /XObject>>stream :22
В обох випадках лише один потік зображень. Чому, до біса, їх може бути більше ?!
$ sed '1,618d;/^endstream $/q' testuc.pdf | convert -depth 8 -size 707x4924 rgb:- testuc-stream1.png
$ sed '1,12105d;/^endstream $/q' testuc.pdf | convert -depth 8 -size 953x3940 rgb:- testuc-stream2.png
$ sed '1,12909d;/^endstream $/q' testuc.pdf | convert -depth 8 -size 953x984 rgb:- testuc-stream3.png
$ sed '1,18546d;/^endstream $/q' testuc.pdf | convert -depth 8 -size 953x3940 rgb:- testuc-stream4.png
$ sed '1,19311d;/^endstream $/q' testuc.pdf | convert -depth 8 -size 953x984 rgb:- testuc-stream5.png
$ sed '1,19325d;/^endstream $/q' testuc.pdf | convert -depth 8 -size 328x4924 rgb:- testuc-stream6.png
Зображення було розрізане на багато шматків ... Це схоже на якийсь абсолютно дурний захист, можливо, запроваджений Distiller (а може, його можна вимкнути)? Я сумніваюся, що те саме б виплюнуло PDFCreator, якщо тільки Слово не виконує це неймовірне божевілля ...
testuc-stream1.png та інші (для переміщення використовуйте стрілку праворуч)
Висновок
Важливі речі:
- ви добре бачите, що величезне зображення, розрізане на шматки, насправді є розширеним JPEG, тому моя гіпотеза була правильною,
- оскільки у PDFCreator ви отримуєте також величезний файл у висновку, саме Word надає жахливо велике зображення підробленому принтеру PDF, і моє попереднє припущення було також правильним.
Phew. Це розслідування зайняло деякий час. Слово - шматок мотлоху.
Обхідні шляхи?
Тим часом були подані деякі пропозиції. Дозвольте мені прокоментувати їх.
Використання сценариста з гідною підтримкою PDF, як LibreOffice (забудьте про OpenOffice, це застаріло) є хорошим рішенням, якщо тільки деякі нездатності не змушують працювати з ним.
Використання більшого зображення у тому ж полі на сторінці також не є поганою ідеєю, оскільки навіть після JPEG-файлів артефакти будуть менш помітні.
Моя інша гроша, хоча використовує JPEG з самого початку. Таким чином, Word не повинен його повторно створювати (ніколи не знаєте ...), і ви можете забезпечити максимально високу якість JPEG. Також існує стиснення JPEG без втрат. Розробники з Redmond, мабуть, вважали, що це не потрібно, тому я не здивуюся, якщо Word не обробляє такі JPEG. Ну, TBH це не підтримується широко (навіть у світі з відкритим кодом), як арифметичне кодування (або це ще гірша ситуація у випадку арифметичного кодування).
convert test.png -quality 100 -resize $((100*300/72))% test-300dpi-mitchell.jpg
convert test.png -quality 100 -filter box -resize $((100*300/72))% test-300dpi-box.jpg
convert test.png -quality 100 test.jpg
(У Windows використовуйте 416 замість цього $(())
арифметичного розширення, наявного в оболонках POSIX)
Я думаю, що Мітчелл за замовчуванням є хорошим варіантом для збільшення масштабу, але якщо ви дійсно хочете такого пікселетічного зображення, тоді перейдіть з полем Box, як запропонував @ceving. Звичайно, перші 2 файли корисні лише в тому випадку, якщо вам потрібно (чомусь) використовувати підроблені принтери PDF.
Я завантажив усі три файли.
test-300dpi-mitchell.jpg (426 KB)
test-300dpi-box.jpg (581 KB)
test.jpg (74 KB)
Якщо моя гіпотеза правильна, і Word не буде перетислювати зображення JPEG, тоді просто використовуйте останній, не розширений масштаб, і перейдіть із вбудованим вихідним файлом PDF, оскільки він має менше недоліків (принаймні, це дозволяє уникнути зайвих високих масштабів).