2016-05-18 4 views
-2

Я не мог заменить PDF-страницу в PDF-документе, когда есть высокий запас. Как изменить размер страницы PDF с помощью pdfbox2.0?Как создать экземпляр PageDrawer в PDFBox 2.0?

Если содержимое PDF страницы (в входной документ в формате PDF) является 6" х 8" - то я хочу, чтобы размер страницы как 5" х 7" и сохраните документ в формате PDF

+1

Очень запутанный вопрос: вы хотите заменить или изменить размер? PageDrawer предназначен для рендеринга. –

+0

, если содержание страницы pdf (в документе ввода pdf) составляет 6 "x 8" - тогда я хочу сделать размер страницы 5 "x 7" и сохранить документ pdf –

+0

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

ответ

0

Предполагая, что у вас есть PDPage объект:

PDRectangle mediaBox = page.getMediaBox(); 
if (mediaBox.getWidth() == 6 * 72 && mediaBox.getHeight() == 8 * 72) 
    mediaBox = new PDRectangle(5 * 72, 7 * 72); 

, а затем сохранить документ.

Если вы используете 1.8, используйте findMediaBox() вместо getMediaBox().

Возможно, было бы более полезно установить cropBox, методы аналогичны. Я не могу сказать, потому что у меня нет ваших файлов и не знаю, какую реальную проблему вы пытаетесь решить. Также может быть полезно настроить все 4 элемента PDRectangle (см. Javadoc) вместо ширины и высоты.

+0

PDFRenderer pdfRenderer = new PDFRenderer (document); \t BufferedImage highResImage = pdfRenderer.renderImageWithDPI (pageNo, OPTIMAL_DPI, ImageType.RGB); \t \t PDImageXObject ximage = LosslessFactory.createFromImage (document, highResImage); \t \t Матричное преобразование = новая Матрица (ширина, 0, 0, высота, xPosition, yPosition); \t \t PDPage newPage = PDFFileUtil.replacePage (document, pageNo); \t \t PDPageContentStream contentStream = новый PDPageContentStream (document, newPage, PDPageContentStream.AppendMode.OVERWRITE, false); \t \t contentStream.drawImage (ximage, transform); –

+0

выше код, который я использую, чтобы нарисовать изображение в соответствии с новым полем –

+0

Ну да, если вы замените поток контента изображением, вы потеряете текст (если там когда-либо были некоторые). Вы также потеряете качество, потому что вы заменяете векторную графику графикой пикселей. С моим решением из этого ответа вы не потеряете контент. Если он не работает, отправьте ссылку в PDF. –

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