حذف بيانات PDF الوصفية
أرسل البيانات الوصفية المقروءة من ملف PDF، مثل Title وAuthor وCreator وCreationDate ورقم تتبع داخلي، فتعود فارغة مع قائمة مرتبة بالأسماء الخمسة التي حُذفت. لا يُعدَّل ملف PDF نفسه. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
تعمل هذه الأداة داخل متصفحك — مجانًا، ولا تُرسل بياناتك إلى أي خادم
احذف بيانات PDF الوصفية بعد استخراجها من المستند وقبل مشاركة السجل أو تدوينه أو تمريره إلى خطوة أخرى. قدّم كتلة البيانات الوصفية في صورة كائن، فتعيد هذه الإمكانية كائن بيانات وصفية فارغاً مع قائمة مرتبة أبجدياً بأسماء الحقول التي حُذفت. وهي لا تفحص وحدات بايت PDF ولا تعيد كتابتها. بدلاً من ذلك، تمنح التطبيقات عقد تنقية صغيراً وحتمياً يسهل اختباره وتدقيقه ودمجه مع قارئ PDF أو كاتبه الموجود بالفعل.
قدّم كتلة البيانات الوصفية المستخرجة
ابدأ بكائن البيانات الوصفية الذي أنشأه محلل PDF أو نظام المستندات أو نموذج الإدخال، ثم ضعه في حقل metadata ضمن الطلب. يمكن أن تحمل خصائصه أسماء معلومات PDF الشائعة، مثل Title وAuthor وSubject وKeywords وCreator وProducer وCreationDate وModDate، لكن الإمكانية لا تقصر الأسماء على قائمة ثابتة. فهي تحذف الخصائص المخصصة أيضاً.
وتنبع أهمية ذلك من أن المؤسسات تضيف عادةً تسميات داخلية لسير العمل أو معرّفات للقوالب أو أسماء للأنظمة المصدرية أو إعدادات للتصدير، وقد تكشف هذه المعلومات أكثر مما تكشفه الحقول القياسية. كما تُرفض المصفوفة لأن عناصرها المرقمة لا تمثل خريطة لخصائص البيانات الوصفية. ويمكن أن تكون القيم سلاسل أو أرقاماً أو قيماً منطقية أو null أو مصفوفات أو كائنات متداخلة، لأن الحذف يعتمد على وجود الحقل لا على تفسير محتواه.
افهم النتيجة الفارغة وتقرير الحذف
تحتوي الاستجابة الناجحة دائماً على metadata في صورة كائن فارغ. وتحتوي كذلك على removed، وهي مصفوفة مرتبة أبجدياً تضم كل حقل قابل للتعداد يملكه كائن البيانات الوصفية المقدّم. يجعل الإبلاغ عن الأسماء عملية التنقية قابلة للمراجعة؛ إذ يمكنكم التأكد من وجود Author أو Creator أو حقول التاريخ أو خاصية تتبع مخصصة ومن حذفها، من دون الاحتفاظ بقيمتها الأصلية في الاستجابة.
والترتيب الأبجدي مقصود، لأن كائنات JavaScript قد تُنشأ وفق ترتيبات إدراج مختلفة، بينما ينبغي لمجموعات الحقول المتكافئة أن تنتج التأكيد نفسه كلما أمكن ذلك. لذلك تعدّد الخوارزمية حقول الكائن نفسه، وترتب أسماءها وفق إعداد محلي إنجليزي ثابت، ثم تعيد الأسماء وحدها. ولا تتتبع الخصائص الموروثة، ولا تتصل بأي خدمة أخرى، ولا تستخدم ساعة أو مصدراً عشوائياً.
ويُعد كائن البيانات الوصفية الفارغ إدخالاً صالحاً ينتج قائمة removed فارغة. يفيد ذلك في مسارات العمل المتكررة بأمان، لأن تنقية سجل سبق تنظيفه لا تفشل ولا تدّعي حدوث تغيير غير موجود.
ضع العملية في موضعها الصحيح ضمن مسار PDF
استخدم هذه الإمكانية بين استخراج البيانات الوصفية والخطوة التي تكتب السجل المنقّى أو تخزنه أو تشاركه. إذا كان الناتج النهائي ملف PDF، فلا يزال على كاتب PDF تطبيق الكائن الفارغ على المستند وإزالة خصائص قاموس المعلومات أو XMP من وحدات البايت. لا تدّعي هذه الإمكانية أنها تعدّل مستنداً ثنائياً.
ويكون هذا الفصل مفيداً عندما يتولى نظامكم الوصول إلى الملفات بالفعل، لكنه يحتاج إلى سياسة موحدة لمحو السجلات الوصفية. على سبيل المثال، يستطيع نظام استقبال المستندات قراءة البيانات الوصفية وإرسال الكتلة إلى هنا، ثم تسجيل أسماء الحقول المحذوفة وحدها في حدث تدقيق، وتوجيه الكاتب إلى حفظ البديل الفارغ. تعاملوا مع قائمة removed على أنها تأكيد لأسماء الحقول، لا دليلاً على إعادة كتابة ملف PDF مستقل.
حالات الاستخدام
تنقية سجل مستند مستخرج
استبدل كتلة البيانات الوصفية التي أنشأها المحلل بكائن فارغ قبل أن ينتقل السجل إلى خدمة لاحقة.
إنشاء حدث تدقيق يحافظ على الخصوصية
سجّل أسماء حقول البيانات الوصفية المحذوفة من دون نسخ قيمها التي قد تكون حساسة إلى السجلات.
فرض سياسة نشر موحدة
طبّق القاعدة الحتمية نفسها لمحو البيانات الوصفية القياسية والمخصصة عبر عدة مسارات لاستقبال PDF وتصديره.
الأسئلة الشائعة
هل تعدّل هذه الإمكانية وحدات بايت PDF؟
لا. إنها تعمل على كائن بيانات وصفية سبق استخراجه. استخدم كاتب PDF لتطبيق النتيجة الفارغة على ملف المستند.
ما حقول البيانات الوصفية التي تُحذف؟
تُحذف كل الحقول القابلة للتعداد التي يملكها الكائن المقدّم، بما فيها أسماء الخصائص القياسية والمخصصة.
هل تُعاد قيم البيانات الوصفية المحذوفة؟
لا. لا يُبلّغ إلا عن أسماء الحقول المحذوفة، ولذلك لا تحتفظ الاستجابة بالقيم الأصلية.
ماذا يحدث إذا كانت البيانات الوصفية فارغة أصلاً؟
ينجح الاستدعاء ويعيد كائن بيانات وصفية فارغاً ومصفوفة removed فارغة.
هل تُحذف الخصائص المخصصة أيضًا؟
نعم. يُحذف كل عنصر، لا العناصر المعتادة مثل Title وAuthor فقط. تختفي أيضًا التسميات الداخلية لسير العمل ومعرّفات القوالب وأسماء الأنظمة المصدر، وهي غالبًا تكشف أكثر من البيانات القياسية.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/pdf/strip-metadata \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"metadata":{"Title":"Board minutes","Author":"Example User","Creator":"Office Suite","CreationDate":"D:20260725103000Z"}}'const res = await fetch("https://api.kit.forhosting.com/pdf/strip-metadata", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"metadata": {
"Title": "Board minutes",
"Author": "Example User",
"Creator": "Office Suite",
"CreationDate": "D:20260725103000Z"
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/strip-metadata",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"metadata": {
"Title": "Board minutes",
"Author": "Example User",
"Creator": "Office Suite",
"CreationDate": "D:20260725103000Z"
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/strip-metadata", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"metadata":{"Title":"Board minutes","Author":"Example User","Creator":"Office Suite","CreationDate":"D:20260725103000Z"}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"metadata":{"Title":"Board minutes","Author":"Example User","Creator":"Office Suite","CreationDate":"D:20260725103000Z"}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/strip-metadata", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"metadata": {
"Title": "Board minutes",
"Author": "Example User",
"Creator": "Office Suite",
"CreationDate": "D:20260725103000Z"
}
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.strip_metadata",
"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 | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
قدّم كتلة البيانات الوصفية المستخرجة
يجب أن يتضمن الطلب كائناً فعلياً؛ فالسلسلة التي تحتوي على JSON تظل سلسلة، ولذلك تُرفض بدلاً من تحليلها ضمنياً. حلّل أي JSON متسلسل قبل استدعاء الإمكانية حتى يظل عقد الإدخال صريحاً ويمكن توقعه.
ضع العملية في موضعها الصحيح ضمن مسار PDF
ويمكن لمسار النشر تنفيذ العملية نفسها قبل إظهار تفاصيل المستند عبر API. تبلغ كلفة كل عنصر $0.002 عبر API، كما تتيح البنية الحتمية التي لا تستخدم الشبكة تنفيذاً متسقاً في المتصفح.
أسئلة تقنية
هل يمكن تقديم سلسلة JSON؟
لا. حلّلها أولاً. يجب أن يكون حقل metadata كائناً؛ وتؤدي السلاسل أو المصفوفات إلى خطأ invalid_input.
ما كلفة استدعاء API واحد؟
تبلغ كلفة معالجة كائن بيانات وصفية واحد $0.002.