Зупинити Microsoft Word 2010 від згладжування скріншотів?


30

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

Що я хочу:

Мені б хотілося, щоб Word і Acrobat залишали растрові карти в спокої, щоб вони проробляли процес з їх пікселями неушкодженими. Ось так виглядає оригінальне зображення при збільшенні:

Що я хочу

Що я отримую:

Ось як виглядає документ Word, коли ви вставляєте одне і те ж зображення і збільшуєте масштаб. Коли це надрукується в PDF, усі ці додаткові пікселі призводять до набагато більшого файлу.

Що я отримую

Зразки файлів:

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

Редагувати: Це в Word 2010 - я оновив теги, щоб це відобразити.


Редагувати: Я підтвердив, що OpenOffice не має цієї проблеми. Я відкрив Test.docx (на який згадувалося вище) та експортував його у форматі PDF з OO (вибравши "стиснення без втрат" у розділі "Образи" в параметрах), і зображення надходить непошкоджено.

На жаль, OpenOffice керує форматуванням більш складних документів Word, які я створив; тому я не можу просто створити документи в Word і використовувати OO для надання PDF-файлів; Мені довелося б взагалі перейти на ОО, що є більшим кроком, ніж я зараз готовий зробити.


Що ти їх вставляєш? Растрові зображення, вдосконалена метафайл, JPEG, GIF, PNG, метафайл Windows?
Rhys Gibson

Це файли JPEG (збережені з Photoshop з максимальною якістю), вставлені в документ за допомогою "Вставити зображення з файлу".
Herb Caudill

1
Ви спробували альтернативний формат файлу (не втрачаючи втрату) (наприклад, PNG)? Якщо вам пощастить, Word і Distiller набагато рідше спробують корисно повторно стиснути.
DMA57361

PNG має ті самі проблеми (я тільки що додав приклад вище).
Герб Каділл

Цікава проблема, з якою у вас є тут ... кінцевою метою тут є зменшення розміру PDF-файлу?
Джеймс Мерц

Відповіді:


9

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, оскільки він має менше недоліків (принаймні, це дозволяє уникнути зайвих високих масштабів).


Дякую, @przemoc. Я спробував PDFCreator, і я отримав ті ж результати, що і у Distiller (зображення розмиті саме так, як вони є у Word, і якщо я вимкну компресію, я отримаю величезний файл). Я також спробував "зберегти як PDF", і я отримав сильно стиснуту версію зображення, з великою кількістю артефактів JPEG (хоча початкове зображення було PNG, і у мене стискання зображення вимкнено, як запропонував @nihcap. Я завантажу результат.
Герб Каділл

@Herb Важливе оновлення. Я не вирішив вашу проблему, але я пролив на неї трохи світла, і це повинно бути цікавим для читання. Принаймні, я сподіваюся, що так ...
przemoc

tl; dr Я забезпечив один 100% робочий спосіб вирішення та один, можливо, працюючий. 1) На 100% працює пересадка зображень з PDF із належним чином вбудованими безжатковими стиснутими зображеннями (згенерованими з LibreOffice або pdfLaTeX) у ваш PDF, створений у Word (уникайте використання підроблених принтерів PDF!). На жаль, це може втомитись, якщо у вас багато зображень. 2) Якщо припустити, що Word не буде повторно перетислювати зображення JPEG для внутрішнього виводу, використовуйте JPEG з найвищою можливою якістю, наприклад, вироблений convertвід ImageMagick або XnView. У цьому випадку ви втрачаєте якість, але це принаймні можна контролювати.
przemoc

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

@Herb Дякую Насправді я ніколи раніше не розглядав PDF-файли на внутрішньому рівні, тому це дослідження було цікавим та інформативним (і я потрапляв у деякі нові проблеми, які мені доведеться вирішити для власного задоволення від розуміння речей). Мені трохи сумно, що я не міг дати тобі більш задовільний результат, тобто реальне рішення замість того, щоб зрозуміти, що відбувається, хто винен і вирішує проблеми. Але давайте ще не закривати справу, тут є кілька відкритих питань. У мене немає Word, тому я повинен попросити вас завантажити ще 2 файли 1) PDF w / PNG з PDFCreator 2) PDF w / мій останній JPG з Word. TIA
przemoc

7

Відкрийте « Файл» > « Налаштування» > « Додатково» , а потім у розділі « Розмір та якість зображення» встановіть прапорець Не стискати зображення у файлах (Див. Зйомку екрана, щоб орієнтуватись, де знаходиться ця опція)
Параметри слова

Наступне зображення є тим самим зображенням JPG (захоплення документа на 400% збільшено, щоб показати різницю згладжування), вставлене до та після активації цього параметра:
введіть тут опис зображення


Будь-яка ідея, де цей параметр можна знайти в Word 2007?
dimo414

Я фактично неправильно вирішив проблему в своєму початковому дописі - справа не в тому, що Word стискає або не згладжує зображення, а це згладжує його, а не показує оригінальні пікселі. Я спробував налаштування, які ви вказуєте тут, але це все-таки розгладжує зображення, що призводить до роздуття PDF-виходу.
Герб Каділл

@ dimo414 Натисніть кнопку Office, а потім Налаштування, інші кроки повинні бути тими ж.
nyuszika7h

2
Це новий варіант Word 2010.
harrymc

1
Мені здається, я маю уточнити, оскільки за це набирається стільки голосів - це хороша установка, про яку потрібно знати, але це взагалі не впливає на проблему, яку я маю.
Герб Каділл

1

Схоже, функція масштабування Microsoft Word використовує білінеарну фільтрацію. Це не повинно змінювати саме зображення, а лише те, як воно відображається при збільшеннях, окрім 100%. Те, що ви хочете, - це масштабування найближчого сусіда, але я сумніваюся, що у MS Word є варіант для цього.


0

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

Якщо використовується Вставка / Зображення, то зображення згладжується.
Але якщо хтось заходить у редактор зображень і копіює, а потім вставляє у Word, зображення не згладжується.

Інші можливі шляхи вирішення:

  1. Спробуйте використовувати спеціальну вставку в якості растрової або незалежної растрової карти пристрою.
  2. Не вставляйте зображення. Перейдіть на вкладку "Вставка" / "Група ілюстрацій" / "Зображення" та змініть спадне кнопку "Вставити" на "Посилання на файл". Файл зображень можна оптимізувати для Інтернету, щоб зайняти менше місця.

Хм - це не був мій досвід. Коли я вставляю з MS Paint або Photoshop, я вирівнюю так само, як якщо б я використав Insert Picture from File. Я використовую Word 2010, мені цікаво, чи не в цьому різниця - я не пам'ятаю, щоб у мене була ця проблема, коли я використовував Word 2007.
Herb Caudill

Хм, це нова «особливість» Word 2010? Можливо, Microsofties зрозуміли, що паста не робить "правильної" речі і "виправили" це в Word 2010.
harrymc

3
Що стосується пікселяції скріншоту, ви можете скористатись інструментом для знімання Vista та зберегти файл у форматі PNG, що запобіжить цей шум.
dimo414

@ dimo414: Дякую, дуже корисний натяк.
harrymc

@Herb Caudill: Що станеться, якщо ви спробуєте вставити малюнок у .doc, гарантуючи, що параметри Word / Advanced / Compatibility є "Word 2003"?
harrymc

0

Це, мабуть, найпростіше рішення для масштабування оригінальних зображень до 300dpi або будь-якої роздільної здатності, яку ви використовуєте під час експорту в PDF. Програма для перетворення ImageMagick може це зробити, наприклад.

Оригінальне зображення має ширину 176 пікселів. Якщо ви хочете масштабувати його до 4 дюйма при 300dpi, цільова ширина - 1200 пікселів. Це зробить це:

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

Я переконався, що завжди краще не допускати продуктів Microsoft намагатися думати, що може бути для вас корисним. Завжди краще вирішити це самостійно.


Я вважаю, що PDF-файли мають вбудовану роздільну здатність зображення, тому якщо ви зміните розмір своїх зображень, щоб вони відповідали, то Word, можливо, зможе пропустити крок. На жаль, я боюся, що отриманий розмір PDF може бути нерозумним.
Марк Рансом

-1

Це питання схоже на це

Це стосується стилю обгортання ... встановіть його лише вгорі та внизу. Прочитайте тут .


Ні, зміна параметрів обгортання не має значення.
Герб Каділл

@Herb, ця проблема може вимагати зміни коду на частині 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.