تطبيق سطر الأوامر لتحويل ملفات SWF إلى PDF أو SVG. يختلف هذا البرنامج عن البدائل الحالية من خلال حقيقة أنه يهدف صراحة إلى تحويل الملفات الخلفية التي كانت في الأصل في PDF (أو تنسيقات ناقلات أخرى) وتم تحويلها إلى SWF باستخدام برامج مثل SWF-Tools 'PDF2SWF أو adobe Indesign.
على هذا النحو ، يتم دعم مجموعة فرعية فقط من مواصفات SWF ، مع عدم وجود دعم للرسوم المتحركة. انظر القيود لمزيد من التفاصيل. يمكن تحويل الملفات الثابتة فقط. على سبيل المثال ، يمكن استخدام هذا البرنامج لتحويل كتاب يتكون من ملف SWF واحد لكل صفحة.
لتقليل حجم ملف الإخراج ، تتوفر العديد من الميزات:
يمكن العثور على أحدث إصدار ضمن قسم الإصدارات. مطلوب Java 8 أو الأحدث لتشغيل هذا البرنامج. يجب أن يكون البناء نفسه قادرًا على التشغيل على جميع منصات سطح المكتب.
يمكن تشغيل ملف الجرة باستخدام الأمر التالي:
java -jar swf-convert.jar [main options] <output format> <input files> [output options]
يمكن أن تأخذ أيضًا ملف تكوين:
java -jar swf-convert.jar @config.txt
يمكن تحديد ملفات أو مجلدات إدخال متعددة. يتم إنشاء مجموعة ملفات لكل ملف أو مجلد محدد. ستتطلب بعض الحجج أن يكون لها نفس عدد الوسائط لأن هناك مجموعات إدخال.
يوصى باستخدام -Xmx لزيادة حجم الكومة عند تحويل مجموعات الإدخال الكبيرة (> 1000 ملف) نظرًا لأن البرنامج يستخدم الكثير من الذاكرة ، خاصة بالنسبة لنقطة إطار PDF. ما يصل إلى 10 جيجابايت مطلوب في حالتي ...
للاستخدام بدلاً من [main options] في الأمر أعلاه.
-h ، --help : عرض رسالة مساعدة للبرنامج.-v ، --version : عرض اسم الإصدار.--log <level> : تعيين الحد الأدنى من مستوى السجل لإظهاره في stdout (OFF: 0 ، fatal: 1 ، error: 2 ، Warn: 3 ، info: 4 ، debug: 5 ، all: 6). تتم كتابة سجلات جميع المستويات أيضًا إلى ~/swfconvert/logs .-s ، --silent : لا تعرض التقدم أثناء التحويل. للاستخدام بدلاً من [output options] في الأمر أعلاه. مشترك من قبل جميع تنسيقات الإخراج.
-h ، --help : عرض رسالة مساعدة لتنسيق الإخراج.-o ، --output <path> [paths] : ملفات الإخراج أو الدلائل. يجب أن يكون هناك ما يصل إلى مجموعات ملفات الإدخال. بشكل افتراضي ، يتم كتابة الإخراج إلى نفس المسار مثل الإدخال. في حالة تحديد الملفات ، يجب أن يكون لديهم نفس امتداد تنسيق الإخراج المطلوب.-t ، --tempdir <path> : دليل مؤقت يستخدم للملفات الوسيطة. دليل Temp الافتراضي هو نفسه دليل الإدخال. تتم إزالة ملفات Temp تلقائيًا بعد التحويل ، ما لم يتم تحديدها على خلاف ذلك.-e ، --ignore-empty : تجاهل الإطارات الفارغة ، وليس توليد الإخراج لهم. -g ، --dont-group-fonts : تستخدم لتعطيل تجميع الخطوط (دمج الخطوط المتوافقة في خط واحد).--keep-font-names : تستخدم للحفاظ على أسماء الخطوط الأصلية بدلاً من استخدام أسماء عامة. --keep-duplicate-images -تستخدم للحفاظ على الصور مكررة مع نفس البيانات الثنائية.--image-format <format> : يمكن أن يكون التنسيق لاستخدامه في الصور ، واحد من default ، jpg أو png . الافتراضي هو default ، وفي حالة استخدام تنسيق PNG لعلامات definebitslossless وسيتم استخدام تنسيق JPEG لعلامات definebitsjpeg. العلامات.--jpeg-quality <quality> : جودة صورة JPEG بين 0 و 100. الافتراضي هو 75. --downsample-images : تستخدم لخفض الصور للحد من كثافة الإخراج.--downsample-filter <name> : يمكن أن يكون التصفية المستخدمة في صور Downsample ، واحدة من fast ، bell ، bicubic ، bicubichf ، box ، bspline ، hermite ، lanczos3 ، mitchell أو triangle . الافتراضي هو lanczos3 .--downsample-min-size <size> : الحد الأدنى للحجم بالبكسلات التي يمكن أن يتم تخطي الصور من أو من أو. يجب أن يكون ما لا يقل عن 3 بكسل ، الافتراضي هو 10 بكسل.--max-dpi <dpi> : إذا كانت الصور المنخفضة ، فإن الحد الأقصى لكثافة الصورة المسموح بها. الافتراضي هو 200 نقطة في البوصة. للاستخدام بدلاً من [output options] في الأمر أعلاه ، مع تنسيق إخراج pdf . سيؤدي إخراج PDF إلى إنتاج صفحة واحدة لكل إطار. تتم كتابة إطارات جميع الملفات في مجموعة إلى نفس ملف الإخراج.
--no-compress : يستخدم لتعطيل ضغط PDF الإخراج.--metadata <file> [files] : ملفات تعريف metadata json المستخدمة لكل مجموعة ملفات الإدخال. استخدم Underscore _ لتطبيق أي بيانات تعريف لمجموعة معينة. يجب أن يكون هناك العديد من القيم كما توجد مجموعات إدخال. انظر هذا القسم لمزيد من المعلومات حول مخطط JSON.--dont-optimize-page-labels : يستخدم لتعطيل تحسين الملصقات (إذا تم تعيينه في البيانات الوصفية). --rasterization-enabled : تستخدم لتمكين نقطية من الإطارات المعقدة.--rasterization-threshold <threshold> : الحد الأدنى من تعقيد ملف الإدخال المطلوب لأداء النقطية ، في وحدات تعسفية (إلى حد ما). الافتراضي هو 100000. يجب ضبطها يدويًا لمعرفة أي نقطية تنتج ملفات أصغر.--rasterization-dpi <dpi> : الكثافة في DPI لاستخدامها في نقط الإطارات إذا تم تمكين النقطية. الافتراضي هو 200 نقطة في البوصة.--rasterization-format : تنسيق الصور لاستخدامه في الإطارات النافذة ، إما jpg أو png . الافتراضي هو jpg .--rasterization-jpeg-quality : جودة صورة JPEG من أجل النقطية ، بين 0 و 100. الافتراضي هو 75. للاستخدام بدلاً من [output options] في الأمر أعلاه ، مع تنسيق إخراج svg . ستنتج SVG ملفًا واحدًا لكل إطار إدخال.
-p ، --pretty : تستخدم لطباعة الإخراج الجميل SVG. هذا يعطل أيضًا عددًا من التحسينات لزيادة قابلية القراءة.--svgz : يستخدم للإخراج بتنسيق SVGZ (ضغط GZIP).--no-prolog : تستخدم لحذف مقدمة XML.--precision : دقة مسار SVG ، والموضع ، وقيم الأبعاد. الافتراضي هو 1.--transform-precision : دقة من قيم تحويل SVG. الافتراضي هو 2.--percent-precision : دقة قيم نسبة SVG. الافتراضي هو 2.--images-mode <mode> : يتحكم في كيفية تضمين الصور في SVG ، يمكن أن يكون أحدها من external (كملفات) أو base64 (مضمنة كـ BASE64 مشفرة). الافتراضي external .--fonts-mode <mode> : التحكم في كيفية تضمين الخطوط في SVG ، يمكن أن تكون واحدة من external (مثل ملفات TTF) ، base64 (مضمن كـ BASE64 ENCODLS) أو none (بدون خطوط ، استخدام مسارات).عندما لا يتم تضمين الصور والخطوط ، يتم وضع الملفات في نفس الدليل مثل الإخراج.
للاستخدام بدلاً من [output options] في الأمر أعلاه ، مع تنسيق إخراج ir . سوف ينتج IR ملف JSON واحد لكل إطار إدخال.
عند تحويل SWF إلى تنسيق الإخراج المختار ، يقوم البرنامج أولاً بتحويل التمثيل الوسيط الذي يشبه SWF TOA SVG من أجل تجريد الصعوبات التي يقدمها تنسيق SWF. لأغراض تصحيح الأخطاء ، من الممكن إخراج هذا الأشعة تحت الحمراء كهياكل JSON. الصور والخطوط مكتوبة كملفات.
-p ، --pretty : تستخدم لطباعة الإخراج جميلة json.--indent-size <size> : حجم المسافة البادئة المستخدمة إذا كانت طباعة جميلة.--y-direction : اتجاه المحور ص ، إما up أو down . الافتراضي هو ما يصل. للاستخدام بدلاً من [output options] في الأمر أعلاه.
-DkeepFonts ، -DkeepImages : يستخدم للحفاظ على صورة مؤقتة وملفات الخطوط.-DparallelSwfDecoding : فك تشفير ملف SWF.-DparallelSwfConversion : التحويل إلى التمثيل المتوسط.-DparallelImageCreation : إنشاء ملفات الصور.-DparallelFrameRendering : تقديم من الأشعة تحت الحمراء إلى تنسيق الإخراج.-DdrawShapeBounds : لعلامات التعريف.-DdrawTextBounds : للحصول على علامات DIDEETEXT.-DdrawClipBounds : لعلامات PlaceObject مع عمق القطع.-DdebugLineWidth=<width> : عرض خط الحدود في Twips ، الافتراضي هو 20 Twips.-DdebugLineColor=<color> : لون خط الحدود ، الافتراضي خضراء. (اللون هو #rrggbb أو #aarrggbb Color)-DdisableClipping : تعطيل القطع.-DdisableBlending : تعطيل المزج باستثناء وضع مزيج ألفا.-DdisableMasking : تعطيل وضع مزيج ألفا.-DframePadding : حشوة لإضافة الإطارات في بوصة.-DfontScale2=[<sx>,<sy>,<usx>,<usy>] : للحصول على علامات DefineFont2.-DfontScale3=[<sx>,<sy>,<usx>,<usy>] : للحصول على علامات DefineFont3.-DframeSize=[<width>,<height>] : إذا تم تعيين حجم الإطار المحدد في SWF ، لجميع الإطارات. الأبعاد في بوصة.-DbitmapMatrixOffset : إزاحة إضافية لاستخدامها في مصفوفة ملء Bitmap على علامات الشكل. الافتراضي هو [0 ، 0].-DignoreGlyphOffsetsThreshold=<threshold> : العتبة التي يتم بموجبها تجاهل تطورات Glyph المخصصة لعلامات Definetext ، في وحدات الفضاء Glyph (1 Em = 1024 وحدات الفضاء Glyph). تستخدم لتقليل حجم ملف الإخراج. الافتراضي هو 32.-DrecursiveFrames : إذا تم تعيينها ، فإن الإطارات الموجودة في العفاريت تصبح إطارات ذات مستوى أعلى ، متكررة. خلاف ذلك ، يتم استخدام إطارات المستوى الأعلى فقط (افتراضي).ضع في اعتبارك أن هذه الخيارات مخصصة للاستخدام المتقدم أو لأغراض تصحيح الأخطاء. على خلاف ذلك ، تشمل الاستخدامات الشائعة:
-DignoreGlyphOffsetsThreshold=0 : حافظ على كل التقدم الأصلي الأصلي.-DfontScale2=[0.05, 0.05, 20, -20] : مقياس الخطوط المستخدم لتحويل الملفات المصنوعة من أدوات SWF.-DkeepFonts و -DkeepImages : استخراج الخطوط أو الصور. 1. PDF إلى SWF والعودة.
هنا يتم تحويل PDF تعسفي مع 92 صفحة إلى ملفات SWF مع SWF-Tools 'PDF2SWF:
pdf2swf -o pages/%.swf -z input.pdf
والنتيجة هي 92 ملف SWF المسمى 1.SWF إلى 92.SWF في دليل pages . الآن دعنا نقوم بتحويلهم إلى ملف PDF واحد باستخدام SWF-Convert:
java -jar swfconvert.jar pdf pages/ -o report.pdf
--image-format jpg --ignore-empty
-DfontScale2=[0.05,0.05,20,-20]
بالإضافة إلى ذلك ، سنتجاهل الإطارات الفارغة ، ونستخدم صور JPG فقط ، وسنستخدم خيار مقياس الخط الخاص المطلوب لأدوات SWF. في بضع ثوان ، يتم إنشاء ملف report.pdf . تم إنشاء 40 خطًا من 719 الموجود في جميع ملفات الإدخال ، وتمت إزالة 333 صورة مكررة من 344 صورة!
2. SVG المكتفية ذاتيا
يتم تحويل ملف SWF مع إطار واحد إلى SVG:
java -jar swfconvert.jar --log 4
svg input.swf -o output.svg
--downsample-images --max-dpi 30 --image-format jpg
--images-mode base64 --fonts-mode none
--transform-precision 2 --no-prolog
يتم تضمين الصور ويتم استخدام المسارات بدلاً من الخطوط. يتم أيضًا زيادة الدقة لسمة transform لتجنب التقريب مع fonts-mode none . لتجنب جعل SVG كبيرًا جدًا ، يتم تخطي الصور أيضًا.
يمكن لـ SWF-Convert تحويل الملفات الثابتة فقط ، مع عدم وجود دعم للرسوم المتحركة أو الإجراءات. تنشأ معظم القيود الأخرى من حقيقة أنه لم يكن لدي أي بيانات اختبار لاختبار بعض الميزات ، لذلك اخترت تطبيقًا كسولًا. فيما يلي قائمة مفصلة بالقيود الحالية.
ستؤدي كل هذه القيود تقريبًا إلى إلقاء استثناء ، وسوف يفشل التحويل. إذا كان لديك حالة استخدام في أي وقت تحتاج إلى دعم لأحد ما سبق ، فيرجى فتح مشكلة وتقديم بيانات الاختبار المطلوبة ، سأبذل قصارى جهدي لتنفيذها. مرة أخرى ، تم تنفيذ هذه الأداة بتكاسل لتغطية حالة الاستخدام الخاصة بي ولا شيء أكثر من ذلك. سيسمح المزيد من بيانات الاختبار بالتأكيد بملء الثقوب.
عندما أقول بيانات الاختبار ، أقصد ملفات SWF التي يمكن تحويلها والنتيجة بصريًا مع الأصل. للأسف لم أقضي الوقت في تنفيذ الاختبارات الآلية التي من شأنها أن تفعل ذلك.
تم تصميم المشروع باستخدام Gradle ، والذي يمكن تشغيله مع:
./gradlew <tasks> [options]
المهام المفيدة هي:
clean : نتائج البناء النظيفةbuild : Build Projectdetekt : Run Detekt analysis on Projectapp:dist : إخراج جرة الدهون للتطبيق app/build/libsapp:run : تشغيل البرنامج ، باستخدام خصائص من dev.properties ملف:app-test-working-dir : العمل DIR للاستخدامapp-test-args : خيارات للاستخدام جميع المساهمات موضع ترحيب. يرجى قراءة إرشادات المساهمة.
عرض ملف CHANGELOG.md للحصول على ملاحظات إصدار مفصلة.
تم ترخيص هذا البرنامج بموجب LGPL V3 ، راجع ملف الترخيص لمزيد من التفاصيل. يستخدم رمزًا معدلاً للمكتبات التالية ، والتي يمكن العثور عليها في دليل libsrc :
تستخدم المكتبات الأخرى أيضًا: