CÁCH CHUYỂN ĐỔI HÌNH ẢNH SANG TỆP PDF BẰNG APACHE PDFBOX TRONG ANDROID (P2)

Đăng bởi: Admin | Lượt xem: 839 | Chuyên mục: Android

Nếu bạn đang suy nghĩ về cách chuyển đổi tệp hình ảnh sang tệp PDF, thì ở hướng dẫn này, bạn sẽ tìm hiểu cách nó có thể được thực hiện trong Android.


Trong các hướng dẫn PDF trước của chúng ta, chúng ta đã đề cập đến cách tạo tệp PDF mới trong android và cách tải hoặc ghi tệp PDF trong android, vì vậy ở hướng dẫn này chúng ta sẽ tập trung vào cách chuyển đổi hình ảnh sang tệp PDF.

Dưới đây là ảnh chụp màn hình của ứng dụng chúng ta sẽ tạo.

Xem phần 1 của hướng dẫn ở đây.

6. MỞ LỚP ADDIMAGETOPDFACTIVITY

Cuối cùng, chúng ta sẽ kết nối tất cả các lớp và phương thức với nhau.

Chúng ta đã có được các tham chiếu View và đính kèm một trình lắng nghe sự kiện vào Fab button.

Khi click vào Fab button, nó sẽ mở Trình chọn tệp để người dùng chọn tệp hình ảnh.

Sau đó, các chi tiết hình ảnh sẽ được lưu trữ và sử dụng để tạo một tệp PDF mới.

Đây là code của AddImageToPdfActivity.

public class AddImageToPdfActivity extends AppCompatActivity {

    private static final String TAG = AddImageToPdfActivity.class.getSimpleName();

    private static final int PDF_REQUEST_CODE = 2121;

    private Document document;

    @BindView(R.id.selected_images)
    RecyclerView recyclerView;

    private List<Document> documents;

    private AddImageToPDF addImageToPDF;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_image_to_pdf);

        ButterKnife.bind(this);

        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null){
            actionBar.setTitle("Add Image to PDF");
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.create_pdf_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        int menuId = item.getItemId();
        if (menuId == android.R.id.home){
            onBackPressed();
        }
        if (menuId == R.id.action_create_pdf){
            //Add image(s) to pdf
            addImageToPDF.requestFilename();
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
    }

    private void setupList(List<Document> documents){
        SmartRecyclerAdapter
                .items(documents)
                .map(Document.class, ImageViewHolder.class)
                .setLayoutManager(new LinearLayoutManager(AddImageToPdfActivity.this))
                .into(recyclerView);
    }


    @OnClick(R.id.fab)
    public void onOpenFilePicker(View view){
        Intent intent = PdfFilePicker.openPdf(this, 3);
        startActivityForResult(intent, PDF_REQUEST_CODE);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK && requestCode == PDF_REQUEST_CODE) {
            getFileInStorage(data);
        }
    }

    private void getFileInStorage(@Nullable Intent data) {
        documents = new ArrayList<>();
        documents.clear();
        if (data != null) {
            ArrayList<MediaFile> mediaFileArrayList = data.getParcelableArrayListExtra(FilePickerActivity.MEDIA_FILES);
            if (mediaFileArrayList != null) {
                for (MediaFile mediaFile : mediaFileArrayList){

                    String filePath = Helper.getPath(this, mediaFile.getUri());

                    if (!TextUtils.isEmpty(filePath) || filePath != null){
                        File file = new File(filePath);
                        document = new Document(file.getName(), Helper.formatSize(file.length()), Helper.formatDate(file.lastModified()), file.getAbsolutePath());
                        documents.add(document);
                        Log.d(TAG, "Selected Filename =  " + document.getDocumentName());
                    }
                }
                //show selected image
                setupList(documents);
                List<String> paths = selectImagePaths();
                addImageToPDF = new AddImageToPDF(AddImageToPdfActivity.this, paths);
            }
        }
    }

    private List<String> selectImagePaths(){
        List<String> paths = new ArrayList<>();
        if (documents != null){
            for (Document document : documents){
                paths.add(document.getDocumentPath());
            }
        }
        return paths;
    }
}

7. TẠO FILE MENU LAYOUT

Chúng ta sẽ thêm một mục menu sẽ đóng vai trò như một nút để chuyển đổi hình ảnh sang tệp pdf.

Bên trong res folder, tạo một new resource folder và đặt tên cho nó là menu .

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_create_pdf"
        android:orderInCategory="100"
        android:title="Create PDF"
        app:showAsAction="always" />
</menu>
vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!



Khóa học liên quan

Khóa học: Android

Học Kotlin cơ bản
Số bài học:
Lượt xem: 17033
Đăng bởi: Admin
Chuyên mục: Android

Học lập trình Flutter cơ bản
Số bài học:
Lượt xem: 54931
Đăng bởi: Admin
Chuyên mục: Android

Lập trình Android cơ bản
Số bài học:
Lượt xem: 22134
Đăng bởi: Admin
Chuyên mục: Android