Остановить Microsoft Word 2010 от сглаживания скриншотов?


30

Когда я вставляю скриншоты JPEG в Microsoft Word, он сглаживает их вместо сохранения исходных пикселей из растрового изображения. Затем, когда я печатаю в PDF (используя Acrobat Distiller), в зависимости от моих настроек даунсамплинга, я получаю размытые снимки экрана или файлы с огромным раздувом.

Что я хочу:

Я бы хотел, чтобы Word и Acrobat оставили растровые изображения в покое, чтобы они прошли через процесс с неповрежденными пикселями. Вот как выглядит исходное изображение при увеличении:

Что я хочу

Что я получаю:

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

Что я получаю

Примеры файлов:

  • Test.png (56 КБ ) Пример файла изображения скриншота
  • Test.docx (69K) Файл Word, содержащий только это изображение
  • Test.PDF (9,4 МБ) Файл PDF, распечатанный из файла Word с использованием Distiller, с отключенной понижающей дискретизацией
  • Test2.PDF (98K) Файл PDF, созданный с помощью инструмента Word 2010 «Сохранить как PDF» (обратите внимание на очень низкое качество сжатого изображения)

Изменить: это с Word 2010 - я обновил теги, чтобы отразить это.


Изменить: я подтвердил, что OpenOffice не имеет этой проблемы. Я открыл Test.docx (ссылка выше) и экспортировал его в формате PDF из OO (выбрав «сжатие без потерь» в разделе «Изображения» в настройках), и изображение не пострадало.

К сожалению, OpenOffice исправляет форматирование в более сложных документах Word, которые я создал; поэтому я не могу просто создавать документы в Word и использовать OO для рендеринга PDF-файлов; Я должен был бы полностью перейти на ОО, что является большим шагом, чем я готов сделать прямо сейчас.


Что вы их вставляете? Растровое изображение, расширенный метафайл, JPEG, GIF, PNG, Windows Metafile?
Рис Гибсон

Это файлы JPEG (сохраненные из Photoshop с максимальным качеством), вставленные в документ с помощью «Вставить картинку из файла».
Herb Caudill

1
Вы пробовали альтернативный (без потерь) формат файла (например, PNG)? Если вам повезет, Word и Distiller с меньшей вероятностью попытаются повторно сжать их.
DMA57361

У PNG такие же проблемы (я только что добавил пример выше).
Herb Caudill

Интересная проблема, с которой вы столкнулись ... конечная цель - уменьшить размер PDF?
Джеймс Мерц

Ответы:


9

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

Например, pdfLaTeX правильно встраивает изображение в выходной файл. Проверьте мой PDF, загруженный в галерею min.us: Вставка изображения в документ LaTeX

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

ОГРОМНОЕ РЕДАКТИРОВАНИЕ

Галерея была переименована в Embedded PNG-изображение в LaTeX vs Word

Я более mytest.pdfвнимательно посмотрел на мои сгенерированные pdfLaTeX и ваши test2.pdfсгенерированные Word.

mytest.pdf test2.pdf

Начнем с распаковки. Если вы посмотрите в несжатый файл, вы легко заметите начало потока изображения ( <<...>>streamстрока с параметрами Width и 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 будет сплевывать то же самое, если только это Word не выполняет этот невероятный маразм ...

testuc-stream1.png и другие (для навигации используйте стрелку вправо)

Вывод

Важные вещи:

  • Вы можете ясно видеть, что огромное изображение, которое было разрезано на куски, в действительности увеличено в формате JPEG, поэтому моя гипотеза была верна,
  • потому что в PDFCreator вы также получаете огромный файл на выходе, именно Word предоставляет ужасно большое изображение на поддельный PDF-принтер, и мое предыдущее предположение также было верным.

Уф. Это расследование заняло некоторое время. Слово это кусок мусора.

Обходные?

Тем временем были даны некоторые предложения. Позвольте мне прокомментировать их.

Использование Writer с приличной поддержкой PDF, такой как LibreOffice (забудьте об OpenOffice, теперь он устарел) - хорошее решение, если только некоторые несовместимости не делают вас неспособными работать с ним.

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

Мой другой гросс, хотя использует JPEG с самого начала. Таким образом, Word не должен повторно сжимать его (вы никогда не знаете ...), и вы можете обеспечить максимально возможное качество JPEG. Существует также сжатие JPEG без потерь. По-видимому, разработчики из Редмонда думали, что это не нужно, поэтому я не удивлюсь, если 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)

Я думаю, что Mitchell по умолчанию хорош для апскейлинга, но если вам действительно нужно такое пиксельное изображение, тогда используйте Box, как предложено @ceving. Конечно, первые 2 файла полезны, только если вы (по какой-то причине) должны использовать поддельные принтеры PDF.

Я загрузил все три файла.

test-300dpi-mitchell.jpg (426 КБ) test-300dpi-box.jpg (581 КБ) test.jpg (74 КБ)

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


Спасибо, @przemoc. Я попробовал PDFCreator и получаю те же результаты, что и с Distiller (изображения размыты так же, как в Word, и если я отключаю сжатие, я получаю огромный файл). Я также попытался «сохранить как PDF» и получил сильно сжатую версию изображения с множеством артефактов JPEG (хотя исходное изображение было PNG, и у меня отключено сжатие изображений, как предложил @nihcap. Я загрузлю результат.
Херб Каудилл

@Herb Важное обновление. Я не решил вашу проблему, но я пролил свет на это, и это должно быть интересно читать. По крайней мере, я на это надеюсь ...
przemoc

Т.Л., д - р я обеспечил один рабочий обходной путь 100% и один , возможно , работает. 1) 100% работа заключается в пересадке изображений из PDF с правильно встроенными сжатыми без потерь необработанными изображениями (сгенерированными из LibreOffice или pdfLaTeX) в ваш PDF, сгенерированный из Word (избегайте использования поддельных принтеров PDF!). К сожалению, это может быть утомительно, если у вас много изображений. 2) Предполагая, что Word не будет повторно сжимать изображение JPEG для внутреннего вывода, используйте JPEG с максимально возможным качеством, например, созданным convertиз ImageMagick или XnView. В этом случае вы теряете качество, но оно, по крайней мере, поддается контролю.
przemoc

Я присуждаю награду за невероятное количество исследований, которые вы провели. Конечно, моя проблема остается нерешенной, но, похоже, ничего не поделаешь - похоже, что Microsoft сделала огромный шаг назад в обработке изображений между 2007 и 2010 годами.
Херб Каудилл

@ Трава Спасибо. На самом деле, я никогда не изучал PDF-файлы на внутреннем уровне, поэтому эти исследования были интересными и информативными (и я сталкиваюсь с некоторыми новыми проблемами, которые мне придется решать для собственного удовольствия от понимания вещей). Мне немного грустно, что я не смог предоставить вам более удовлетворительный результат, то есть реальное решение, а не какое-то понимание того, что происходит, кто виноват, и обходных путей. Но давайте не будем пока закрывать дело, здесь есть несколько открытых вопросов. У меня нет Word, поэтому я должен попросить вас загрузить еще 2 файла 1) PDF с PNG из PDFCreator 2) PDF с моим последним JPG из Word. TIA
przemoc

7

Откройте « Файл» > « Настройки» > « Дополнительно» , затем в разделе « Размер и качество изображения» установите флажок « Не сжимать изображения в файлах» (см. «Снимок экрана», чтобы узнать, где находится этот параметр).
Настройки Word

Следующее изображение - это то же самое изображение JPG (захват документа на 400% увеличен, чтобы показать разницу сглаживания), вставленное до и после активации этой опции:
введите описание изображения здесь


Любая идея, где этот параметр можно найти в Word 2007?
dimo414

Я на самом деле исказил проблему в своем первоначальном посте - дело не в том, что Word сжимает или сглаживает изображение, а в том, что оно сглаживает его, а не показывает оригинальные пиксели. Я пробовал настройку, которую вы указали здесь, но она все еще сглаживает изображение, что приводит к раздутому выводу PDF.
Herb Caudill

@ dimo414 Нажмите кнопку Office, затем Настройки, остальные шаги должны быть такими же.
nyuszika7h

2
Это новый вариант Word 2010.
Harrymc

1
Я чувствую, что должен уточнить, так как это набирает очень много голосов - это хорошая обстановка, о которой нужно знать, но это никак не влияет на проблему, с которой я сталкиваюсь.
Herb Caudill

1

Похоже, что функция масштабирования Microsoft Word использует билинейную фильтрацию. Это не должно изменять само изображение, а только то, как оно отображается при увеличении, отличном от 100%. То, что вы хотите, это масштабирование ближайшего соседа, но я сомневаюсь, что в MS Word есть такая возможность.


0

Я повторил манипуляции по вставке Test.png в документ в Word 2007 и обнаружил, к моему удивлению, что результат зависит от используемого механизма.

Если кто-то использует Вставить / Изображение, то изображение сглаживается.
Но если войти в редактор изображений и скопировать, а затем вставить в Word, изображение не будет сглажено.

Другие возможные обходные пути:

  1. Попробуйте использовать Специальную вставку как Растровое изображение или Независимое от устройства растровое изображение.
  2. Не вставляйте изображения. Используйте вкладку «Вставка» / «Группа иллюстраций» / «Команда изображения» и измените раскрывающуюся кнопку «Вставить» на «Ссылка на файл». Файл изображения можно оптимизировать для Интернета, чтобы он занимал меньше места.

Хм - это был не мой опыт. Когда я вставляю из MS Paint или Photoshop, я получаю такое же сглаживание, как если бы я использовал Insert Picture from File. Я использую Word 2010, интересно, в этом ли разница - я не помню, чтобы у меня
возникала

Хм, это новая функция Word 2010? Возможно, Microsoft поняла, что паста не делает «правильных» вещей, и «исправила» это в Word 2010.
harrymc

3
Что касается пикселизации скриншота, вы можете использовать инструмент разрезания Vista и сохранить файл в формате PNG, который предотвратит этот шум.
dimo414

@ dimo414: Спасибо, очень полезный совет.
Harrymc

@Herb Caudill: Что произойдет, если вы попытаетесь вставить изображение в .doc, при этом убедитесь, что в параметрах Word / Advanced / Compatibility указано «Word 2003»?
Harrymc

0

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

Исходное изображение имеет ширину 176 пикселей. Если вы хотите увеличить его до 4 дюймов при разрешении 300 точек на дюйм, то целевая ширина составляет 1200 пикселей. Это сделает это:

convert test.png -filter Box -resize 1200 test_300dpi.png

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


Я считаю, что PDF-файлы имеют встроенное разрешение встроенных изображений, поэтому, если вы измените размеры изображений, чтобы соответствовать, то Word может пропустить шаг. К сожалению, я боюсь, что полученный размер PDF может быть необоснованным.
Марк Рэнсом

-1

Этот вопрос похож на этот

Это связано со стилем упаковки ... установите его только сверху и снизу. Читайте здесь .


Нет, изменение параметров упаковки не имеет значения.
Херб Каудилл

@ Трава, эта проблема может потребовать изменения кода в части MS. Я скучаю по Outlook 2003, где вы можете сделать вставку изображения и ожидать, что он будет отображаться, как ожидалось.
pcunite

-1

Поправьте меня, если этот комментарий слишком очевиден или не актуален:

Когда я вставляю четкое изображение, скажем, страницы текста (я тестировал .bmp и .png) в документ Word 2010 (.docx), в результате получается размытая версия оригинала. Это происходит из-за автоматического изменения размера и обработки изображений, выполняемых Word, по-видимому, независимо от соответствующих настроек в «Параметры». Однако если я тогда

  1. выберите изображение
  2. перейти на ленту Заголовок «Формат»
  3. выберите маленький значок в крайней левой части ленты, который выглядит как маленькое изображение со стрелкой «отменить»
  4. раскрыть связанное меню
  5. выберите нижний пункт под названием «Восстановить изображение и размер» (это был свободный перевод с немецкого),

затем четкое изображение, которое я вставил, появляется вместо размытого.


Примечание: если я использую встроенный инструмент для фотосъемки в Acrobat Reader, а затем вставляю его непосредственно в Word, описанное выше не работает. Мне нужно сделать скриншот всего экрана или пройти через IrfanView.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.