Java PDFBox v2将PNG图像写入PDF文件,获取空文件
我用的是PDFBOX2。正在尝试将PNG图像文件写入新的PDF文件 我看到已经有一个答案提到它固定在PDFBox2上: 及 这是我的代码:Java PDFBox v2将PNG图像写入PDF文件,获取空文件,java,image,pdf,png,pdfbox,Java,Image,Pdf,Png,Pdfbox,我用的是PDFBOX2。正在尝试将PNG图像文件写入新的PDF文件 我看到已经有一个答案提到它固定在PDFBox2上: 及 这是我的代码: package pdfProj; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.p
package pdfProj;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.LosslessFactory;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
public class b {
public static void main(String[] args) {
PDDocument doc = null;
doc = new PDDocument();
doc.addPage(new PDPage());
try{
BufferedImage awtImage = ImageIO.read( new File( "c://temp//line_chart.png" ) );
PDImageXObject pdImageXObject = LosslessFactory.createFromImage(doc, awtImage);
PDPageContentStream contentStream = new PDPageContentStream(doc, new PDPage(), true, false);
contentStream.drawImage(pdImageXObject, 200, 300, awtImage.getWidth() / 2, awtImage.getHeight() / 2);
contentStream.close();
doc.save( "c://temp//pdf//PDF_image.pdf" );
doc.close();
} catch (Exception io){
System.out.println(" -- fail --" + io);
}
}
}
也不例外。只是创建了一个空的PDF文件。问题是您要在文档中添加一个新页面
doc.addPage(new PDPage());
但是,然后为另一个新页面创建一个内容流,您不会将其添加到文档中:
PDPageContentStream contentStream = new PDPageContentStream(doc, new PDPage(), true, false);
您应该为添加到文档中的页面创建内容流,例如:
PDDocument doc = null;
doc = new PDDocument();
PDPage page = new PDPage();
doc.addPage(page);
try{
BufferedImage awtImage = ImageIO.read( new File( "c://temp//line_chart.png" ) );
PDImageXObject pdImageXObject = LosslessFactory.createFromImage(doc, awtImage);
PDPageContentStream contentStream = new PDPageContentStream(doc, page, true, false);
contentStream.drawImage(pdImageXObject, 200, 300, awtImage.getWidth() / 2, awtImage.getHeight() / 2);
contentStream.close();
doc.save( "c://temp//pdf//PDF_image.pdf" );
doc.close();
} catch (Exception io){
System.out.println(" -- fail --" + io);
}
我犯了这个错误失败--javax.imageio.IIOException:不支持的映像Type@Dhrumil这表明java image io类不支持您使用的图像类型,至少在没有其他插件的情况下不支持。比如JPG,JPEG,PNG等等。。我在Apache PDFBox 2.0.5中遇到了相同的错误。。我必须转移到PDFBox的较低版本,这个问题不会出现。我不知道为什么这个问题会出现在新版本中。请自行将其设置为堆栈溢出问题,并提供准确的关键代码和示例文件来重现该问题。当我使用旧版本的PDF box时,我能够生成PDF格式的图像。我不确定最新版本有什么问题。我将把这个问题发布到ApachePDF问题跟踪器。