سؤال

أود أن أسأل عما إذا كان من الممكن تحرير ملفات PDF باستخدام XPDF مكتبة وإذا كانت الإجابة بنعم كيف؟ أعتقد أن هذا ممكن ، لكنني لم أتمكن بي دي إف التحرير. متطلباتي الوحيدة لمثل هذه المكتبة هو أنه يجب أن يكون C ++ المكتبة أو على الأقل أ ج واحد ويجب أن يكون منصة (Windows و Linux)

أحتاج فقط إلى التحرير الأساسي لملف PDF على سبيل المثال:

"هذا نص في مستند PDF" سيتم تغييره إلى "هذا أ نص في PDF "مع لون نص مختلف كذلك.

شكرا لجميع ردودك!

هل كانت مفيدة؟

المحلول

فقط حتى تفهم نطاق ما تدخل فيه ، "التحرير الأساسي" لمحتوى PDF ليس دائمًا غير تافهة.

يتم تمثيل محتوى الصفحة في PDF بواسطة برامج RPN القصيرة التي ترسم على الصفحة. إنها لغة صغيرة مشابهة لـ PostScript في الدلالات ، ولكن بدون تحلق هياكل أو تعريفات الوظائف (لذلك لا توجد مشكلة في توقف). في عالم عاقل ، سيتم تمثيل نصك على الصفحة بشيء من هذا القبيل:

BT /F1 12 Tf 72 720 Td (this is a text in a pdf document) Tj ET

الذي عند ترجمته إلى شيء أكثر دراية ، هل هذا:

BeginText();
SetFont(F1, 12.0);  // Font 1, 12.0 pt
TextMoveTo(72, 720);
ShowText("this is a text in a pdf document");
EndText();

لذلك في هذه الحالة ، عليك تحويل هذا إلى شيء مثل هذا:

BeginText();
SetFont(F1, 12.0);  // Font 1, 12.0 pt
TextMoveTo(72, 720);
ShowText("this is a ");
SetFont(F2, 12);
ShowText("text");
SetFont(F1, 12);
ShowText(" in a pdf document");
EndText();

الذي سيصبح:

BT /F1 12 Tf 72 720 Td (this is a ) Tj /F2 12 Tf (text) Tj /F1 12 Tf
( in a pdf document) Tj ET

في ما يعادل PDF. المشكلة عديدة:

  1. يجب عليك استخراج الصفحة وجميع مواردها (غير تافهة)
  2. يجب عليك إنشاء صفحة جديدة ، إدراج موارد جديدة (أنت تضيف خطًا جديدًا) ، وتضمين الخط إذا أمكن
  3. قم بتغيير دفق المحتوى في الصفحة لتضمين المحتوى الذي تم تغييره.

و 3 هو المكان الذي ستعلق فيه ، لأن هناك عددًا لا حصر له من الطرق لإنشاء صفحة تحتوي على المحتوى الذي تصفه وحتى مع مكتبة لائقة ، سيكون لديك صعوبة في الحصول على 70 ٪ منهم. اسمحوا لي أن أصف باختصار لماذا هذا سيء كما يبدو. هناك برامج توليد PDF (أنا أنظر إليك ، Troff) التي تضع كل النص العادي على صفحة أولاً ، ثم وضع كل النص المائل ، ثم جميع النص الجريء. أقسم ، أنا لا أقوم بهذا. تريد بعض البرامج وضع نص على وجه التحديد ، لذلك إذا كنت محظوظًا ، فسوف يستخدمون مشغل TJ الذي يضع نصًا مع kerning محددة. إذا لم تكن محظوظًا (وهو في معظم الوقت) ، فإنهم بدلاً من ذلك يضعون النص بمجموعة من التحركات قبل كل رسول رسومية واحدة على الصفحة. وماذا لو تم وضع نصك على منحنى أو اتجاه غير عادي (الخرائط ، الإعلانات)؟ ماذا عن الحالات التي يغير فيها شخص ما بمهارة حجم الخط لتمييز أكبر بين العلوي والسفلي أو يحاكي قبعات صغيرة؟

هذا هو السبب ، عندما كتبت أداة العثور على النص لـ Acrobat 1.0 ، استغرق الأمر مني شهرين من العرق للتعامل مع العديد من حالات الحافة. هذا ليس نصًا تحريرًا - إنه يحاول فقط العثور على كلمة أو عبارة واحدة.

لن أوصي بك مكتبة - آسف - لقد أعطيت XPDF نظرة قصيرة وليس من الواضح ما إذا كانت لديها قدرات توليد PDF أم لا ، أو إذا كانت مجرد مستهلك لـ PDF. يبدو أن PDFLIB ، وهو منتج تجاري ، هو إنشاء PDF ، على الرغم من أنه ليس من الواضح ما إذا كان يمكن أن تستهلكه ، ولكن يمكنك بالتأكيد الحصول على كلا الجانبين من خلال لصقهما معًا.

إذا كان الأمر أنا ، فسأستخدم الأدوات التي طورتها وما زلت خجولًا قليلاً من هذه المهمة. يتم استخدام مكتبتي بواسطة Atalasoft, ، الشركة التي أعمل عليها ، لإنشاء ملفات PDF من قطعة قماش كاملة والتحرير ضمن مجال محدود للغاية (التعليقات التوضيحية ، بيانات الوثيقة). الجزء الأصعب هو أننا نبذل قصارى جهدنا لإخفاء تعقيد PDF من عملائنا. بشكل عام ، يريد عملائنا نحن لفهم المواصفات بدلاً منها وجعل الباقي سهلة - ولكن المهام مثل هذا (الانتقام آخر) ، من الصعب حقًا القيام به دون فهم عمق مواصفات PDF. إذا بدأت في إدخال عالم مكتبة معالجة PDF ، فيجب أن تبدأ بقراءة المواصفات ، وخاصة الفصل 8 (الرسومات) والفصل 9 (نص) ، وستحصل على فهم أفضل لما ستفعله مع المكتبة.

نصائح أخرى

XPDF هي مكتبة PDF للقراءة فقط. لا يمكن أن تكتب PDF أقل بكثير تعديل المحتويات.

هل نظرت إلى itext/isharp لتحرير ملفات PDF؟

وإن لم تكن مكتبة بالمعنى التقليدي ، pdfedit لديه قدرات التحرير القابلة للنص. لكنه يتطلب QT. Podofo ربما يناسب أفضل مع متطلباتك. هناك ايضا pdfhummus.

ولكن احذر من أنه إذا كنت تتوقع تحرير النص من PDF التي تم إنشاؤها بواسطة أدوات خارج عن نطاقك ، فمن المحتمل أن تواجه بعض المشكلات. المشكلة هي - وذكرها - هناك العديد من الطرق لإنشاء نص يبدو متشابهًا ولكن هذا السياق مختلف تمامًا عن بعضهما البعض.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top