Foto Telefon ke PDF: Mengapa Fail Menjadi Sangat Besar dan Satu Halaman Terpusing ke Tepi
Imej ke PDF meletakkan setiap foto pada halamannya sendiri pada saiz piksel penuh, jadi tiga JPEG bersaiz telefon 3.2 MB menjadi PDF 41.5 MB, dan satu foto potret keluar pada halaman landskap. Kecilkan foto sebelum menukar, dan putar halaman yang terpusing selepas itu.
Imej ke PDF menukar fail JPEG, PNG, GIF atau BMP menjadi satu PDF, satu imej setiap halaman, mengikut susunan muat naik. Ia tidak mengecilkan apa-apa, dan ia mengabaikan bendera putaran yang ditulis telefon pada foto potret. Dalam satu larian ujian, tiga JPEG 3.2 MB menjadi PDF 41.5 MB, dan foto yang dibenderakan sebagai potret mendarat pada halaman landskap. Kecilkan foto sebelum anda memuat naiknya, dan betulkan halaman yang terpusing selepas itu dengan Putar PDF.
Contoh yang dijalankan
Inputnya ialah tiga JPEG berukuran 4032 Γ 3024 piksel, kira-kira 3.2 MB setiap satu (9.7 MB bersama), iaitu saiz piksel bingkai kamera telefon biasa. Ia imej sintetik dengan hingar halus, jadi ia dimampatkan lebih teruk daripada kebanyakan foto sebenar; anggap setiap saiz di bawah sebagai satu larian pada 2026-10-04 terhadap pelayan setempat yang dibina daripada sumber semasa, bukan janji. Permintaannya:
curl -s -o IMG_0001.pdf \
-F fileInput=@IMG_0001.jpg -F fileInput=@IMG_0002.jpg -F fileInput=@IMG_0003.jpg \
https://pdf123.xyz/api/v1/convert/img/pdf
| Langkah | Hasil |
|---|---|
| 3 JPEG, 4032 Γ 3024 px | 9.7 MB keseluruhan |
| Imej ke PDF | 3 halaman, 41.5 MB, setiap halaman 4032 Γ 3024 pt |
| Mampatkan PDF pada PDF itu | 39.9 MB, kira-kira 4% lebih kecil |
| 3 foto yang sama dikecilkan kepada 1600 px pada sisi panjang dahulu | 1.7 MB keseluruhan |
| Imej ke PDF pada foto yang dikecilkan | 3 halaman, 6.2 MB, setiap halaman 1600 Γ 1200 pt |
| Mampatkan PDF pada PDF itu | 6.2 MB, tidak bertambah kecil |
Keluaran dinamakan mengikut fail pertama, jadi muat turun di atas ialah IMG_0001.pdf.
Mengapa foto 10 MB menjadi 41 MB
JPEG menyimpan foto sebagai blok termampat dengan kehilangan data. Imej ke PDF tidak menyalin bait itu ke dalam PDF. Ia menyahkod setiap imej, menukarnya kepada RGB 8-bit, dan menyimpan piksel mentah dengan pemampatan Flate tanpa kehilangan. Satu bingkai 4032 Γ 3024 ialah 36.6 juta bait RGB (4032 Γ 3024 Γ 3). Flate menurunkannya kepada kira-kira 13.8 MB setiap halaman di sini, masih lebih daripada empat kali ganda JPEG asalnya. Sembilan salinan tiga foto yang sama menghasilkan PDF 124.6 MB.
Itu juga menerangkan baris Mampatkan PDF. Mampatkan PDF memampatkan semula strim dan membungkus objek; ia tidak menurunkan resolusi atau mengekod semula imej. Piksel itu sudah dimampatkan dengan Flate, jadi hanya sedikit yang tinggal untuk dibuang (sebabnya). Jalan ke fail yang lebih kecil ialah piksel yang lebih sedikit sebelum PDF dibina.
Ada kos kedua. Setiap halaman mengambil saiz imejnya, satu piksel kepada satu titik, jadi foto 4032 piksel menghasilkan halaman selebar 56 inci. Pemapar memuatkannya ke tetingkap dan pencetak menskalakannya kepada kertas, tetapi kotak halaman bukan A4 atau Letter. Borang tidak mempunyai pilihan untuk saiz kertas, muat, jenis warna atau auto-putar, dan pelayan tidak membaca medan API fitOption, colorType atau autoRotate.
Kecilkan dahulu, kemudian tukar
Ubah saiz foto sebelum memuat naiknya. Pada Mac, sips -Z 1600 IMG_0001.jpg --out small1.jpg melakukannya. Dengan ImageMagick pada mana-mana sistem:
magick IMG_0001.jpg -resize 1600x1600 -quality 85 small1.jpg
Kedua-duanya menukar foto 4032 Γ 3024 menjadi 1600 Γ 1200. Dalam larian ini tiga JPEG susut daripada 9.7 MB kepada 1.7 MB dan PDF tiga halaman daripada 41.5 MB kepada 6.2 MB. Pada helaian Letter, 1600 piksel merentasi 11 inci ialah kira-kira 145 dpi: boleh dibaca untuk borang yang difoto, kasar untuk cetakan kecil. Pilih saiz berdasarkan teks terkecil yang perlu anda baca, bukan hanya berdasarkan sasaran saiz fail.
Saiz penting dua kali kerana alat yang mengikutinya juga ada had. Badan satu permintaan dihadkan kepada 100 MiB. PDF 124.6 MB di atas ditolak dengan 413 (payload_too_large) apabila dihantar kepada Mampatkan PDF. Lihat When a Large PDF Upload Is Rejected untuk jalan penyelesaiannya.
Halaman yang terpusing ke tepi
Banyak telefon menyimpan foto potret sebagai piksel landskap dan menambah teg orientasi EXIF yang menyuruh pemapar memutarnya. Aplikasi foto biasanya mematuhi teg itu. Imej ke PDF tidak membacanya: JPEG 1600 Γ 1200 yang bertag orientasi 6 (putar 90Β° ikut arah jam) menghasilkan halaman landskap 1600 Γ 1200.
Pembetulannya ialah Putar PDF: masukkan nombor halaman, di sini 1, dan sudut 90. Hasilnya mempunyai /Rotate 90 ditetapkan pada halaman itu, jadi pemapar menunjukkannya tegak. Gunakan 270 untuk foto yang bertag sebaliknya (orientasi 8) dan 180 untuk yang terbalik (orientasi 3); hanya orientasi 6 yang diuji di sini. Putar PDF menetapkan sudut mutlak pada halaman dan bukan menambah pada sudut semasa, dan ia tidak mengekod semula imej. Jika anda tidak mahu membetulkan halaman satu demi satu, putar foto dalam aplikasi foto anda dan simpan salinan sebelum menukar.
Apa yang akan ditolak oleh alat ini
- HEIC dan format lain. Halaman menerima
.png,.jpg,.jpeg,.gifdan.bmp. Fail HEIC sebenar memulangkan 400,unsupported_file_type; eksport sebagai JPEG dahulu. - Fail yang bukan imej. Memuat naik PDF ke titik akhir ini memulangkan 400 yang sama dengan mesej "The file is not a supported image."
- SVG. Fail SVG mendapat 400 yang sama.
- Teks yang boleh dicari. Teks dalam halaman yang difoto kekal sebagai piksel. OCR memulangkan teks Markdown; ia tidak menambah lapisan teks pada PDF ini (cara ia berfungsi).
- Ketelusan. Imej ditukar kepada RGB dan saluran alfa dibuang.
Semak sebelum menghantar
Buka PDF dan kira halaman berbanding foto, mengikut susunan. Susunan halaman ialah susunan muat naik; dalam ujian, memuat naik PNG potret sebelum yang landskap menghasilkan halaman potret dahulu. Kemudian lihat saiz fail sebelum melampirkannya.