Происходит сбой, и приложение закрывается при записи PDF-файла с использованием библиотеки itext версии 7.1.17.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Происходит сбой, и приложение закрывается при записи PDF-файла с использованием библиотеки itext версии 7.1.17.

Сообщение Anonymous »

Прошу прощения у всех, так как у меня нет компьютера, поэтому я не могу использовать Android Studio и выяснить исключения.
Моя проблема: происходит сбой, и приложение закрывается при записи файла PDF с использованием библиотеки itext версия 7.1.17
и я добавил все разрешения
я проверил хранилище и нашел пустой PDF-файл
Сначала я подумал, что проблема связана с типом шрифта. Я использовал шрифты, интегрированные с библиотекой, и это не решило проблему. Я пробовал другие версии, и это тоже не решило проблему
это зависимости

Код: Выделить всё

dependencies {
implementation 'androidx.appcompat:appcompat:1.7.0-alpha01'
implementation 'com.google.android.material:material:1.8.0-rc01'
implementation 'androidx.constraintlayout:constraintlayout:2.2.0-alpha05'
implementation 'com.itextpdf:kernel:7.1.17'
implementation 'com.itextpdf:layout:7.1.17'
implementation 'com.itextpdf:io:7.1.17'
}
и это мой простой код
`public class MainActivity расширяет AppCompatActivity {

Код: Выделить всё

private static final int REQUEST_WRITE_PERMISSION = 1;

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

if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_PERMISSION);
} else {
pdfWriter();
}
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_WRITE_PERMISSION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
pdfWriter();
} else {
System.out.println("Permission Denied!");
}
}
}

public void pdfWriter() {
PdfWriter writer = null;
PdfDocument pdf = null;
Document document = null;

try {

String pdfPath = getExternalFilesDir(null) + "/invoice.pdf";

writer = new PdfWriter(pdfPath);
pdf = new PdfDocument(writer);
document = new Document(pdf);

document.add(new Paragraph("Sales Invoice")
.setFontSize(18)
.setBold()
.setMarginBottom(20));

document.add(new Paragraph("Seller: ABC Store\nAddress: Main Street, City\nPhone: 123456789")
.setFontSize(12)
.setMarginBottom(10));
document.add(new Paragraph("Customer: John Smith\nAddress: Future District, City\nPhone: 987654321")
.setFontSize(12)
.setMarginBottom(20));

float[] columnWidths = {50, 200, 100, 100};
Table table = new Table(columnWidths);

table.addCell(new Cell().add(new Paragraph("No.").setBold()));
table.addCell(new Cell().add(new Paragraph("Product").setBold()));
table.addCell(new Cell().add(new Paragraph("Quantity").setBold()));
table.addCell(new Cell().add(new Paragraph("Price").setBold()));

String[][] products = {
{"1", "Laptop", "2", "$1500"},
{"2", "Smartphone", "1", "$1200"},
{"3", "Keyboard", "3", "$100"}
};

for (String[] product : products) {
for (String data : product) {
table.addCell(new Cell().add(new Paragraph(data)));
}
}

document.add(table);

document.add(new Paragraph("Total Amount: $4400")
.setFontSize(14)
.setBold()
.setMarginTop(20));

} catch (Exception e) {
e.printStackTrace();
} finally {

if (document != null) {
document.close();
}
}
}
}`
Тогда я подумал об использовании другой библиотеки, а именно PDFBox, и возник конфликт между библиотеками, и это было еще более ужасным проблема. Я искал встроенные библиотеки и обнаружил, что они не поддерживают водяные знаки и пароли.

Подробнее здесь: https://stackoverflow.com/questions/792 ... ng-itext-l
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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