Как объединить несколько загруженных PDF-файлов из каталога «Загрузки» в Android Studio с помощью Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как объединить несколько загруженных PDF-файлов из каталога «Загрузки» в Android Studio с помощью Java?

Сообщение Anonymous »

Я разрабатываю приложение для Android, в котором мне нужно объединить несколько PDF-файлов, загруженных и сохраненных в каталоге «Загрузки» устройства. После слияния мне нужно удалить все исходные файлы, кроме вновь объединенного. Я хотел бы сделать это с помощью Java в Android Studio.
Загруженные файлы не повреждены, так как я могу без проблем открыть их вручную. Тем не менее, я все еще сталкиваюсь с ошибкой Pdf startxref not Found. Похоже, это связано с неправильным обращением во время процесса слияния, хотя PDF-файлы сами по себе открываются нормально.
Может ли кто-нибудь помочь мне понять причину этой ошибки и способы ее устранения? Кроме того, мы будем очень признательны за любые предложения о том, как удалить исходные файлы после слияния!
Вот код, который я использую для объединения PDF-файлов:
List filePath2 = new ArrayList(); // To store downloaded file

private void mergePdfs(String filePath1) {
if (!hasStoragePermissions()) {
requestPermission();
} else {
String newFilePath = null;
PdfCopy copy = null;
Document document = null;
try {
String newFileName = patientData.getFullname() + new SimpleDateFormat("yyyyMMddHHmmSS").format(new Date()) + ".pdf".replace(" ", "");
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), newFileName);
file.createNewFile();
newFilePath = file.getAbsolutePath();

document = new Document();

copy = new PdfCopy(document, new FileOutputStream(newFilePath));
document.open();

if(new File(filePath1).exists()) {
PdfReader reader1 = null;
try {
reader1 = new PdfReader(filePath1);
if (reader1.isOpenedWithFullPermissions()) {
copy.addDocument(reader1);
}
} finally {
if (reader1 != null) {
reader1.close();
}
new File(filePath1).delete();
}
}

for (String path : filePath2) {
if(new File(path).exists()) {
PdfReader reader = null;
try {
reader = new PdfReader(path);
if (reader.isOpenedWithFullPermissions()) {
copy.addDocument(reader);
}
} finally {
if (reader != null) {
reader.close();
}
}
new File(path).delete();
}
}

document.close();
copy.close();

Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "PDF file generated successfully.", Snackbar.LENGTH_LONG).
setTextColor(Color.WHITE).setActionTextColor(Color.WHITE).setBackgroundTint(getResources().getColor(R.color.greensnack));
View snackbarView = snackbar.getView();
TextView textView = (TextView) snackbarView.findViewById(com.google.android.material.R.id.snackbar_action);
textView.setText("");
textView.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.snackbar_close, 0);
textView.setGravity(Gravity.RIGHT);
snackbar.show();
} catch (Exception e) {
if (newFilePath != null) {
new File(newFilePath).delete();
}
if(new File(filePath1).exists()) {
new File(filePath1).delete();
}
for (String path : filePath2) {
if(new File(path).exists()){
new File(path).delete();
}
}
showSnackbar("Something went wrong while generating PDF.");
System.out.println("Merge error" + e);
}
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... in-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»