هذا المقال هو بعنوان
استخرج ملفات PDF بكل سهولة من خلال هذا ال API الخاص بي
واللي من خلاله هنعرف ازاي ممكن نستخرج ملف pdf من تقرير او صفحة معينة بكل تنسيقاتها ومحتوياتها
................................
من خلال web service بسيطة هتقدر تعمل ده
طيب لو انت عاوز تعملها بنفسك, هتعملها ازاي؟
انا عملتها من خلال الباكيج دي Spatie/Browsershot
ودي للأسف مش هتشتغل كده زي اي package عادية لانها بتعمل ربط مع الـ Node.js
يعني في موقعك لازم يكون عندك node علي الاستضافة وعشان تقدر تعمل ده لازم يكون عندك Terminal علي الاستضافة
وده سهل لو عندك VPS او تقدر تدخل SSH علي اكونت الاستضافة بتاعتك
------------
ازاي بقي انا سطبتها
اولا سطبت الباكيج والموقع الرسمي بتاعها فيه كل حاجة
https://spatie.be/docs/browsershot/v2/introduction
composer require spatie/browsershot
ثانيا بقي وده مهم اوي , لو بصيت علي الـRequirements هتلاقي انك لازم تسطب برضه حزمة puppeteer
ودي باكيج تبع كروم عشان تقدر تاخد المحتوي بتاعك وتحوله
اشبه بالطريقة اللي بتعملها لما بتعمل طباعة === حفظ كـ pdf دي بقي بتعملها لوحدها
npm install puppeteer
وبكده يبقي فاضل عندك نقطة اخيرة عشان يبقي كل المطلوب معانا
وهي اننا نعرف المسار الخاص بـ Node.js والخاص بـ NPM
بس كده؟ ... هو المفروض بس مش ده اللي حصل معايا لان لقيت فيه حجات محتاج اسطبها كمان
ودي list بالاوامر اللي عملتها من البداية للنهاية
الاستضافة بتاعتي centos7
--------------------------------------------------------------------
# 1. Install a package with repository for your system: # On CentOS, install package centos-release-scl available in CentOS repository: $ sudo yum --disablerepo=imunify360-ea-php-hardened install centos-release-scl-rh # On RHEL, enable RHSCL repository for you system: $ sudo yum-config-manager --enable rhel-server-rhscl-7-rpms # 2. Install the collection: $ sudo yum --disablerepo=imunify360-ea-php-hardened install rh-nodejs12 # 3. Start using software collections:
nodeاو npm قبل ما اعمل امر $ scl enable rh-nodejs12 bash
# in cpanel - centos بس تقريبا ده مظبطش وعملت اللي بعده ده والدنيا ظبطت $ sudo yum --disablerepo=imunify360-ea-php-hardened install atk.x86_64# required libraries for poputeer
$ sudo yum --disablerepo=imunify360-ea-php-hardened install atk java-atk-wrapper at-spi2-atk gtk3 libXt
-------------------------------------------------------------------
كده خلاص - خلصنا كل حاجة وجاهزين نشتغل
Browsershot::url("https://your_website.com/file_url")->save("your_file.pdf");
-------------------------------
لو مفيش عندك vps او مفيش ssh عندك متقلقش
استخدم الـ web service واشتغل
ده الرابط https://mahmoud-arafat.com/includes/generate-pdf
ده الـ header
{ "user-token" : "your_acess_token_here" }
وده الـ Body
-------------------------------------------------------------------
{"required_url" : "https://mahmoud-arafat.com/snippts/snippt/1", // required"result_type" : "pdf-base64", // required [ "pdf-base64" || "pdf-file" ]"doc_dimensions" : { // set custom width and height for the page [ applied if doc_format not found ]"width":120,"height": 200},"doc_format" : "A4", // or set standard format [ applied if found in body ]"doc_margins" : { // set custom margins in the page"top" : 10,"right" : 10,"bottom" : 10,"left" : 10},"doc_header" : "", // add your header html"doc_footer" : "", // add your footer html"show_background" : true, // apply bg css or not"landscape": false, // use landscape or portrait"scale" : 1, // custom scale size"custom_pages" : [] // custom layout pages only}
{
"status": true,
"remaining_tries": 4, // the remamining tries in your package
"pdf_url":"some string here" // pdf file code or url}
public function getPDF(){$id = request('id');$pdfBody = PDFFileModal::find($id)->base64_pdf;$decoded = base64_decode($pdfBody);return response($decoded)->header('Content-Type', 'application/pdf');}