2016-04-01 2 views
3

Плакат первого раза, медведь со мной ...Добавить BufferedImage в PDFBox 2.0 document

У меня есть два вопроса. Во-первых, я хочу знать, как добавить изображение в документ PDFBox 2.0 с помощью BufferedImage. Здесь задан вопрос: Add BufferedImage to PDFBox document

PDFBox с тех пор исключил класс PDJpeg и раздел xobject в целом.

Во-вторых, если кто-то уже задал этот вопрос, и на него был дан ответ, но ответ устарел; что лучше всего обновить/лучший способ связать эти два вопроса? (У меня нет точек, поэтому я не могу комментировать).

+2

Спасибо за ссылаясь на [оригинальный вопрос] (http://stackoverflow.com/questions/7055485/дополнения BufferedImage к pdfbox-документ); [* Миграция в PDFBox 2.0.0: Работа с изображениями *] (https://pdfbox.apache.org/2.0/migration.html) может помочь; если у вас что-то получается, добавьте ответ [там] (http://stackoverflow.com/questions/7055485/add-bufferedimage-to-pdfbox-document). – trashgod

ответ

3

PDFBox с тех пор исключил класс PDJpeg и раздел xobject в целом.

Там действительно было много рефакторинга (и повторного рефакторинга и повторно повторно рефакторинга и т.д.) в ходе разработки версии 2, и этот рефакторинг часто выходит за рамки простых изменений пакета. И довольно часто неясно, где сейчас есть какая-то функциональность.

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

Там в настоящее время является JPEGFactory, который предоставляет методы для создания XObjects изображения из BufferedImage, в частности:

/** 
* Creates a new JPEG Image XObject from a Buffered Image. 
* @param document the document where the image will be created 
* @param image the buffered image to embed 
* @return a new Image XObject 
* @throws IOException if the JPEG data cannot be written 
*/ 
public static PDImageXObject createFromImage(PDDocument document, BufferedImage image) 

/** 
* Creates a new JPEG Image XObject from a Buffered Image and a given quality. 
* The image will be created at 72 DPI. 
* @param document the document where the image will be created 
* @param image the buffered image to embed 
* @param quality the desired JPEG compression quality 
* @return a new Image XObject 
* @throws IOException if the JPEG data cannot be written 
*/ 
public static PDImageXObject createFromImage(PDDocument document, BufferedImage image, float quality) 

/** 
* Creates a new JPEG Image XObject from a Buffered Image, a given quality and DPI. 
* @param document the document where the image will be created 
* @param image the buffered image to embed 
* @param quality the desired JPEG compression quality 
* @param dpi the desired DPI (resolution) of the JPEG 
* @return a new Image XObject 
* @throws IOException if the JPEG data cannot be written 
*/ 
public static PDImageXObject createFromImage(PDDocument document, BufferedImage image, float quality, int dpi) 
+4

Спасибо вам большое! Если кто-то наткнется на это и задается вопросом о версии PNG: PDImageXObject pdImage = LosslessFactory.createFromImage (doc, bufferedImage); – vath

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