صور الهاتف إلى PDF: لماذا يخرج الملف ضخماً وتنقلب صفحة على جنبها
تضع أداة صور إلى PDF كل صورة في صفحة مستقلة بحجمها الكامل بالبكسل، فصارت ثلاث صور JPEG بمقاس الهاتف، حجم كل منها 3.2 MB، ملف PDF بحجم 41.5 MB، وخرجت صورة عمودية على صفحة أفقية. صغّر الصور قبل التحويل ودوّر الصفحة المنحرفة بعده.
تحوّل أداة صور إلى PDF ملفات JPEG أو PNG أو GIF أو BMP إلى ملف PDF واحد، صورة واحدة في كل صفحة، بترتيب الرفع. ولا تصغّر شيئاً، وتتجاهل علامة التدوير التي تكتبها الهواتف في الصور العمودية. وفي تشغيل اختباري واحد عادت ثلاث صور JPEG حجم كل منها 3.2 MB على شكل ملف PDF بحجم 41.5 MB، ووقعت صورة موسومة بأنها عمودية على صفحة أفقية. صغّر الصور قبل رفعها، وأصلح الصفحة المنحرفة بعدها بأداة التدوير.
المثال التطبيقي
كان المدخل ثلاث صور JPEG بمقاس 4032 × 3024 بكسل، نحو 3.2 MB لكل منها (9.7 MB معاً)، وهو مقاس بكسلات إطار كاميرا هاتف نموذجي. وهي صور اصطناعية فيها ضجيج دقيق، فتُضغط أسوأ من أغلب الصور الحقيقية؛ فاعدّ كل حجم أدناه نتيجة تشغيل واحد بتاريخ 2026-10-04 على خادم محلي مبني من المصدر الحالي، لا وعداً. والطلب:
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
| الخطوة | النتيجة |
|---|---|
| 3 صور JPEG، 4032 × 3024 بكسل | 9.7 MB في المجموع |
| صور إلى PDF | 3 صفحات، 41.5 MB، مقاس كل صفحة 4032 × 3024 نقطة |
| ضغط PDF على ذلك الملف | 39.9 MB، أصغر بنحو 4% |
| الصور الثلاث نفسها بعد تصغيرها إلى 1600 بكسل على الضلع الطويل | 1.7 MB في المجموع |
| صور إلى PDF على الصور المصغّرة | 3 صفحات، 6.2 MB، مقاس كل صفحة 1600 × 1200 نقطة |
| ضغط PDF على ذلك الملف | 6.2 MB، دون تصغير |
يُسمّى الناتج باسم الملف الأول، فالملف المنزَّل أعلاه هو IMG_0001.pdf.
لماذا تصير 10 MB من الصور 41 MB
يخزّن JPEG الصورة كتلاً مضغوطة بفقد. ولا تنسخ أداة صور إلى PDF تلك البايتات إلى الملف. إنها تفك ترميز كل صورة وتحوّلها إلى RGB بعمق 8 بت وتخزّن البكسلات الخام بضغط Flate دون فقد. إطار واحد بمقاس 4032 × 3024 يساوي 36.6 مليون بايت من RGB (4032 × 3024 × 3). وأنزله Flate هنا إلى نحو 13.8 MB للصفحة، وهو أكثر من أربعة أضعاف حجم JPEG الذي جاء منه. وتسع نسخ من الصور الثلاث نفسها أعطت ملف PDF بحجم 124.6 MB.
وهذا يفسّر أيضاً صفوف الضغط. يعيد ضغط PDF ضغط التدفقات ويجمّع الكائنات؛ ولا يخفض دقة الصور ولا يعيد ترميزها. والبكسلات مضغوطة أصلاً بـ Flate، فلا يبقى ما يُزال كثيراً (السبب). والطريق إلى ملف أصغر هو بكسلات أقل قبل بناء PDF.
وهناك كلفة ثانية. تأخذ كل صفحة مقاس صورتها، بكسل واحد لكل نقطة، فصورة بعرض 4032 بكسل تعطي صفحة عرضها 56 بوصة. ويلائمها القارئ مع النافذة وتقيسها الطابعات على الورق، لكن صناديق الصفحة ليست A4 ولا Letter. وليس في النموذج خيار لمقاس الورق أو الملاءمة أو نوع اللون أو التدوير التلقائي، ولا يقرأ الخادم حقول API fitOption وcolorType وautoRotate.
صغّر أولاً ثم حوّل
غيّر مقاس الصور قبل رفعها. على Mac يفعل ذلك sips -Z 1600 IMG_0001.jpg --out small1.jpg. ومع ImageMagick على أي نظام:
magick IMG_0001.jpg -resize 1600x1600 -quality 85 small1.jpg
كلاهما يحوّل صورة 4032 × 3024 إلى 1600 × 1200. وفي هذا التشغيل نزلت صور JPEG الثلاث من 9.7 MB إلى 1.7 MB، ونزل ملف PDF ذو الصفحات الثلاث من 41.5 MB إلى 6.2 MB. وعلى ورقة Letter، 1600 بكسل على 11 بوصة تساوي نحو 145 dpi: مقروءة لاستمارة مصوَّرة، وخشنة للخط الصغير. فاختر المقاس بحسب أصغر نص تحتاج إلى قراءته، لا بحسب حجم الملف المستهدف وحده.
والحجم مهم مرتين لأن الأدوات اللاحقة لها سقف أيضاً. جسم الطلب الواحد محدود بـ 100 MiB. وملف PDF بحجم 124.6 MB أعلاه رُفض بـ 413 (payload_too_large) عند إرساله إلى ضغط PDF. وللالتفاف على ذلك راجع حين يُرفَض رفع ملف PDF كبير.
الصفحة المنحرفة
تخزّن هواتف كثيرة الصورة العمودية على هيئة بكسلات أفقية وتضيف وسم اتجاه EXIF يطلب من القارئ تدويرها. وتطيع تطبيقات الصور الوسم عادةً. أما صور إلى PDF فلا تقرؤه: صورة JPEG بمقاس 1600 × 1200 موسومة بالاتجاه 6 (تدوير 90 درجة باتجاه عقارب الساعة) أنتجت صفحة أفقية بمقاس 1600 × 1200.
والحل هو تدوير PDF: أدخل رقم الصفحة، وهو هنا 1، وزاوية 90. وفي الناتج ضُبط /Rotate 90 على تلك الصفحة، فيعرضها القارئ منتصبة. استخدم 270 للصور الموسومة بالاتجاه الآخر (الاتجاه 8) و180 للمقلوبة (الاتجاه 3)؛ والذي اختُبر هنا هو الاتجاه 6 فقط. يضبط التدوير زاوية مطلقة على الصفحة ولا يضيف إلى الزاوية الحالية، ولا يعيد ترميز الصورة. وإن كنت لا تريد إصلاح الصفحات واحدة واحدة، فدوّر الصورة في تطبيق الصور واحفظ نسخة قبل التحويل.
ما سترفضه هذه الأداة
- HEIC وصيغ أخرى. تقبل الصفحة
.pngو.jpgو.jpegو.gifو.bmp. ملف HEIC حقيقي أعاد 400،unsupported_file_type؛ فصدّره بصيغة JPEG أولاً. - ملف ليس صورة. رفع ملف PDF إلى نقطة النهاية هذه أعاد 400 نفسه مع الرسالة "The file is not a supported image."
- SVG. ملف SVG حصل على 400 نفسه.
- النص القابل للبحث. النص في صفحة مصوَّرة يبقى بكسلات. تعيد OCR إلى Markdown نص Markdown؛ ولا تضيف طبقة نصية إلى ملف PDF هذا (كيف تعمل).
- الشفافية. تُحوَّل الصور إلى RGB وتُسقط قناة ألفا.
افحص قبل أن ترسل
افتح ملف PDF وعدّ الصفحات مقابل الصور بالترتيب. ترتيب الصفحات هو ترتيب الرفع؛ وفي اختبار أنتج رفع PNG عمودي قبل PNG أفقي الصفحة العمودية أولاً. ثم انظر إلى حجم الملف قبل إرفاقه.