اذهب الي المحتوي
أوفيسنا

من مكتبتي - دمج ملفات pdf


jjafferr

الردود الموصى بها

السلام عليكم 🙂

 

بالاضافة الى ميزات الاكسس الشخصية ، فيه امكانية مخاطبة البرامج الاخرى بعدة طرق ، احدها عن طريق Command line ،

بحيث يمكننا ان نرسل اوامر من الاكسس الى هذا البرنامج الذي يقبل الاوامر من Command line .

 

البرنامج pdftk (في المرفق) احد هذه البرامج https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/

 

المرفق فيه برنامج اكسس وملف a.pdf و b.pdf ، وبزر من الاكسس ، سيتم دمج الملفين الى ملف ab.pdf ،

وفي المرفق ملف الاوامر التي يقبلها برنامج pdftk .

 

البرنامج يستطيع التعامل مع ملفات pdf بعدة طرق ، لذلك وجب قراءة ملف الاوامر 🙂

وهذا هو الكود:

Private Sub cmd_combine_Click()

'Merge Two or More PDFs into a New Document
'pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf

    Dim pdftk_File As String
    Dim a_FILE As String
    Dim b_FILE As String
    Dim ab_FILE As String
    Dim Command_Line As String
    
    
    pdftk_File = Chr(34) & Application.CurrentProject.Path & "\" & "pdftk" & Chr(34)
    a_FILE = Chr(34) & Application.CurrentProject.Path & "\" & "a.pdf" & Chr(34)
    b_FILE = Chr(34) & Application.CurrentProject.Path & "\" & "b.pdf" & Chr(34)
    ab_FILE = Chr(34) & Application.CurrentProject.Path & "\" & "ab.pdf" & Chr(34)
    
    Command_Line = pdftk_File & " "
    Command_Line = Command_Line & a_FILE & " "
    Command_Line = Command_Line & b_FILE & " "
    Command_Line = Command_Line & "cat output" & " "
    Command_Line = Command_Line & ab_FILE
    'Debug.Print Command_Line
    
    Shell_n_Wait Command_Line, vbHide
    
End Sub

 

جعفر

اعتقد عندي هذا الملف من سنة 2009 :biggrin2:

---------------------------------------------------------------

تعديل 31-10-2019 :

- استخدام الوحدة النمطية Shell_n_Wait والتي تقبل حروف unicode - utf-8 ، من

https://github.com/xxdoc/vb6-Shell-Wait/blob/master/Shell %26 Wait v2/modShellWait.bas
http://www.vbforums.com/showthread.php?700373-VB6-Shell-amp-Wait&p=4288285&viewfull=1#post4288285

- تم تغليف مسار الملفات بالاشارة " ، وذلك لحل مشكلة وجود مسافات في اسم المسار او الملف ،

- تم تفكيك خط الامر الى مكونات اصغر ، لسهولة تغيير اي جزء منه.

 

---------------------------------------------------------------

تعديل 15-01-2023 :

يمكننا استعمال الاسم القصير Short FileName للتغلب على مشكلة اللغة العربية في استعمال هذا البرنامج 🙂

يصبح الكود:

Private Sub cmd_combine_Click()
On Error GoTo err_cmd_combine_Click:


'Merge Two or More PDFs into a New Document
'pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf

    Dim pdftk_File As String
    Dim a_FILE As String
    Dim b_FILE As String
    Dim ab_FILE As String
    Dim Command_Line As String
    
    
    pdftk_File = Chr(34) & Application.CurrentProject.Path & "\" & "pdftk" & Chr(34)
    
    'File
    'a_FILE = Chr(34) & Application.CurrentProject.Path & "\" & "a.pdf" & Chr(34)
    a_FILE = Chr(34) & get8_3FullFileName(1, Application.CurrentProject.Path & "\" & "ملف1" & "\" & "a.pdf") & Chr(34)
    
    b_FILE = Chr(34) & Application.CurrentProject.Path & "\" & "b.pdf" & Chr(34)
    
    'Folder
    'ab_FILE = Chr(34) & Application.CurrentProject.Path & "\" & "ab.pdf" & Chr(34)
    ab_FILE = get8_3FullFileName(2, Application.CurrentProject.Path & "\" & "المجلد النهائي") & "\" & "ab.pdf"
    Kill ab_FILE
    ab_FILE = Chr(34) & ab_FILE & Chr(34)
    
    Command_Line = pdftk_File & " "
    Command_Line = Command_Line & a_FILE & " "
    Command_Line = Command_Line & b_FILE & " "
    Command_Line = Command_Line & "cat output" & " "
    Command_Line = Command_Line & ab_FILE
    'Debug.Print Command_Line
    
    Shell_n_Wait Command_Line, vbHide
    
    
Exit_cmd_combine_Click:

    Exit Sub
err_cmd_combine_Click:

    If Err.Number = 53 Then
        'file not for for deletion
        Resume Next
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
        Resume Exit_cmd_combine_Click
    End If
    
End Sub

.

وهذه الدالة التي يتم مناداتها لتغيير المسار الى 8.3

Function get8_3FullFileName(F_or_F As Integer, ByVal sFullFileName As String) As String

'
' Convert the normal path to the old DOS 8.3 path
' this solves the problem of spaces in the path
' and reading Unicode names
'
' F_or_F : File or Folder
' 1= File
' 2= Folder
'

    Dim FSO As Object: Set FSO = CreateObject("Scripting.FileSystemObject")
    
    If F_or_F = 1 Then
        get8_3FullFileName = FSO.GetFile(sFullFileName).ShortPath
    Else
        get8_3FullFileName = FSO.GetFolder(sFullFileName).ShortPath
    End If
    
    Debug.Print "Original File Path: " & sFullFileName
    Debug.Print "8.3 File Path: " & get8_3FullFileName
    
End Function

.

والمرفق Combine_PDF_Files_83.zip فيه المثال اعلاه 🙂

 

 

 

Combine_PDF_Files_2.zip

pdftk_2.02.zip

Combine_PDF_Files_83.zip

  • Like 5
  • Thanks 8
رابط هذا التعليق
شارك

  • 10 months later...

الموضوع جميل جداً ونحتاجه بشده 

لكن 

اذا كان اسم الملف PDF ذو مقاطع عربية أو اسم المجلد عربي فان الملف لا يعمل فهل من حل لذلك مع الشكر

رابط هذا التعليق
شارك

40 دقائق مضت, عبدالله المجرب said:

الموضوع جميل جداً ونحتاجه بشده 

لكن 

اذا كان اسم الملف PDF ذو مقاطع عربية أو اسم المجلد عربي فان الملف لا يعمل فهل من حل لذلك مع الشكر

الحل بإذن الله 

إحاطة مسار الملفين بعلامات تنصيص مزدوجة قبل وبعد المسار

وكذلك مسار الملف التنفيذي لبرنامج pdftk

رابط هذا التعليق
شارك

هل يمكن تطوير الملف ليكون عبارة عن فورم يعرض عدة ملفات pdf قد تصل الى ٢٠ او اكثر وامام كل ملف خانة اختيار 

فاذا اخترت ٣ ملفات يتم دمجهم فقط 

 

والاهم لغة المسار والملف ان تدعم العربية

رابط هذا التعليق
شارك

بعد إذن أخينا جعفر

الحل في مشكلة المسار العربي الذي يحتوي على مسافات

يمكن وضع هذا الملف libiconv2.dll في نفس مسار البرنامج مع pdftk.exe بعد فك الضغط عنه

وفي هذه الحالة يمكن الاستغناء عن الموديول وتغيير السطر الأخير إلى

Shell Command_Line, vbHide
MsgBox "ok"

دون تعديل على أي كود غير السطر اللخاص ب shell فقط

مع إضافة كود رسالة تخبر بانتهاء الدمج

 

libiconv2.rar

  • Like 1
رابط هذا التعليق
شارك

شكراً استاذ محمد على الرد

 

 

للاسف لازالت مشكلة المسار العربي موجودة

3 ساعات مضت, عبدالله المجرب said:

هل يمكن تطوير الملف ليكون عبارة عن فورم يعرض عدة ملفات pdf قد تصل الى ٢٠ او اكثر وامام كل ملف خانة اختيار 

فاذا اخترت ٣ ملفات يتم دمجهم فقط 

 

والاهم لغة المسار والملف ان تدعم العربية

هل يمكن عمل هذا المقترح

رابط هذا التعليق
شارك

لدي نسخة ويندوز 10 

وبعد وضع الملف في نفس مجلد البرنامج 

وتعديل اسم الملف في الكود باللغة العربية 

لا يوجد أي مشكلة ويقوم يالدمج بصورة طبيعية 

ربما الخطأ عندك يرجع إلى اختلاف في الحروف مثل الالف بدون همزة وهكذا 

لكن ملف DLL حل المشكلة 

رابط هذا التعليق
شارك

جربت التالي

وضعت ملف الاكسس مع ملفين pdf مع libiconv2.dll  مع pdftk.exe في ملف واحد اسميته AAAA في سطح المكتب

ملف pdf الاول اسمة كرة قدم والثاني دورة تاهيل

عدلت الاسماء في الكود 

لكن لم يتم دمج الملفين

===

سوال 

ما دور ملف dll اذا لم يتم تفعيله بالكود

رابط هذا التعليق
شارك

لا أدري أين المشكلة عندك أخي وصديقي أبا أحمد

لكن هذا المجلد الذي أستعمله

يمكنك نقله في أي مكان

لاحظ استعمال أسماء عربية بينها مسافات حتى اسم المجلد به مسافات

ربما يحتاج أخونا جعفر إلى تحديث الملف في المشاركة الأولى إلى هذا المجلد

Combine_PDF_Files_cmd.rar

رابط هذا التعليق
شارك

السلام عليكم 🙂

 

في ١‏/١١‏/٢٠١٩ at 13:11, Khalf said:

الملف يعمل حصراً عند وجوده في مسار كل مجلداته مسماة بحرف إنكليزية.

هذه ملاحظة الاخ خلف !!

 

11 ساعات مضت, أ / محمد صالح said:

ربما يحتاج أخونا جعفر إلى تحديث الملف في المشاركة الأولى إلى هذا المجلد

استاذ محمد ، تفضل واعمل التغيير المناسب 🙂

انا على سفر بكرة ان شاء الله ، فما عندي وقت اعمل تعديلات !!

بس ارفقت في مشاركتي الاولى ، النسخة 2.02 من الملف pdftk واللي يقبل Unicode على حسب ماهو مكتوب في الموقع 🙂

 

جعفر

رابط هذا التعليق
شارك

السلام عليكم و رحمة الله و بركاته

تحياتي لك أستاذ @jjafferr  لهذه الإضافة الرائعة

و تحياتي لجميع الأساتذة المتواجدين 

 

 

نلاحظ في الكود تسمية كل ملف على حده ليتم عليه تطبيق الدمج ,

و لكن في حال وجود مئات من ملفات ال PDF مثلآ , هل تتم التسمية لكل ملف داخل الكود ؟

رابط هذا التعليق
شارك

شكرا استاذ محمد الملف يعمل حاليا

==============================

 

 

الهدف الإستفادة من الملف لاكثر من مستخدم 

اي انه لا يمكن في كل مرة تعديل اسم الملف في الكود 

ثانيا قد يتواجد لدي عدد من ملفات pdf ولكن حاجتي لدمج 3 او 4 فقط لا ستخدامها يمكن لمرة واحدة

المطلوب ان يكون عليه الملف هو فورم بها مسارات ملفات pdf وامام كل ملف خانة اختيار 

الملفات التي اخترتها هي التي تدمج 

 

 

في ٣٠‏/٩‏/٢٠٢٠ at 22:33, jjafferr said:

 

انا على سفر بكرة ان شاء الله ، فما عندي وقت اعمل تعديلات !!

بس ارفقت في مشاركتي الاولى ، النسخة 2.02 من الملف pdftk واللي يقبل Unicode على حسب ماهو مكتوب في الموقع 🙂

جعفر

ترجع بالسلامة إن شاء الله

رابط هذا التعليق
شارك

4 ساعات مضت, عبدالله المجرب said:

شكرا استاذ محمد الملف يعمل حاليا

==============================

 

 

الهدف الإستفادة من الملف لاكثر من مستخدم 

اي انه لا يمكن في كل مرة تعديل اسم الملف في الكود 

ثانيا قد يتواجد لدي عدد من ملفات pdf ولكن حاجتي لدمج 3 او 4 فقط لا ستخدامها يمكن لمرة واحدة

المطلوب ان يكون عليه الملف هو فورم بها مسارات ملفات pdf وامام كل ملف خانة اختيار 

الملفات التي اخترتها هي التي تدمج 

 

 

ترجع بالسلامة إن شاء الله

 

 

هذا ملف الاكسس يتم استبداله بالملف في مرفق الاستاذ محمد 

 

حاولت بما اعرف في الأكسس لتكون النتيجة كالتالي

1. وضع مسارات الملفات في جدول tbl1  طبعاً كلها تكون في نفس الفولدر

2. فتح الفورم واخيارا الملفات التي تريد دمجها 

3. يمكنك ترتيب المفات التي ستدمج (ايها يكون الاول وهكذا) 

4. كتابة اسم الملف الناتج عن عملية الدمج 

5. الضغط على زر الدمج وان شاء يتم دمجها

 

 

 

دمج ملفات pdf.rar

  • Thanks 1
رابط هذا التعليق
شارك

  • 2 years later...

وعليكم السلام 🙂

 

2 ساعات مضت, Lover Karo said:

هل يمكن ادراج pdf الى خلفية pdf اخر بنقس الطريقة

اذا قصدك بالخلفية ، عمل علامة مائية WaterMark ، فنعم ممكن عن طريق ملفين pdf ،

وفي المرفق ملف نص txt فيه جميع الاوامر الممكن استعمالها مع البرنامج pdftk المرفق 🙂

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information