PDFBox - Issue with generating PDF from a image

无人久伴 提交于 2019-11-28 00:12:19

These code may helpful to you,It works.

    public void createPDFFromImage(String pdfFile, 
        List<String> imgList,int x, int y, float scale) throws IOException, COSVisitorException {
    // the document
    PDDocument doc = null;
    try {
        doc = new PDDocument();
        Iterator iter = imgList.iterator();
        int imgIndex=0;
        while(iter.hasNext()) {
            PDPage page = new PDPage();
            doc.addPage(page);

            BufferedImage tmp_image = ImageIO.read(new File(iter.next().toString()));
            BufferedImage image = new BufferedImage(tmp_image.getWidth(), tmp_image.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);        
            image.createGraphics().drawRenderedImage(tmp_image, null);

            PDXObjectImage ximage = new PDPixelMap(doc, image);

            imgIndex++;


            PDPageContentStream contentStream = new PDPageContentStream(
                    doc, page,true,true);

            contentStream.drawXObject(ximage, x, y, ximage.getWidth()*scale, ximage.getHeight()*scale);

            contentStream.close();
        }
        doc.save(pdfFile);
    } finally {
        if (doc != null) {
            doc.close();
        }
    }
}

Have you considered cropping your image to prevent it from being cut off ?

contentStream.drawImage( ximage, 20, 20, croppedWidth, croppedHeight );

Please try to modify the drawImage statement as below:

content.drawImage(ximage,0 /*or your preferred indent*/,(700-ximage.getHeight()));
DipDas

Please add the below snippet and try:

Import required:

import org.apache.pdfbox.pdmodel.common.PDRectangle;

Code Addition:

PDXObjectImage image = new PDJpeg(pdfDoc, filePath));

float w = image.getWidth();
float h = image.getHeight();

PDPage page = new PDPage(new PDRectangle (w,h));
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!