تبدیل Word به PDF در اندروید

Word به PDF یکی از رایج‌ترین تبدیل‌های سند است و به همین دلیل است که MS Word یک ویژگی داخلی برای ذخیره اسناد Word به عنوان PDF فراهم می‌کند. از آنجایی که PDF یک فرمت ترجیحی برای به اشتراک گذاری اسناد یا نگهداری آنها به صورت آنلاین است، نیاز به تبدیل Word به PDF در سناریوهای مختلفی رخ می دهد. از سوی دیگر، گوشی‌های هوشمند مجهز به اندروید با قرار دادن قابلیت‌های متعدد درون گوشی‌ها از طریق اپلیکیشن‌ها، زندگی انسان‌ها را آسان‌تر کرده‌اند. با توجه به این روند، در این مقاله، نحوه تبدیل اسناد Word به PDF را در یک برنامه اندروید به شما نشان می دهم. برای نمایش، ما یک برنامه ساده تبدیل Word به PDF برای اندروید را طی چند مرحله با ویژگی‌های زیر می‌سازیم.

  • تبدیل یک سند Word به PDF
  • PDF را در حافظه گوشی ذخیره کنید
  • PDF را در برنامه مشاهده کنید

کتابخانه تبدیل Word به PDF برای اندروید

برای تبدیل اسناد MS Word به فرمت PDF، از Aspose.Words برای اندروید از طریق جاوا استفاده می‌کنیم که به شما امکان می‌دهد اسناد DOC/DOCX را با استفاده از چند خط کد به صورت یکپارچه به فایل‌های PDF تبدیل کنید. می توانید API را دانلود یا با استفاده از پیکربندی Maven نصب کنید.

مراحل تبدیل Word به PDF در اندروید

مراحل زیر برای ایجاد یک برنامه ساده تبدیل Word به PDF در اندروید با استفاده از Aspose.Words برای اندروید از طریق جاوا آمده است:

  • یک پروژه جدید در Android Studio (یا Eclipse) ایجاد کنید و الگوی “Empty Activity” را انتخاب کنید.
ایجاد پروژه جدید در اندروید استودیو
  • پروژه خود را پیکربندی کنید
پیکربندی پروژه اندروید
  • فایل build.gradle را باز کنید.
به روز رسانی build.gradle در اندروید استودیو
  • بخش مخازن زیر را در build.gradle اضافه کنید.
repositories {
    mavenCentral()
    maven { url "https://repository.aspose.com/repo/" }
}
  • ورودی های زیر را در بخش وابستگی های build.gradle اضافه کنید.
implementation 'com.google.android.material:material:1.1.0'
implementation 'com.android.support:multidex:2.0.0'
implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'
compile (group: 'com.aspose', name: 'aspose-words', version: '20.6', classifier: 'android.via.java')
  • Multidex را با افزودن ورودی زیر در قسمت defaultConfig در build.gradle فعال کنید.
// enable multiDex
multiDexEnabled true
  • فایل کامل build.gradle به شکل زیر خواهد بود:
apply plugin: 'com.android.application'

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.1"

    defaultConfig {
        applicationId "com.example.wordtopdf"
        minSdkVersion 16
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
        // MultiDex را فعال کنید
        multiDexEnabled true
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

repositories {
    mavenCentral()
    maven { url "https://repository.aspose.com/repo/" }
}
dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'com.android.support:multidex:2.0.0'
    implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'
    compile (group: 'com.aspose', name: 'aspose-words', version: '20.6', classifier: 'android.via.java')
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
  • فایل activitymain.xml را باز کنید.
به روز رسانی طرح بندی xml
  • اسکریپت زیر را برای طرح‌بندی فعالیت اصلی جای‌گذاری کنید.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.github.barteksc.pdfviewer.PDFView
        android:id="@+id/pdfView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:layout_editor_absoluteX="-26dp"
        tools:layout_editor_absoluteY="-16dp" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#D3FFFFFF"
        android:textColor="#A3A2A2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        tools:ignore="MissingConstraints"
        tools:layout_editor_absoluteY="39dp" />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="408dp"
        android:layout_gravity="bottom|right"
        android:layout_marginEnd="36dp"
        android:layout_marginRight="36dp"
        android:layout_marginBottom="140dp"
        app:backgroundTint="#00BCD4"
        app:layout_anchorGravity="bottom|right|end"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/pdfView"
        app:srcCompat="@android:drawable/stat_sys_upload"
        tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>
  • فایل MainActivity.java را باز کنید.
اضافه کردن کد مبدل word به pdf
  • کد جاوا زیر را در MainActivity.java قرار دهید.
package com.example.wordtopdf;

import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import com.aspose.words.Document;
import com.aspose.words.License;
import com.github.barteksc.pdfviewer.PDFView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;

import android.os.Environment;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

@TargetApi(Build.VERSION_CODES.FROYO)
public class MainActivity extends AppCompatActivity {

    private static final int PICK_PDF_FILE = 2;
    private final String storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + File.separator;
    private final String outputPDF = storageDir + "Converted_PDF.pdf";
    private TextView textView = null;
    private Uri document = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // اگر مجوز Aspose.Words را دارید، مجوز را اعمال کنید...
        applyLicense();
        // Treeview را دریافت کنید و متن آن را تنظیم کنید
        textView = (TextView) findViewById(R.id.textView);
        textView.setText("Select a Word DOCX file...");
        // تعریف شنونده کلیک دکمه شناور
        FloatingActionButton myFab = (FloatingActionButton) findViewById(R.id.fab);
        myFab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    // فایل Word را از انتخابگر فایل باز کنید و به PDF تبدیل کنید
                    openaAndConvertFile(null);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    private void openaAndConvertFile(Uri pickerInitialUri) {
        // یک قصد جدید برای باز کردن سند ایجاد کنید
        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        // انواع mime برای اسناد MS Word
        String[] mimetypes = {"application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/msword"};
        intent.setType("*/*");
        intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
        // شروع به فعالیت
        startActivityForResult(intent, PICK_PDF_FILE);
    }

    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @Override
    public void onActivityResult(int requestCode, int resultCode,
                                 Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);

        if (resultCode == Activity.RESULT_OK) {
            if (intent != null) {
                document = intent.getData();
                // سند انتخاب شده را در یک جریان ورودی باز کنید
                try (InputStream inputStream =
                             getContentResolver().openInputStream(document);) {
                    Document doc = new Document(inputStream);
                    // DOCX را به صورت PDF ذخیره کنید
                    doc.save(outputPDF);
                    // نمایش مکان فایل PDF در نان تست و همچنین نمای درخت (اختیاری)
                    Toast.makeText(MainActivity.this, "File saved in: " + outputPDF, Toast.LENGTH_LONG).show();
                    textView.setText("PDF saved at: " + outputPDF);
                    // مشاهده PDF تبدیل شده
                    viewPDFFile();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                    Toast.makeText(MainActivity.this, "File not found: " + e.getMessage(), Toast.LENGTH_LONG).show();
                } catch (IOException e) {
                    e.printStackTrace();
                    Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                } catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                }
            }
        }
    }

    public void viewPDFFile() {
        // PDF را در PDFView بارگذاری کنید
        PDFView pdfView = (PDFView) findViewById(R.id.pdfView);
        pdfView.fromFile(new File(outputPDF)).load();
    }
    public void applyLicense()
    {
        // مجوز تنظیم
        License lic= new License();
        InputStream inputStream = getResources().openRawResource(R.raw.license);
        try {
            lic.setLicense(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • برنامه را بسازید و آن را در گوشی هوشمند اندرویدی خود یا یک دستگاه مجازی اجرا کنید.
  • با رفتن به Settings->Apps->Permissions->Permission manager->Storage به این برنامه اجازه دسترسی به فضای ذخیره سازی را بدهید.
تبدیل اندروید Word به PDF

تبدیل Word به PDF - کد منبع

کد منبع کامل برنامه تبدیل Word به PDF را از GitHub دانلود کنید.

نتیجه

در این مقاله با نحوه تبدیل Word به PDF در اپلیکیشن های اندروید آشنا شده اید. می توانید عملکردهای مشابه را در برنامه خود ادغام کنید یا این مبدل را تا سطح مورد نظر خود ارتقا دهید. می‌توانید در مورد Aspose.Words برای Android از طریق جاوا از اسناد اطلاعات بیشتری کسب کنید.

همچنین ببینید