CÁCH CHUYỂN ĐỔI HÌNH ẢNH SANG TỆP PDF BẰNG APACHE PDFBOX TRONG ANDROID (P2)
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>
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!