2016-11-09 8 views
1

У меня тяжелые времена с этой проблемой. У меня есть файл PDF с полями, чтобы пользователь мог их заполнить.Заполнение Acrofield не работает должным образом

Я использую iTextSharp (на vb.net), чтобы открыть PDF-файл, прочитать поля и записать данные обратно (и показать их пользователю).

Doc не заблокирован и не имеет какой-либо меры безопасности.

Я прочитал его следующим образом:.

Dim readerPDF As New PdfReader(Application.StartupPath & "\PDF\" & filename) 
Dim pathTemp = IO.Path.GetTempFileName & ".pdf" 
Dim stamperPDF As New PdfStamper(readerPDF, New IO.FileStream(pathTemp, IO.FileMode.Create)) 
Dim pdfFormFields As AcroFields = stamperPDF.AcroFields 

тогда я просто pdfFormFields цикла (у меня уже есть ключ для каждого поля, сохраненного в базе данных

For each f as field_keys 
    pdfFormFields.SetField(f, "dummy text") 
Next 

Это работает отлично подходит для каждого ввода текста , никаких проблем нет. Когда у меня многострочное поле, эта штука становится неприятной.

Заполнение с использованием этого подхода дает мне:

Wrong field

Но если я открыть исходный PDF-файл с Adobe Reader и я пишу то же самое я получаю:

enter image description here

Так что ... Я даже не знаю, как смотреть это в Интернете. ITextSharp не поддерживает это или я что-то упускаю?

EDIT:Link to PDF

EDIT: библиотека DLL IText устарела. Загрузите последний, и проблема все еще возникает.

+0

Можете ли вы поделиться рассматриваемым pdf? – mkl

+0

@mkl Спасибо! Я добавил ссылку на Q. – Jaxedin

ответ

0

Возможно, проблема связана со свойствами многострочного поля. Одна из проблем может заключаться в том, что у вас есть фиксированный шрифт, который будет обрезать текст на экране при переполнении поля. Если шрифт «Авто», он сжимает шрифт, когда элемент управления заполняется.

+0

Это то, что делает Adobe Reader. Используя iText, просто напишите строку под другим. Я имею в виду, как iText не может читать свойства поля? или просто Adobe может? – Jaxedin

+0

iText не работает - если я прав. Свойства специфичны для того, как определяются поля формы PDF. – rheitzman

+0

так что я SOL с помощью iText? – Jaxedin

0

Одна вещь, чтобы понять, что в PDF значение поля и визуальный внешний вид поля - это две разные вещи. Внешний вид поля для отображения поля в случаях, когда средство просмотра PDF не знает, какое поле или его значение. Я верю, что причина, по которой вы видите То, что вы видите, это то, что есть некоторые незначительные ... и основные ... различия между тем, как Adobe Reader создает видимость и как iText генерирует видимость. Чтобы проверить мою теорию, просто отредактируйте поле в Adobe Reader и проверьте, не исправлена ​​ли проблема. Если это так, то генератор внешнего вида в iText является проблемой.

+0

Тот же PDF-файл, заполненный Adobe Reader, отлично работает. Строка имеет «высоту», и каждая новая строка написана правильно. Использование iText как-то пропустить это и продолжает писать чуть ниже .... Я не нахожу никакого способа установить высоту линии вообще, и печать бреши не работает. – Jaxedin

+0

Попробуйте использовать что-то вроде stamper.AcroFields.Xfa.FillXfaForm (sourceXml); Это позволит Acrobat форматировать поле, используя только данные. – joelgeraci

+0

Просто попробовал начинку с XFA. Тот же выход :( – Jaxedin

 Смежные вопросы

  • Нет связанных вопросов^_^