باستخدام ImageMagick أو GhostScript (أو شيء ما) لتوسيع نطاق PDF لتناسب الصفحة؟
-
23-08-2019 - |
سؤال
لقد كنت أداء رأسي ضد هذا دون جدوى.
أحتاج إلى تقليص بعض ملفات PDF كبيرة للطباعة على صفحة 8.5x11 بوصة (حرف قياسي). يمكن imagemagick / ghostscript التعامل مع هذا النوع من الأشياء، أو أجد الكثير من المتاعب لأنني أستخدم الأداة الخطأ لهذا المنصب؟
فقط الاعتماد على خيار "تقلص إلى الصفحة" في مربعات حوار الطباعة من جانب العميل ليس خيارا، حيث أننا نود أن يكون ذلك سهل الاستخدام للمستخدمين النهائيين.
المحلول
المشكلة في استخدام ImageMagick هي أن تتحول بتنسيق صورة نقطي، وزيادة حجم الملف وتقليل جودة أي عناصر متجهة على صفحاتك.
متعدد التكافؤ سوف يحتفظ بمعلومات ناقل PDF. يحاول:
java -cp Multivalent.jar tool.pdf.Impose -dim 1x1 -paper "8.5x11in" myFile.pdf
لإنشاء ملف إخراج MyFile-Up.PDF
نصائح أخرى
لن تستخدم convert
. وبعد يستخدم GhostScript في الخلفية، ولكن أبطأ بكثير. كنت أستخدم ghostscript مباشرة، لأنه يعطيني أكثر من سيطرة مباشرة أكثر (وأيضا بعض السيطرة على الإعدادات التي يصعب تحقيقها معها convert
). وللتحول إلى العمل لتحويل PDF-TO-PDF، سيكون لديك ghostscript مثبتة على أي حال:
gs \
-o /path/to/resized.pdf \
-sDEVICE=pdfwrite \
-dPDFFitPage \
-r300x300 \
-g2550x3300 \
/path/to/original.pdf
سوف تقوم Ogimemagick بموجي / تحويل الأوامر في الواقع المهمة. كان لدى صفحة Stephen حول الفكرة الصحيحة فقط، لكنك تحتاج إلى تعيين DPI من الملف أيضا، أو لن تحصل على المهمة.
على افتراض أن لديك ملف 300 نقطة في البوصة وعمل النسبة نفسها بالفعل بنسبة 8.5 × 11 سيكون الأمر:
// 300dpi x 8.5 -2550, 300dpi x 11 -3300
convert original.pdf -density "300" -resize "2550x3300" resized.pdf
إذا كانت نسبة الارتفاع مختلفة، فأنت بحاجة إلى القيام ببعض اقتصاص أكثر قليلا.
عملت نهج Ghostscript جيدا بالنسبة لي. (لقد قمت بنقل ملفي من جهاز الكمبيوتر الخاص بي Windows إلى كمبيوتر Linux وأخرجه هناك.) لقد قمت بتغيير صغير واحد في الأمر Ghostscript لأن الأمر تغيير حجم Ghostscript أعلاه يملأ تماما 8.5 صفحة 11 بوصة. لا يمكن طابعتي الطباعة على الحافة، رغم ذلك، فقد فقدت عدة ألليمترات على طول كل حافة صفحة. للتغلب على هذه المشكلة، قمت بتحسين وثيقة PDF الخاصة بي إلى 0.92 من 8.5 كامل بحوالي 11 بوصة. وبهذه الطريقة رأيت كل شيء يتركز على الصفحة وكان له هامش طفيف. لأن 0.92 * (2550x3300) = (2346x3036)، أجريت الأمر التالي Ghostspript:
gs -sDEVICE=pdfwrite \
-dPDFFitPage \
-r300x300 \
-g2346x3036 \
/home/user/path/original.pdf \
-o /home/user/path/resized.pdf