2016-03-10 4 views
0

У меня есть приложение для Android, которое должно генерировать PDF-документ с различными данными, полученными из базы данных. Все работает отлично, включены таблицы и флажки, которые я произвожу с этим отрезала кода:PDF checkboxes с iTextsharp

private PdfFormField WriteCheckbox(ref PdfContentByte pcb, float xPos, float yPos, string fldName, bool cbState) 
    { 
     yPos = yPos - 2f; 
     float cbDist = 1f; 
     Rectangle cbRect = new Rectangle(xPos, yPos, xPos + DEFAULT_CHECKBOX_SIZE, yPos + DEFAULT_CHECKBOX_SIZE); 
     RadioCheckField checkbox = new RadioCheckField(pcb.PdfWriter, cbRect, "", ""); 
     checkbox.CheckType = RadioCheckField.TYPE_SQUARE; 
     checkbox.BorderColor = BaseColor.BLACK; 
     checkbox.BorderStyle = PdfBorderDictionary.STYLE_SOLID; 
     checkbox.BorderWidth = 0.5f; 
     checkbox.FieldName = fldName; 

     if(cbState) 
     { 
      pcb.SetLineWidth(1.2f); 
      pcb.MoveTo(xPos + DEFAULT_CHECKBOX_DISTANCE, yPos + cbDist); 
      pcb.LineTo(xPos + DEFAULT_CHECKBOX_SIZE - cbDist - 1, yPos + DEFAULT_CHECKBOX_SIZE - cbDist - 1); 
      pcb.MoveTo(xPos + DEFAULT_CHECKBOX_SIZE - cbDist - 1, yPos + cbDist); 
      pcb.LineTo(xPos + DEFAULT_CHECKBOX_DISTANCE, yPos + DEFAULT_CHECKBOX_SIZE - cbDist - 1); 
     } 

     pcb.Stroke(); 

     return(checkbox.RadioField); 
    } 

Результирующий PDF является визуализировать правильно на планшете (Nexus 7), но когда я копирую его кон мой компьютер и откройте если в Acrobat Reader все находится в правильном месте, за исключением квадратов, которые я рисую, чтобы показать флажки. Я могу взять крест, который я рисую внутри квадратов, но не окружающий квадрат. Что происходит ?

Это ссылка на PDF генерироваться: https://www.dropbox.com/s/p388bw7egjsbi80/curit_2015_2.pdf?dl=0

Это ссылка на скриншоте Nexus 7 показывает тот же самый файл:

Любой намек будет очень высокую оценку.

+0

Ваши теги неверны. iTextSharp для C#. Я думаю, вы имели в виду iText. –

ответ

0

квадраты рисуют, чтобы показать флажки

Вашего код не делать никаких квадратов.

Что делает ваш код, на самом деле удивительно,

  • создает многочисленные поля формы флажка AcroForm, ни один из них не проверил, ни один из них не назвал, с квадратным выбором визуализации и
  • он рисует перекреститесь в содержании страницы в позициях, которые вы, кажется, хотите, чтобы они отображались.

Таким образом, даже если созданный PDF был действительным, это может раздражать людей, поскольку они, по-видимому, не могут отменить выбор предварительно выбранных записей, просто выберите их во второй раз, что приведет к двум пересекающимся крестам.


Причина, почему ваш флажок границ появляется только на некоторых PDF зрителей, а не на других, так же, как описан в this answer на вопрос "iText - Java Android - Adding fields to existing pdf":

форма AcroForm поле должно иметь не- пустое имя. Содержимое форм AcroForm предназначено для отправки в какую-либо службу для автоматической оценки, поэтому они должны быть названы и должны быть различимы по их соответствующим именам.

Некоторые читатели в формате PDF узнают, что они не могут правильно обрабатывать поля с пустыми именами и, следовательно, даже не показывать их, пока другие зрители узнают, что позже при попытке сохранить или опубликовать форму или не распознать это вообще, производя сломанные выходы.


Но даже после наименования ящиков по отдельности вы должны решить, хотите ли вы иметь поля формы AcroForm или нет. В первом случае вы просто добавляете правильно названные поля формы и выбираете их или нет, а в последнем случае вы будете рисовать полные флажки (а не только контрольные метки) в содержимом страницы и вообще не использовать поля формы.

+0

Я не понимал, что самым простым решением было сделать сам флажок.На самом деле мне не нужны пользователи для взаимодействия с документом, потому что это только предварительный просмотр окончательного документа (контроль отчета для тепловых генераторов). Имея PDF возможность напрямую помещать объект CheckBox в документ, мне показалось, что это наиболее очевидное решение, поэтому я искал любой намек и нашел некоторые образцы AcroForm для этого. @amedee, отчет о тегах C# и iTextSharp, потому что (извините, не упомянув об этом) Я работаю с Xamarin. –

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