2013-10-09 2 views
0

Я использовал PDFBox для преобразования png-изображения в pdf-документ, и я успешно могу это сделать.PDF-документ имеет только половину ширины при преобразовании png-изображения в pdf с использованием PDFBox

Но я столкнулся с проблемой, в которой документ pdf показывает только 50% ширины изображения (высота отображается полностью). Пожалуйста, помогите мне с этим.

код я использую выглядит следующим образом:

public static void createPDFFromImage(String file, String image) throws IOException, COSVisitorException 
    { 
     PDDocument doc = null; 
     try 
     { 
      doc = new PDDocument(); 
      PDPage page = new PDPage(); 
      doc.addPage(page); 
      PDXObjectImage ximage = null; 
      if(image.toLowerCase().endsWith(".jpg") || image.toLowerCase().endsWith(".jpeg")) 
      {   
       BufferedImage awtImage = ImageIO.read(new File(image));    
       ximage = new PDJpeg(doc, awtImage, 0); 
      } 

      else 
      { 

       BufferedImage awtImage = new BufferedImage(250,250, BufferedImage.TYPE_INT_RGB);    
       awtImage = ImageIO.read(new FileImageInputStream(new File(image)));        
       ximage = new PDPixelMap(doc, awtImage); 
      } 
      System.out.println(" Width of the image.... " + ximage.getWidth()); 
      PDPageContentStream contentStream = new PDPageContentStream(doc, page); 
      contentStream.drawImage(ximage, 20, 20); 
      //contentStream.drawImage(ximage, 20, 20); 
      contentStream.close(); 
      doc.save(file); 
     } 
     finally 
     { 
      if(doc != null) 
      { 
       doc.close(); 
      } 
     } 
    } 

Примечание: каждый раз, когда размер изображения становится изменен при сохранении

Пожалуйста, помогите. Thanks

+0

Код не имеет смысла - вы создаете объект BufferedImage (awtImage), а затем перезаписываете его с помощью ImageIO.read(). Чтобы «доказать», что что-то не так, сравните awtImage.getWidth() с ximage.getWidth(). –

ответ

0

Этот код может быть hepful для вас.

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(); 
     } 
    } 
} 
+0

Вместо того, чтобы добавлять идентичные ответы на несколько вопросов, отправьте этот ответ только один раз и добавьте ссылки на другой вопрос, указывающий на ваш ответ. (Cf.http: //stackoverflow.com/questions/13728606/pdfbox-issue-with-generating-pdf-from-a-image/22318681#22318681) – mkl

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