Word mungkin hanya menampilkan gambar yang ditingkatkan dan mengirimkannya dengan cara seperti input printer (saya kira Distiller berfungsi sebagai printer). Jika demikian, maka itu baik untuk printer normal, tetapi tidak efisien untuk printer palsu yang menghasilkan file PDF.
Misalnya pdfLaTeX dengan benar menanamkan gambar dalam file output. Periksa PDF saya yang diunggah ke galeri min.us: Menyertakan gambar dalam dokumen LaTeX
Yang penting adalah apa yang menghasilkan tumpukan PDF yang Anda gunakan. Jika mencoba printer PDF lain, seperti PDFCreator yang hebat dan gratis , tidak memperbaiki masalah, maka Anda harus mencoba menggunakan ekspor PDF khusus, yaitu tidak berfungsi sebagai printer. AFAIK versi Word terbaru memiliki built-in ekspor PDF, jadi jika itu diterapkan dengan benar, maka Anda akan mendapatkan file kecil, berkat penyematan gambar yang digunakan dalam dokumen.
EDIT BESAR
Galeri telah diubah namanya menjadi Embedding gambar PNG di LaTeX vs Word
Saya telah melihat lebih teliti pada saya yang mytest.pdf
dihasilkan oleh pdfLaTeX dan Anda test2.pdf
dihasilkan oleh Word.
mytest.pdf
test2.pdf
Mari kita mulai dengan tanpa kompresi. Jika Anda melihat file yang tidak dikompresi, Anda akan dengan mudah melihat awal aliran gambar ( <<...>>stream
sesuai dengan parameter Lebar dan Tinggi, sama seperti di test.png
, yaitu 176x295), yang diakhiri dengan endstream
tag. Waktu mengintip.
(PERINGATAN pada saat ini pdftk diasumsikan dalam versi 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
Jadi Word memberikan JPEG, bukan PNG pada output internal untuk pemrosesan PDF lebih lanjut. Cuma wow! Hal yang sama mungkin terjadi ketika mengirim output ke printer.
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)
Ini bukan file COM, tetapi juga bukan PNG.
$ du -b test.png test2stream myteststream
57727 test.png
20004 test2stream
155761 myteststream
Anda melihatnya sekarang? Aliran gambar (PNG) dari PDF yang diproduksi oleh pdfLaTeX mungkin merupakan format mentah sederhana (176 * 295 * 3 = 155760, 1 berasal dari baris baru yang berlebihan). Mari kita periksa:
$ convert -depth 8 -size 176x295 rgb:myteststream myteststream.png
Dan kami memiliki gambar asli kami kembali! Tidak, tunggu Tampaknya pdftk 1,41 tidak terkompresi buggy dan gambar hampir sama dengan beberapa kekurangan. Saya memutakhirkan ke pdftk 1.44, tetapi versi ini tidak mendekompresi aliran gambar sama sekali. Lagipula pdftk tidak menampilkan kamus aliran dalam satu baris, jadi ekstraksi di atas menggunakan sed tidak lagi berfungsi, tetapi tidak ada gunanya memperbaikinya sekarang.
Jadi apa yang bisa kita lakukan tentang Word? Tidak banyak methinks. Setidaknya Anda dapat memindahkan gambar yang disematkan dari satu PDF ke PDF lainnya. Saya mengulangi kompresi kedua PDF menggunakan pdftk baru-baru ini, membukanya dalam vim, diganti test2uc.pdf
<<...>>stream...endstream
dengan counterpart dari mytestuc.pdf
, disimpan sebagai test2fixuc.pdf
dan dikompresi ke test2fix.pdf
.
test2fix.pdf
test.pdf
Ini akan menjadi dosa tidak memeriksa PDF besar Anda setelah semua. Ok, saya sudah menyiapkan oneliner lain untuk bermain dengan pdftk 1.44 PDF terkompresi untuk daftar stream gambar dan garis awal mereka dalam file. Jadi saya akan mulai dengan tanpa kompresi test.pdf
.
(PERINGATAN pada saat ini pdftk diasumsikan dalam versi 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
Ada yang benar-benar gila di sini! 6 gambar mentah (tampaknya pdftk kali ini tidak memiliki masalah dalam mengompresnya) mengambil 43444452 byte bersama-sama! Mari kita periksa kembali test2uc.pdf
dan 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
Dalam kedua kasus hanya satu aliran gambar. Kenapa bisa ada lebih banyak dari mereka ?!
$ 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
Gambar terpotong-potong ... Sepertinya semacam perlindungan yang benar-benar bodoh, mungkin diperkenalkan oleh Distiller (dan mungkin bisa dimatikan)? Saya ragu hal yang sama akan diludahi oleh PDFCreator, kecuali itu kata yang melakukan kegilaan yang luar biasa ini ...
testuc-stream1.png dan lainnya (gunakan panah kanan untuk menavigasi)
Kesimpulan
Hal-hal penting adalah:
- Anda dapat melihat dengan jelas, bahwa gambar besar yang dipotong-potong sebenarnya adalah JPEG yang ditingkatkan, jadi hipotesis saya benar,
- karena di PDFCreator Anda mendapatkan juga file besar dalam output, itu adalah Word yang memberikan gambar sangat besar ke printer PDF palsu, dan anggapan saya sebelumnya juga benar.
Fiuh. Investigasi ini membutuhkan waktu. Kata itu adalah sampah.
Penanganan masalah?
Sementara itu beberapa saran diberikan. Biarkan saya berkomentar.
Menggunakan penulis dengan dukungan PDF yang layak seperti LibreOffice (lupakan OpenOffice, sudah usang sekarang) adalah solusi yang baik, kecuali beberapa ketidakmampuan membuat Anda tidak dapat bekerja dengannya.
Menggunakan gambar yang lebih besar dalam kotak yang sama pada halaman juga bukan ide yang buruk, karena bahkan setelah JPEG-izing, artefak akan kurang terlihat.
Grosz saya yang lain menggunakan JPEG dari awal. Dengan begitu Word tidak perlu mengkompres ulang (Anda tidak pernah tahu ...) dan Anda dapat memberikan kualitas JPEG setinggi mungkin. Ada juga kompresi JPEG lossless. Pengembang dari Redmond mungkin mengira itu tidak diperlukan, jadi saya tidak akan terkejut jika Word tidak menangani JPEG seperti itu. Yah, TBH itu tidak didukung secara luas (bahkan di dunia open source), sama seperti pengkodean aritmatika (atau ini situasi yang bahkan lebih buruk dalam kasus pengkodean aritmatika).
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
(Di Windows gunakan 416 alih-alih $(())
ekspansi aritmatika ini tersedia dalam cangkang POSIX)
Saya pikir Mitchell default bagus untuk meningkatkan ukuran, tetapi jika Anda benar-benar menginginkan gambar pixelatic seperti itu, maka pergi dengan Box seperti yang disarankan @ceving. Tentu saja 2 file pertama hanya berguna jika Anda harus (karena alasan tertentu) menggunakan printer PDF palsu.
Saya sudah mengunggah ketiga file.
test-300dpi-mitchell.jpg (426 KB)
test-300dpi-box.jpg (581 KB)
test.jpg (74 KB)
Jika hipotesis saya benar dan Word tidak akan mengkompres ulang gambar JPEG, maka gunakan saja yang terakhir tidak ditingkatkan dan berjalan dengan built-in output PDF, karena memiliki kekurangan lebih sedikit (setidaknya itu menghindari kelas atas yang tidak perlu).