PDF-поля из PDFbox не печатаются на мобильном устройстве (проблема с общим средством просмотра PDF-файлов для Android)IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 PDF-поля из PDFbox не печатаются на мобильном устройстве (проблема с общим средством просмотра PDF-файлов для Android)

Сообщение Anonymous »

Я создаю 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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