Я создаю PDF-файл с помощью pdfbox и устанавливаю несколько полей. В загруженном PDF-файле отсутствуют поля при предварительном просмотре печати, и он не печатается в программах просмотра PDF-файлов по умолчанию для iOS и Android, но если я устанавливаю Adobe Acrobat, они отображаются и печатаются правильно.
PDF отображается правильно. и печатает в Chrome на моем MacBook.
Сначала я подумал, что этот шрифт не поддерживается, поэтому удалил Helvetica и заставил его использовать встроенный шрифт.
pDAcroForm.setNeedAppearances(true);. При этом был удален не встроенный шрифт.
Шаблон получен
public byte[] createPdf(long customer, UUID id, int amount) throws xxxxxxx {
ByteArrayOutputStream outputStream;
Resource resource = resourceLoader.getResource("classpath:xxxxxx.pdf");
try (PDDocument pdDocument = PDDocument.load(resource.getFile());) {
PDAcroForm pDAcroForm = pdDocument.getDocumentCatalog().getAcroForm();
pDAcroForm.setNeedAppearances(true);
поля редактируются с помощью
PDTextField fieldCustomer = (PDTextField) pDAcroForm.getField("customer");
fieldCustomer.setValue(String.valueOf(customerId));
fieldCustomer.setReadOnly(true);
....
outputStream = new ByteArrayOutputStream();
pdDocument.save(outputStream);
-------- РЕШЕНИЕ/ВРЕМЕННОЕ РЕШЕНИЕ-----------
Похоже, что базовый Android pdf средства просмотра не поддерживают заполняемые поля формы. Чтобы использовать поля, пользователи должны открыть его в реальном PDF-приложении, таком как Adobe. Я заменил поля, в которые ввожу данные, обычными текстовыми строками. Если вам тоже понравился этот сюрприз, посмотрите этот фрагмент. `
``` PDPage firstPage=pdDocument.getPage(0);
PDFont pdfFont= PDType1Font.HELVETICA_BOLD;
int fontSize = 14;
PDPageContentStream contentStream = new PDPageContentStream(pdDocument, firstPage, PDPageContentStream.AppendMode.APPEND,true,true);
contentStream.setFont(pdfFont, fontSize);
contentStream.beginText();
contentStream.newLineAtOffset(210,500);
contentStream.showText(xxxxx);
contentStream.newLineAtOffset(0,-28);
contentStream.showText(xxxxx);
contentStream.newLineAtOffset(0,-28);
contentStream.showText(fxxxxxx);
contentStream.endText();
contentStream.close();```
Подробнее здесь: https://stackoverflow.com/questions/790 ... wer-proble
PDF-поля из PDFbox не печатаются на мобильном устройстве (проблема с общим средством просмотра PDF-файлов для Android) ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение