2017-02-14 8 views
-1

Я работаю над модулем, где требуется, чтобы первая страница всех PDF-файлов была проставлена ​​с использованием itext. Хотя код работает отлично для нормального PDF-х, когда я пытаюсь ту же логику для портфельных PDFs .Below является фрагмент кода для того же:Штамп первой страницы портфолио pdf с использованием itext

try { 

     PdfReader reader = new PdfReader("D:\\Test\\test.pdf"); 
     System.out.println(reader.getNumberOfPages()); 

     PdfStamper stamper = new PdfStamper(reader,new FileOutputStream("D:\\Test\\test_stamped.pdf")); 



     PdfContentByte canvas = stamper.getOverContent(i); 

     PdfDictionary root = reader.getCatalog(); 

     canvas.beginText(); 
     BaseFont baseFont = BaseFont.createFont(BaseFont.HELVETICA_BOLD, "ASCII", false); 
     canvas.setFontAndSize(baseFont, 14); 
     canvas.setRGBColorFill(255, 0, 0); 
     canvas.showTextAligned(PdfContentByte.ALIGN_CENTER, "Test Stamping-Pg"+i, 30, 1, 0); 
     canvas.endText(); 

     stamper.setFormFlattening(true); 
     stamper.close(); 
     reader.close(); 
     System.out.println("Stamping complete.."); 

    } catch (Throwable t) { 

     t.printStackTrace(); 
    } 

Было бы очень полезно, если бы кто-нибудь может мне помочь в этом.

+0

Что происходит, или не происходит? – Sid

ответ

1

Согласно спецификации PDF ISO 32000-1 (в котором «портфели» называются «портативные коллекции»),

Когда соответствующий читатель первым открывает PDF документ, содержащий коллекцию, он должен отображать содержимое исходного документа вместе со списком документов, содержащихся в дереве имен EmbeddedFiles. Список документов должен включать дополнительную информацию документа, указанную в схеме сбора. Первоначальный документ может быть контейнером PDF или одним из встроенных документов.

ПРИМЕЧАНИЕ 2. Содержание страницы в исходном документе должно содержать информацию, которая помогает пользователю понять, что содержится в коллекции, например заголовок и вводный параграф.

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

Вы можете проверить, является ли первоначальный документ не документ контейнер, но содержал один осматривая словарь коллекции:

Таблица 155 - Записи в словаре коллекции

D байтовая строка (необязательно) Строка, которая идентифицирует запись в дереве имен . Встраиваемые файлы дерево имен, d который должен быть первоначально представлен в пользовательском интерфейсе. Если запись D отсутствует или ошибочна, исходный документ должен содержать тот, который содержит словарь коллекции.