custom_save_pdf:

Flutter Package allowed you to saving pdf files in custom folder in phone storage


Change To عربي Version


# 👨‍💻 Developed by:

profile

Nasr Al-Rahbi @abom_me

👨🏻‍💻 Find me in :

Twitter Instagram LinkedIn Stack Overflow



custom_save_pdf: using the official open_document & path_provider & permission_handler.

⚠️ The Requirement ⚠️ :

Android iOS
Support SDK 29+ iOS 11+

Setup:

Pubspec changes:

      dependencies:
        custom_save_pdf: <last_verison>

Sample example:

import 'package:custom_save_pdf/custom_save_pdf.dart';

CustomPdfFolder.save(
byteList: data,
nameOfFolder: 'nasr',
openPDF: true,
onSaved: (v) {},
onError: (error, code) {
print(error);
print(code);
});

Getting Started

  • You Should Follow all the instructions carefully
-----Android-----------
  1. You should make sure to set the correct minSdkVersion in android/app/build.gradle :
android {
    defaultConfig {
        minSdkVersion 29
    }
}

2-You should make sure to set the correct compileSdkVersion in android/app/build.gradle :

android {
    compileSdkVersion 33
    ...
}

3-Add this in android/app/build.gradle :


<!-- First add this  -->
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />


<application
        <!-- now add this line in application   -->
android:requestLegacyExternalStorage="true"
...
        >

        <!--  add this code inside  tag application   -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="{the pakage of app}.{the app name}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths" />
</provider>

3- Go to android/app/src/main/res and create folder name it xml then create provider_paths.xml


<!-- Add this code in provider_paths.xml  -->
<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path
            name="external_files"
            path="." />
</paths>



-----IOS-----------

Note:

In IOS your folder will be created in the app folder

Example In File App : App_name/your_folder/your_pdf


1- add this code in info.plist:

 <key>LSSupportsOpeningDocumentsInPlace</key>
    <true/>

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

See the example directory for a complete sample app.

Parameters of the CustomPdfFolder

 /// <p style="color:#77b4ff;font-size:16;font-weight: bold;">---- EN ----</p>
/// ###  Add The Uint8List From (PDF) Package
/// #### <a href="https://pub.dev/packages/pdf"> PDF Package </a>
/// #### <span style="color:green">  You Will find example in the document</span>

/// <p style="color:#77b4ff;font-size:16;font-weight: bold;">---- AR ----</p>
/// ### اضف كود
/// ### Uint8List
///### بإمكانك الحصول عليه من باكج
///### PDF
/// ### <a href="https://pub.dev/packages/pdf"> PDF Package </a>
/// #### <span style="color:green">  سوف تجد أمثلة في مستندات الباكج</span>

final Uint8List byteList;

/// <p style="color:#77b4ff;font-size:16;font-weight: bold;">---- EN ----</p>
///
/// ### Write  Name for The folder, Where The PDF File Saving on it
///

/// <p style="color:#77b4ff;font-size:16;font-weight: bold;">---- AR ----</p>

/// ### أكتب أسم المجلد الذي تريد حفظ الملفات بداخله
final String nameOfFolder;

/// <p style="color:#77b4ff;font-size:16;font-weight: bold;">---- EN ----</p>
/// ### Write  name for the file, for example:

/// #### (-- example.pdf --)
/// <span style="color:#d80000"> Without (.pdf) </span>
/// <br>
/// <span style="color:green">You can keep it empty and will make random name</span>
/// <p style="color:#77b4ff;font-size:16;font-weight: bold;">---- AR ----</p>
/// ### أكتب اسم للملف الذي تريد حفظه, مثال:
/// #### (-- example.pdf --)

/// <span style="color:#d80000"> بدون اضافة الامتداد (.pdf) </span>
/// <br>
/// <span style="color:green">بإمكانك تركه فارغا وسوف يقوم بإنشاء اسم عشوائي </span>

final String? fileName;

/// <p style="color:#77b4ff;font-size:16;font-weight: bold;">---- EN ----</p>
/// ### Here You can get the path of the pdf file as String

/// <p style="color:#77b4ff;font-size:16;font-weight: bold;">---- AR ----</p>
/// ### هنا يعطيك مسار الملف كنص

final void Function(String filePath)? onSaved;

/// <p style="color:#77b4ff;font-size:16;font-weight: bold;">---- EN ----</p>
/// ### Here showing you any error happen with the code of the error and you can add Function if there is any errors

/// <p style="color:#77b4ff;font-size:16;font-weight: bold;">---- AR ----</p>
/// ### هنا يظهر  نص و رقم الخطأ اذا حدثت اي اخطاء، و بإمكانك إعطائه امر ليفعله اذا عثر على خطأ

final void Function(String error, int errorCode)? onError;

/// <p style="color:#77b4ff;font-size:16;font-weight: bold;">---- EN ----</p>
/// ### keep it true to open the pdf file after save it
/// ### or false to only saving in files
/// <span style="color:green;font-size:13;font-weight: bold;">it's True by default  </span>

/// <p style="color:#77b4ff;font-size:16;font-weight: bold;">---- AR ----</p>
/// #### True
/// #### لكي ينفتح الملف بعد حفظه
/// #### False
/// #### لكي يحفظ الملف فقط بدون فتحه
bool? openPDF = true;

Libraries

custom_save_pdf