ادمج ملفات PDF عبر الإنترنت بالترتيب الذي تختاره
تجمع أداة دمج ملفات PDF مرجعين أو أكثر في مستند واحد قابل للتنزيل، مع الالتزام التام بالترتيب الذي تحدده.
شغّل الأداة مجانًا
تعمل هذه الأداة داخل متصفحك — مجانًا، ولا تُرسل بياناتك إلى أي خادم
وتعرض كذلك العدد الإجمالي لصفحات الملف النهائي، كي تتمكن من التحقق من النتيجة داخل سير عمل آلي. العملية حتمية، ولا تستخدم الشبكة أو أي نموذج خارجي، وترفض الطلبات الناقصة قبل معالجتها. استخدمها عندما يلزم تحويل مستندات أُنشئت بصورة منفصلة إلى تسليم موثوق، أو مادة أرشيفية، أو ملف تقديم، أو تنزيل واحد للعميل.
رتب كل ملف مصدر وفق التسلسل المطلوب
ابدأ بجمع مراجع PDF التي يجب أن تدخل في المستند النهائي. موضع كل مرجع مهم، إذ تأتي جميع صفحات الملف الأول قبل صفحات الملف الثاني، ويستمر الترتيب نفسه حتى نهاية القائمة. يناسب ذلك الحزم التي يحمل تسلسلها معنى، مثل صفحة الغلاف ثم العقد والملاحق وصفحة التوقيع. راجع القائمة قبل تشغيل الدمج، لأن الأداة لا تستنتج ترتيباً من أسماء الملفات أو بياناتها الوصفية أو محتواها. يلزم تقديم ملفين على الأقل، ويجب أن يحتوي كل مرجع على بيانات PDF قابلة للقراءة. إذا كان نظامك ينشئ القائمة آلياً، فطبّق قواعد العمل صراحة عند تحديدها، ولا تعتمد على ترتيب المجلد أو وقت الرفع أو ترتيب المفاتيح العارض.
تعرف إلى طريقة معالجة الصفحات والنتيجة
تقرأ الأداة كائنات الصفحات في كل مصدر، وتحافظ على أبعادها ومحتواها، ثم تنشئ ملف PDF جديداً له شجرة صفحات وجدول مراجع خاصان به. لا تستخدم خدمة تحويل أو عشوائية أو التاريخ الحالي، ولذلك تنتج المدخلات المتطابقة بالترتيب نفسه نتيجة متطابقة. تتضمن الاستجابة ملف PDF المدمج، وعدد الملفات، ومجموع الصفحات المقبولة فعلياً. تدعم النسخة التجريبية عمداً الصفحات المستقلة التي لا تعتمد على موارد خارجية، وترفض البنى التي لا تستطيع حفظها بأمان. يمنع ذلك تسليم مستند يبدو صالحاً بينما تفتقد صفحاته خطوطاً أو رسومات. عند رفض مصدر، راجع طريقة إنشائه أو وحّد بنيته قبل إعادة المحاولة.
تحقق من المستند النهائي وأتمت استخدامه
بعد نجاح العملية، قارن total_page_count بالقيمة التي يتوقعها سير عملك. فإذا كانت الحزمة تضم اتفاقية من صفحتين وملحقاً من أربع صفحات وصفحة توقيع واحدة، فيجب أن تعرض سبع صفحات. يكشف هذا الفحص البسيط أي مصدر مفقود قبل الأرشفة أو الإرسال أو التوقيع. ويوفر الحقل file_count نقطة تحقق ثانية للأنظمة التي تعرف عدد المكونات المنتظر. وبما أن العملية نقية وحتمية، يمكنك إعادة المحاولة من دون تغيير الترتيب أو النتيجة. تبلغ كلفة الأتمتة عبر API مقدار $0.002 لكل طلب. احتفظ بالملفات الأصلية حتى تأكيد الاستلام، واختر اسماً واضحاً للملف النهائي، وسجل معرفات المراجع المرتبة بدلاً من محتوى PDF الكامل عند الحاجة إلى سجل تدقيق.
حالات الاستخدام
إعداد حزمة عقد متكاملة
ادمج الاتفاقية وملاحقها وصفحة التوقيع وفق الترتيب المعتمد، ثم تحقق من العدد النهائي للصفحات.
توفير تنزيل واحد للعميل
اجمع خطاباً وفاتورة ومستندات داعمة ليحصل العميل على ملف PDF منظم بدلاً من عدة مرفقات.
تحضير مادة للإيداع الأرشيفي
ادمج التقارير المنشأة منفردة في مادة حفظ واحدة، وسجل العدد النهائي للملفات والصفحات.
الأسئلة الشائعة
كم ملف PDF يلزم لعملية الدمج؟
يلزم مرجعان على الأقل. وتؤدي القائمة الفارغة أو الملف الواحد أو أي قيمة ليست قائمة إلى خطأ في الإدخال.
هل ترتيب قائمة الإدخال مهم؟
نعم. تعالج الملفات من الأول إلى الأخير، وتوضع جميع صفحات كل ملف قبل صفحات الملف الذي يليه.
كيف يُحسب العدد الإجمالي للصفحات؟
يعد المحلل الصفحات المقروءة والمقبولة من كل مصدر، ثم يعيد مجموعها في total_page_count.
ما كلفة الدمج الآلي؟
يكلف كل طلب API مقدار $0.002. ولا توجد رسوم إضافية معلنة لكل صفحة في هذه القدرة.
هل تُتجاهل بنى PDF غير المدعومة؟
لا. يرفض المحلل التجريبي أي بنية لا يستطيع حفظها بأمان، حتى لا يقدم نتيجة ناقصة.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/pdf/merge-files \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"files":["https://ejemplo.com/archivo.bin","https://ejemplo.com/archivo-2.bin"]}'const res = await fetch("https://api.kit.forhosting.com/pdf/merge-files", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"files": [
"https://ejemplo.com/archivo.bin",
"https://ejemplo.com/archivo-2.bin"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/merge-files",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"files": [
"https://ejemplo.com/archivo.bin",
"https://ejemplo.com/archivo-2.bin"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/merge-files", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"files":["https://ejemplo.com/archivo.bin","https://ejemplo.com/archivo-2.bin"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"files":["https://ejemplo.com/archivo.bin","https://ejemplo.com/archivo-2.bin"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/merge-files", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"files": [
"https://ejemplo.com/archivo.bin",
"https://ejemplo.com/archivo-2.bin"
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.merge_files",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 25 |
max_pages | 200 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |