2015-04-21 1 views
2

Мое веб-приложение подписывает документы PDF. Я хочу, чтобы пользователи загружали исходный документ PDF (не подписали), но добавляли изображение и подписывающие документы в левом поле документа PDF.Как увеличить размер страницы PDF для добавления водяного знака?

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

Я приложил два изображения, оригинальный документ PDF (не подписан) и измененный документ PDF.

enter image description here

enter image description here

+0

я прав, если я считаю, что этот документ не только водяными, но и о том, что размер страница изменилась. Это как если бы дополнительное пространство было добавлено слева. Это верно? Водяной знак объясняется здесь: [Как погладить PDF-файлы с помощью текста или изображений?] (Http://stackoverflow.com/questions/29560373/how-to-watermark-pdfs-using-text-or-images). Ответ также доступен на французском языке: [Комментарий créer un filigrane transparent en PDF?] (Http://www.developpez.net/forums/blogs/133351-blowagie/b432/creer-filigrane-transparent-pdf/) –

+0

Да , размер страницы изменился. Я видел это с помощью Adobe Reader. Первый размер страницы документа составляет 215,9 x 279,4, а второй размер страницы документа - 210 x 297 (мм) – Eduardo

+1

Хорошо, этого легко достичь, но сейчас я нахожусь в Adobe HQ для собраний ISO по ISO-32000 -2, так что вам придется дать мне немного времени. –

ответ

1

Первое это: важно, чтобы изменить документ перед тем цифровой подписи его. После цифровой подписи эти изменения нарушат подпись.

Я разобьет вопрос на две части, и я пропущу часть о действительном водяных знаков, как это уже описано здесь: How to watermark PDFs using text or images?

Этот вопрос не является дубликатом этого вопроса, из-за дополнительной требование добавить дополнительный запас справа.

Взгляните на документ primes.pdf. Это исходный файл, который мы собираемся использовать в примере AddExtraMargin со следующим результатом: primes_extra_margin.pdf. Как вы можете видеть, полдюймовый запас был добавлен слева от каждой страницы.

Вот как это делается:

public void manipulatePdf(String src, String dest) throws IOException, DocumentException { 
    PdfReader reader = new PdfReader(src); 
    int n = reader.getNumberOfPages(); 
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); 
    // properties 
    PdfContentByte over; 
    PdfDictionary pageDict; 
    PdfArray mediabox; 
    float llx, lly, ury; 
    // loop over every page 
    for (int i = 1; i <= n; i++) { 
     pageDict = reader.getPageN(i); 
     mediabox = pageDict.getAsArray(PdfName.MEDIABOX); 
     llx = mediabox.getAsNumber(0).floatValue(); 
     lly = mediabox.getAsNumber(1).floatValue(); 
     ury = mediabox.getAsNumber(3).floatValue(); 
     mediabox.set(0, new PdfNumber(llx - 36)); 
     over = stamper.getOverContent(i); 
     over.saveState(); 
     over.setColorFill(new GrayColor(0.5f)); 
     over.rectangle(llx - 36, lly, 36, ury - llx); 
     over.fill(); 
     over.restoreState(); 
    } 
    stamper.close(); 
    reader.close(); 
} 

PdfDictionary мы получаем с помощью метода getPageN() называется словарь страницы. В нем много информации о конкретной странице в формате PDF. Мы смотрим только на одну запись: /MediaBox. Это только доказательство концепции. Если вы хотите написать более надежное приложение, вы также должны посмотреть на записи /CropBox и /Rotate. Кстати, я знаю, что эти записи не существуют в primes.pdf, поэтому я опускаю их здесь.

СМИ окно страницы является массивом с четырьмя значениями, которые представляют собой прямоугольник, определяемый координатами своего левого нижнего и верхнего правого угла (обычно, я называть их llx, lly, urx и ury).

В моем примере кода я изменяю значение llx путем вычитания 36 единиц пользователей. Если вы сравните размер страницы обоих PDF-файлов, вы увидите, что мы добавили полдюйма.

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

Update:

, если вам нужно сворачивать существующие страницы, пожалуйста, прочитайте Fix the orientation of a PDF in order to scale it

+0

спасибо! Я уверен, что со всей этой информацией я добьюсь своей цели. – Eduardo

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

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