قص صفحات PDF وحساب الأبعاد الجديدة
خطط لقص ملف PDF قبل تعديل المستند نفسه. أدخل العرض والارتفاع الأصليين لكل صفحة مع مربع قص مقاس بنقاط PDF، فتحصل على الأبعاد الجديدة لكل صفحة.
شغّل الأداة مجانًا
تتحقق الحاسبة أيضاً من بقاء كل مستطيل داخل حدود صفحته الأصلية، وبذلك تكتشف الإحداثيات غير الصالحة قبل إرسالها إلى مكتبة PDF أو مسار طباعة أو نظام لمعالجة المستندات. الحساب حتمي ويعطي النتيجة نفسها للمدخلات نفسها، كما يدعم صفحات ذات مقاسات مختلفة ضمن طلب واحد.
صف كل صفحة ومربع قص بنقاط PDF
تقاس صفحات PDF بالنقاط، وتساوي 72 نقطة بوصة واحدة. أدخل العرض والارتفاع الأصليين لكل صفحة، ثم صف المستطيل باستخدام crop_x وcrop_y وcrop_width وcrop_height. يبدأ المحور x من الحافة اليسرى، ويبدأ المحور y من الحافة السفلية، وفق نظام الإحداثيات المعتاد في PDF. يمثل عرض مربع القص وارتفاعه مساحة الصفحة التي ستظل ظاهرة، وليس هامشين مطلوباً طرحهما. على سبيل المثال، يكون المقاس الشائع لصفحة Letter الأمريكية 612 في 792 نقطة. ويناسبها مربع يبدأ عند 36, 54 ويبلغ عرضه 540 وارتفاعه 684، فتكون النتيجة 540 في 684 نقطة. أدرج الصفحات بحسب ترتيبها في المستند. تمنح الاستجابة كل صفحة رقماً وفق هذا الترتيب، مما يسهل ربط الأبعاد المحسوبة بتقرير فحص أو مهمة معالجة لاحقة. ويمكن أن يجمع الطلب نفسه بين صفحات عمودية وأفقية وصفحات بمقاسات مخصصة من دون الحاجة إلى فصلها.
افهم كيفية التحقق من الحدود
يجب أن تكون جميع الأبعاد الأصلية وكل مكونات مربع القص أعداداً منتهية. ويجب أن يكون عرض الصفحة وارتفاعها وعرض مربع القص وارتفاعه أكبر من صفر. يمكن أن تساوي إحداثيات نقطة البداية صفراً، لكنها لا يمكن أن تكون سالبة. تتحقق الحاسبة من الحافة اليمنى بجمع crop_x مع crop_width ومقارنة الناتج بالعرض الأصلي. وتتحقق من الحافة العليا بالطريقة نفسها باستخدام crop_y وcrop_height والارتفاع الأصلي. إذا تجاوزت أي حافة الصفحة المصدر، يفشل الطلب برسالة إدخال غير صالح تحدد رقم الصفحة المعنية. أما ملامسة الحافة الخارجية تماماً فهي صالحة؛ إذ يمكن أن ينتهي المستطيل عند عرض الصفحة أو ارتفاعها بالضبط من دون تجاوزه. هذا الفحص مهم لأن أبعاد المستطيل قد تبدو معقولة، بينما تدفعه نقطة بدايته إلى خارج الصفحة. تفحص الأداة جميع الصفحات، ويؤدي وجود سجل واحد غير صالح إلى إيقاف العملية بدلاً من تقديم نتيجة جزئية يصعب الاعتماد عليها.
استخدم الأبعاد المحسوبة في مسار PDF
تعرض النتيجة المقاس الأصلي ونقطة بداية القص والعرض والارتفاع الجديدين لكل صفحة. لا تعيد الأداة كتابة ملف PDF ولا ترفعه، بل تحسب الإحداثيات التي يستطيع محرر PDF أو إحدى مكتباته تطبيقها وتتحقق منها. يفيد هذا الفصل في معاينة التغييرات، والتحقق من إعدادات أدخلها المستخدمون، وتقدير التخطيط الناتج، أو توحيد التعليمات قبل بدء عملية مستندية مرتفعة التكلفة. لتحويل القيم إلى بوصات، اقسمها على 72، لكن إبقاء القياسات بالنقاط عند العمل مع أدوات PDF يمنع أخطاء التقريب. عندما تشترك صفحات عدة في المقاس وقاعدة القص، كرر القيم لكل صفحة لكي تظل النتيجة مرتبطة بوضوح بترتيب المستند. تحقق قبل التطبيق مما إذا كانت مكتبتك تتوقع x وy والعرض والارتفاع، أم تتوقع إحداثيات اليسار والأسفل واليمين والأعلى. في الحالة الثانية، احسب اليمين بجمع crop_x وnew_width، والأعلى بجمع crop_y وnew_height. سعر API هو $0.002 لكل طلب.
حالات الاستخدام
التحقق من الإعدادات قبل المعالجة
ارفض مهمة المستند مبكراً عندما يتجاوز أي مستطيل مطلوب حدود صفحته الأصلية.
معاينة ملف ذي مقاسات متنوعة
احسب الأبعاد النهائية للصفحات العمودية والأفقية والمخصصة في استجابة مرتبة.
إعداد الإحداثيات لمكتبة PDF
حوّل قياسات الصفحات والقص المتحقق منها إلى مدخلات موثوقة لمرحلة تحرير منفصلة.
الأسئلة الشائعة
هل تعدل هذه الإمكانية ملف PDF؟
لا. إنها تتحقق من الإحداثيات وتحسب الأبعاد الناتجة، ويمكن لأداة PDF أخرى تطبيق القيم.
ما الوحدات التي ينبغي استخدامها؟
استخدم نقاط PDF للأبعاد الأصلية ونقطة البداية وأبعاد القص. تساوي البوصة الواحدة 72 نقطة.
أين تقع نقطة بداية مربع القص؟
يقاس crop_x من الحافة اليسرى، ويقاس crop_y من الحافة السفلية للصفحة الأصلية.
هل يمكن أن يلامس مربع القص حافة الصفحة؟
نعم. يمكن أن ينتهي عند العرض أو الارتفاع الأصلي تماماً، لكن لا يجوز أن يتجاوزهما.
هل يمكن أن يحتوي الطلب على مقاسات مختلفة؟
نعم. لكل صفحة أبعادها الأصلية ومربعها الخاص، لذلك تدعم الأداة المقاسات المختلطة.
ما التكلفة؟
تبلغ تكلفة API مقدار $0.002 لكل طلب، ويمكن إجراء الحساب الحتمي نفسه مجاناً في المتصفح.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/pdf/crop-pages \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pages":[{"width":612,"height":792,"crop_x":36,"crop_y":54,"crop_width":540,"crop_height":684},{"width":842,"height":595,"crop_x":20,"crop_y":15,"crop_width":800,"crop_height":560}]}'const res = await fetch("https://api.kit.forhosting.com/pdf/crop-pages", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pages": [
{
"width": 612,
"height": 792,
"crop_x": 36,
"crop_y": 54,
"crop_width": 540,
"crop_height": 684
},
{
"width": 842,
"height": 595,
"crop_x": 20,
"crop_y": 15,
"crop_width": 800,
"crop_height": 560
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/crop-pages",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pages": [
{
"width": 612,
"height": 792,
"crop_x": 36,
"crop_y": 54,
"crop_width": 540,
"crop_height": 684
},
{
"width": 842,
"height": 595,
"crop_x": 20,
"crop_y": 15,
"crop_width": 800,
"crop_height": 560
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/crop-pages", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pages":[{"width":612,"height":792,"crop_x":36,"crop_y":54,"crop_width":540,"crop_height":684},{"width":842,"height":595,"crop_x":20,"crop_y":15,"crop_width":800,"crop_height":560}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pages":[{"width":612,"height":792,"crop_x":36,"crop_y":54,"crop_width":540,"crop_height":684},{"width":842,"height":595,"crop_x":20,"crop_y":15,"crop_width":800,"crop_height":560}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/crop-pages", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"pages": [
{
"width": 612,
"height": 792,
"crop_x": 36,
"crop_y": 54,
"crop_width": 540,
"crop_height": 684
},
{
"width": 842,
"height": 595,
"crop_x": 20,
"crop_y": 15,
"crop_width": 800,
"crop_height": 560
}
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.crop_pages",
"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 | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |