Kiedy wstawiam zrzuty ekranu JPEG do Microsoft Word, wygładza je, zamiast zachowywać oryginalne piksele z mapy bitowej. Kiedy następnie drukuję do formatu PDF (przy użyciu programu Acrobat Distiller), w zależności od moich ustawień próbkowania, dostaję niewyraźne zrzuty ekranu lub bardzo duże rozmiary plików.
Czego chcę:
Chciałbym, aby Word i Acrobat zostawiły bitmapy w spokoju, aby mogły przejść przez proces z nienaruszonymi pikselami. Tak wygląda oryginalny obraz po powiększeniu:
Co dostaję:
Tak wygląda dokument programu Word po wstawieniu tego samego obrazu i powiększeniu. Po wydrukowaniu do pliku PDF wszystkie te dodatkowe piksele powodują utworzenie znacznie większego pliku.
Przykładowe pliki:
- Test.png (56K) Przykładowy plik obrazu zrzutu ekranu
- Test.docx (69K) Plik programu Word zawierający tylko ten obraz
- Test.PDF (9,4 MB) Plik PDF wydrukowany z pliku Word przy użyciu Distillera, z wyłączonym próbkowaniem w dół
- Test2.PDF (98K) Plik PDF wygenerowany za pomocą narzędzia „Zapisz jako PDF” programu Word 2010 (zwróć uwagę na bardzo niską jakość skompresowanego obrazu)
Edycja: To jest z Word 2010 - zaktualizowałem tagi, aby to odzwierciedlić.
Edycja: Potwierdziłem, że OpenOffice nie ma tego problemu. Otworzyłem Test.docx (wspomniany powyżej) i wyeksportowałem go jako plik PDF z OO (wybierając opcję „kompresji bezstratnej” w obszarze Obrazy w opcjach), a obraz przechodzi bez szwanku.
Niestety OpenOffice zmienia formatowanie w bardziej złożonych dokumentach Word, które utworzyłem; więc nie mogę po prostu tworzyć dokumentów w programie Word i używać OO do renderowania plików PDF; Musiałbym całkowicie przejść na OO, co jest większym krokiem, niż jestem teraz gotów zrobić.
źródło
Odpowiedzi:
Słowo może po prostu renderuje przeskalowany obraz i wysyła go w ten sposób jako dane wejściowe drukarki (zakładam, że Distiller działa jak drukarka). Jeśli tak, to jest dobre dla normalnych drukarek, ale nieefektywne dla fałszywych drukarek produkujących pliki PDF.
Na przykład pdfLaTeX poprawnie osadza obraz w pliku wyjściowym. Sprawdź mój plik PDF przesłany do galerii min.us: Osadzanie obrazu w dokumencie LaTeX
Ważne jest to, jakiego stosu plików PDF używasz. Jeśli wypróbowanie innej drukarki PDF, takiej jak świetny i darmowy PDFCreator , nie rozwiąże problemu, powinieneś spróbować użyć dedykowanego eksportu PDF, tj. Nie działając jako drukarka. Najnowsze wersje programu AFAIK mają wbudowany eksport PDF, więc jeśli zostanie poprawnie zaimplementowany, otrzymasz mały plik, dzięki osadzeniu obrazów używanych w dokumencie.
OGROMNA EDYCJA
Nazwa galerii została zmieniona na Osadzanie obrazu PNG w LaTeX vs. Word
Dokładniej przyjrzałem się mojej
mytest.pdf
wygenerowanej przez pdfLaTeX i twojejtest2.pdf
wygenerowanej przez Word.mytest.pdf test2.pdf
Zacznijmy od rozpakowywania. Jeśli spojrzysz na nieskompresowany plik, z łatwością zauważysz początek strumienia obrazu (
<<...>>stream
linia z parametrami Szerokość i Wysokość, tak samo jak wtest.png
, tj. 176x295), który kończy sięendstream
tagiem. Czas na podgląd(OSTRZEŻENIE w tym momencie zakłada się, że pdftk jest w wersji 1.41)
test2.pdf
Tak więc program Word podaje JPEG zamiast PNG na wewnętrznym wyjściu w celu dalszego przetwarzania PDF. Po prostu WOW! To samo może się zdarzyć podczas wysyłania wydruku do drukarki.
test2stream.jpg
mytest.pdf
To nie jest plik COM, ale nie jest to również PNG.
Widzisz to teraz? Strumień obrazu (PNG) z pliku PDF utworzonego przez pdfLaTeX jest prawdopodobnie prostym formatem raw (176 * 295 * 3 = 155760, 1 pochodzi ze zbędnej nowej linii). Sprawdźmy to:
I mamy nasz oryginalny obraz z powrotem! Nie, czekaj. Wygląda na to, że dekompresja pdftk 1.41 jest błędna, a obraz był prawie taki sam z kilkoma wadami. Uaktualniłem do wersji pdftk 1.44, ale ta wersja w ogóle nie dekompresuje strumienia obrazu. Co więcej, pdftk nie wyświetla słownika strumieniowego w jednym wierszu, więc powyższa ekstrakcja za pomocą sed już nie działa, ale teraz nie ma sensu go poprawiać.
Co możemy zrobić z programem Word? Niewiele myśli. Przynajmniej możesz przesadzić osadzony obraz z jednego pliku PDF do drugiego. Powtórzyłem dekompresję obu plików PDF przy użyciu ostatniego pdftk, otworzyłem je w vimie, zastąpiłem
test2uc.pdf
<<...>>stream...endstream
odpowiednikiem zmytestuc.pdf
, zapisałem jakotest2fixuc.pdf
i skompresowałem dotest2fix.pdf
.test2fix.pdf
test.pdf
Grzechem byłoby jednak nie sprawdzanie dużego pliku PDF. Ok, przygotowałem kolejny oneliner do gry z nieskompresowanymi plikami PDF pdftk 1.44, aby wyświetlić strumienie obrazów i ich początkowe linie w plikach. Zacznę od rozpakowywania
test.pdf
.(OSTRZEŻENIE w tym momencie zakłada się, że pdftk jest w wersji 1.44)
Coś tutaj jest naprawdę szalone! 6 nieprzetworzonych zdjęć (najwyraźniej tym razem pdftk nie miało żadnych problemów z ich rozpakowaniem) razem 43444452 bajtów! Sprawdźmy ponownie
test2uc.pdf
imytestuc.pdf
.W obu przypadkach tylko jeden strumień obrazu. Dlaczego do cholery może być ich więcej ?!
Obraz został pocięty na wiele kawałków ... Wygląda to na jakąś głupią ochronę, może wprowadzoną przez Distillera (a może można go wyłączyć)? Wątpię, by to samo wypluł PDFCreator, chyba że to Słowo wykona to niewiarygodne szaleństwo ...
testuc-stream1.png i inne ( nawiguj za pomocą prawej strzałki)
Wniosek
Ważne rzeczy to:
Uff Dochodzenie zajęło trochę czasu. Słowo to śmieci.
Obejścia?
W międzyczasie podano kilka sugestii. Pozwól mi je skomentować.
Używanie programu piszącego z przyzwoitą obsługą plików PDF, takiego jak LibreOffice (zapomnij o OpenOffice, jest już przestarzałe) jest dobrym rozwiązaniem, chyba że niektóre niezgodności uniemożliwiają pracę z nim.
Używanie większego obrazu w tym samym polu na stronie również nie jest złym pomysłem, ponieważ nawet po JPEG, artefakty będą mniej widoczne.
Mój kolejny grosz korzysta z JPEG od samego początku. W ten sposób Word nie powinien go ponownie kompresować (nigdy nie wiesz ...) i możesz zapewnić najwyższą możliwą jakość JPEG. Istnieje również bezstratna kompresja JPEG. Programiści z Redmond prawdopodobnie uważali, że to nie jest potrzebne, więc nie będę zaskoczony, jeśli Word nie będzie obsługiwał takich plików JPEG. Cóż, TBH nie jest powszechnie obsługiwany (nawet w świecie open source), podobnie jak kodowanie arytmetyczne (lub jest to nawet gorsza sytuacja w przypadku kodowania arytmetycznego).
(W systemie Windows użyj 416 zamiast tego
$(())
rozszerzenia arytmetycznego dostępnego w powłokach POSIX)Myślę, że domyślny Mitchell nadaje się do skalowania w górę, ale jeśli naprawdę chcesz takiego pikselicznego obrazu, wybierz Box, jak sugeruje @ceving. Oczywiście pierwsze 2 pliki są przydatne tylko wtedy, gdy musisz (z jakiegoś powodu) używać fałszywych drukarek PDF.
Przesłałem wszystkie trzy pliki.
testowy-mitchell.jpg 300 dpi (426 MB) testowy-box.jpg 300 dpi (581 MB) test.jpg (74 KB)
Jeśli moja hipoteza jest słuszna, a program Word nie skompresuje ponownie obrazu JPEG, skorzystaj z ostatniej nieskalowanej i skorzystaj z wbudowanego pliku wyjściowego PDF, ponieważ ma on mniej niedociągnięć (przynajmniej pozwala uniknąć niepotrzebnej aktualizacji).
źródło
convert
ImageMagick lub XnView. W tym przypadku tracisz jakość, ale można to kontrolować przynajmniej.Otwórz Plik > Ustawienia > Zaawansowane , a następnie w sekcji Rozmiar i jakość obrazu zaznacz opcję Nie kompresuj obrazów w plikach (Zobacz zrzut ekranu, aby zorientować się, gdzie znajduje się ta opcja)
Poniższy obraz to ten sam obraz JPG (przechwytywanie dokumentu powiększone o 400%, aby pokazać różnicę antyaliasingu) wstawiony przed i po aktywowaniu tej opcji:
źródło
Wygląda na to, że funkcja powiększania w programie Microsoft Word używa filtrowania dwuliniowego. Nie powinno to zmieniać samego obrazu, a jedynie sposób wyświetlania go w powiększeniach innych niż 100%. To, czego chcesz, to skalowanie najbliższego sąsiada, ale wątpię, czy MS Word ma na to opcję.
źródło
Powtórzyłem manipulację wstawieniem Test.png do dokumentu w Word 2007 i ku mojemu zdumieniu stwierdziłem, że wynik zależy od mechanizmu, którego się używa.
Jeśli używa się Wstaw / Obraz, obraz jest wygładzany.
Ale jeśli wejdziesz do edytora obrazów i skopiujesz, a następnie wkleisz do programu Word, obraz nie zostanie wygładzony.
Inne możliwe obejścia:
źródło
Jest to prawdopodobnie najłatwiejsze rozwiązanie do skalowania oryginalnych obrazów do 300 dpi lub dowolnej rozdzielczości używanej podczas eksportowania pliku PDF. Program do konwersji ImageMagick może to zrobić na przykład.
Oryginalny obraz ma szerokość 176 pikseli. Jeśli chcesz przeskalować go do 4 cali przy 300 dpi, szerokość docelowa wynosi 1200 pikseli. To zrobi to:
Przekonałem się, że zawsze lepiej jest zapobiegać próbom zastanowienia się, co może być dla ciebie dobre. Zawsze lepiej jest decydować samodzielnie.
źródło
To pytanie jest podobne do tego
Ma to związek ze stylem owijania ... ustaw go tylko na górze i na dole. Przeczytaj tutaj .
źródło
Popraw mnie, jeśli ten komentarz jest zbyt oczywisty lub nieistotny:
Kiedy wklejam wyraźny obraz, powiedzmy, strony tekstu (przetestowałem .bmp i .png) do dokumentu Word 2010 (.docx), wynikiem jest rozmyta wersja oryginału. Wynika to z automatycznego zmieniania rozmiaru i przetwarzania obrazu przez Worda, pozornie niezależnie od odpowiednich ustawień w „Opcjach”. Jeśli jednak to zrobię
wtedy ostry obraz, który wkleiłem, ponownie pojawia się zamiast zamazanego.
Uwaga: jeśli użyję wbudowanego narzędzia fotograficznego w programie Acrobat Reader, a następnie wkleisz bezpośrednio do programu Word, powyższe nie działa. Muszę zrobić zrzut ekranu całego ekranu lub przejść przez IrfanView.
źródło