Re: Converting pptx to pdf

Andreas Beeker <[email protected]>
Newsgroups gmane.comp.jakarta.poi.user
Message-ID <[email protected]>
Hi Jessy,

here a few points about this issue:
* PDF support is relatively new and there are a few/lot (?) of cases which work differently opposed to PPTX->PNG
* I can have a look at your input file and try to figure out what's wrong - either send it to the list or to me privately
* Cascaded properties from themes are a source of errors - POIs handling is a bit shirtsleeved in this area
* Please try out the convenience tool PPTX2PNG (http://poi.apache.org/components/slideshow/ppt-wmf-emf-renderer.html)
* Also check the nightly - description about how to use the nightly is also in the above link. In case I fix something, it would be cool, if you could verify it

Andi


On 29.05.21 12:41, Jessy Ping wrote:
> HI all,
>
> I am trying to convert pptx file containing a custom theme and two text
> boxes to pdf. I am able to convert into PDF, but the theme  size is reduced
> and the two text box is printed on a white background.Any insights will be
> helpful.
> Code below,
>
> static void convertToPdf(String fileName) throws IOException,
> DocumentException {
>>      FileInputStream inputStream = new FileInputStream(pptLocation + fileName + PPT);
>>      double zoom = 2;
>>      AffineTransform at = new AffineTransform();
>>      at.setToScale(zoom, zoom);
>>      Document pdfDocument = new Document();
>>      PdfWriter pdfWriter = PdfWriter.getInstance(pdfDocument, new FileOutputStream(pdfLocation + fileName + PDF));
>>      PdfPTable table = new PdfPTable(1);
>>      pdfWriter.open();
>>      pdfDocument.open();
>>      Dimension pgsize = null;
>>      Image slideImage = null;
>>      BufferedImage img = null;
>>
>>
>>      XMLSlideShow ppt = new XMLSlideShow(inputStream);
>>      pgsize = ppt.getPageSize();
>>      List<XSLFSlide> slides = ppt.getSlides();
>>      pdfDocument.setPageSize(new Rectangle((float) pgsize.getWidth(), (float) pgsize.getHeight()));
>>      pdfWriter.open();
>>      pdfDocument.open();
>>      for (int i = 0; i < slides.size(); i++) {
>>          img = new BufferedImage((int) Math.ceil(pgsize.width * zoom), (int) Math.ceil(pgsize.height * zoom), BufferedImage.TYPE_INT_RGB);
>>          Graphics2D graphics = img.createGraphics();
>>          graphics.setTransform(at);
>>
>>          graphics.setPaint(Color.white);
>>          graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
>>          slides.get(i).draw(graphics);
>>          graphics.getPaint();
>>          slideImage = Image.getInstance(img, null);
>>          table.addCell(new PdfPCell(slideImage, false));
>>
>>      }
>>      pdfDocument.add(table);
>>      pdfDocument.close();
>>      pdfWriter.close();
>>
>> }
>>
>>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.