2014-10-03 47 views
4

我不得不将图像打印成“PDF”使用下面的代码:PDFBOX JPG图像是工作,但PNG不工作

InputStream in = new FileInputStream(new File("C:/"+imageName)); 
PDJpeg img = new PDJpeg(doc, in); 
contentStream.drawXObject(img, 20, pageYaxis-120, 80, 80); 

这里时imagName =“A.JPG”它的做工精细,在imagName的情况下, =“b.png”不起作用。在JPG图像的工作,但在PNG它没有。为什么是这样?请帮帮我。我怎样才能打印两种格式,我的意思是格式取决于?

+3

所以基本上,你试图使用功能PDJpeg与PNG图像? – usr2564301 2014-10-03 14:21:19

+1

@Jongware是老兄,笏更改我需要使它接受PNG也?? – androidGenX 2014-10-04 04:23:51

回答

10

在Apache中PDFBox的1.8,使用PDPixelMap PNG图像:

BufferedImage awtImage = ImageIO.read(new File(image)); 
ximage = new PDPixelMap(doc, awtImage); 

在PDFBox的源代码,请参见ImageToPDF.java例子。这将适用于所有可以使用ImageIO读取的文件。但是,继续使用PDJpeg for JPG图像仍然很有用,因为在那里JPEG文件直接放入PDF文件而不会被转换为无损格式。

+0

会试试哥们感谢您的帮助! – androidGenX 2014-10-04 06:02:17

+0

我试过不工作的朋友 – androidGenX 2014-10-06 04:32:50

+1

你按下绿色的符号,你写它不工作?什么不起作用? – 2014-10-06 17:25:01

1
Bitmap alphaImage = BitmapFactory.decodeStream(in); 
PDImageXObject alphaXimage = LosslessFactory.createFromImage(document, alphaImage); 
+2

我怀疑你的答案是为Android。你应该提到这一点,并提及哪个版本。 – 2017-03-07 18:51:54