2015-06-30 2 views
1

Я пытаюсь добавить аннотации к существующему PDF-файлу с использованием API iText и более старой версии Lowagie. Тем не менее, мне нужны альтернативы API, поскольку он, похоже, не в состоянии делать то, что задается в нашем требовании.PDF Аннотации с использованием JAVA

Требование, чтобы положить аннотацию в существующий PDF со следующими данными:

  • Тип: обычный текст
  • ПОлОжЕНИЕ: х = 0мм & & у = 0мм
  • Шрифт: Arial
  • Цвет текста: белый
  • Содержание текста: «некоторый текст»

Используя iText, я могу добавить аннотацию, но мне нужно приблизиться в пикселях, где на моей странице формата A4 я должен положить ее. Ближайшее приближение с помощью

PdfReader reader = new PdfReader(headerFilePath.concat(xmlFileName)); 
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(headerFilePath.concat(xmlFileNameNew))); 
    PdfAnnotation annotation = PdfAnnotation.createText(stamper.getWriter(), new Rectangle(0, 842, 5, 842), "some text", "some text", true, null); 
    annotation.setColor(Color.WHITE); 
    stamper.addAnnotation(annotation, 1); 
    reader.close(); 
    stamper.close(); 

Этот фрагмент кода помещает его на верхнем левом углу, но я не уверен, если это 0mm, 0мм. Также он черный, и я не могу указать шрифт.

Любая помощь по этому вопросу очень ценится. Благодаря!

ответ

0

Вы можете попробовать форматированный текст annotions, как описано here:

annotation.put(PdfName.RC, new PdfString("<font size=\"whatever\">" + 
             some text+ 
             "</font>")); 
myStamper.setGenerateAppearances(false); 

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

Вы хотите иметь белый цвет шрифта, который указывает, что вы хотите «транспортировать» некоторые скрытый (белый цвет на белом фоне) информация. Может быть, в этом случае вы можете использовать следующий механизм (который обычно используется для добавления водяных знаков и т.д.):

String text; 
int pageNumber 

PdfContentByte overContent = stamper.getOverContent(pageNumber); 

overContent.beginText(); 
overContent.setFontAndSize(yourFont, yourFontSize); 
//overContent.setGrayFill(...); 
overContent.showTextAligned(PdfContentByte.ALIGN_CENTER, yourText + " Center", 150, 760, 0); 
overContent.endText(); 

Update: Для того, чтобы установить аннотацию к Invisble добавить к коду:

annotation.setColor(Color.WHITE); 
//set visibility to 0 (invisble). All values between 0...1 are possible 
//so 0.5 means 50% opacity 
annotation.put(PdfName.CA, new PdfNumber(0)); 
+0

Да. Компания настаивает на использовании Arial в качестве шрифта, так как это то, что система распознает. Знаете ли вы, как наносить невидимые аннотации? Я пробовал PDFBox с setHidden и setInvisible как true, но он не работает. Благодаря! –

+0

Я забыл пометить вас по моему вопросу. Сожалею. –

+0

Просмотреть мое обновление ... – Lonzak

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