You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "John Hewson (JIRA)" <ji...@apache.org> on 2014/11/06 07:12:33 UTC
[jira] [Closed] (PDFBOX-1318) Stops when writing images to a large
file
[ https://issues.apache.org/jira/browse/PDFBOX-1318?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
John Hewson closed PDFBOX-1318.
-------------------------------
Resolution: Invalid
> Stops when writing images to a large file
> -----------------------------------------
>
> Key: PDFBOX-1318
> URL: https://issues.apache.org/jira/browse/PDFBOX-1318
> Project: PDFBox
> Issue Type: Bug
> Components: Writing
> Affects Versions: 1.6.0
> Environment: Tested on Ubuntu 11.10 1.7 GB memory AMD Dual Core QL-60x2, OS 10.7.4 iMac 4GB Quad 2.66 GHz i5, XP64 SP2 iMac 4GB Quad 2.66 GHz i5
> Reporter: DWiebe
>
> When writing images to a large pdf, it stops after some amount of images (the size depends on the machine) when creating a PDJpeg object.
> public void processFiles(File parent){
> int fileIndex = 1;
> for(ImageGroup g:allImages){
> int i = 0;
> int fileCount = 0;
> int imgCount = 0;
> PDDocument acrobat = null;
> String groupPath = parent.getAbsolutePath()+"/"+g.getName();
> File groupFolder = new File(groupPath);
>
> try{
> acrobat = new PDDocument();
>
> groupFolder.mkdir();
> }catch(Exception e){
> continue;
> }
> for(File f:g.getImages()){
> //set progress bar and text
> bar.setValue(fileIndex);
> currentStatus.setText("Currently processing "+fileIndex+" of "+totalFiles);
> System.out.println("Currently processing "+f.getName()+" "+fileIndex+" of "+totalFiles);
> this.pack();
> this.setVisible(true);
> this.repaint();
>
> PDPageContentStream contentStream = null;
>
> try{
> //pull image
> BufferedImage bigImage = ImageIO.read(f);
> int w = bigImage.getWidth();
> int h = bigImage.getHeight();
> //create page of image size
> PDRectangle rect = new PDRectangle(w, h);
> PDPage page = new PDPage(rect);
> acrobat.addPage(page);
> //draw image
> //THE PROGRAM STOPS HERE
> PDJpeg img = new PDJpeg(acrobat, bigImage);
>
> //the rest of drawing the image
> contentStream = new PDPageContentStream(acrobat,page);
> contentStream.drawImage(img, 0, 0);
> contentStream.close();
> //acrobat.save(groupPath+".pdf");
> //acrobat.close();
> //File result = new File(groupPath+".pdf");
> //acrobat = PDDocument.load(result);
>
> //copy image in case the user needs it.
> imgCount++;
> if(imgCount > Constants.MAX_FILE){
> acrobat.save(groupPath+".pdf");
> groupPath += "_"+fileCount;
> File excessFolder = new File(groupPath);
> fileCount++;
> imgCount = 0;
> try{
> acrobat = new PDDocument();
>
> excessFolder.mkdir();
> }catch(Exception e){
>
> }
> }
> }catch(Exception e){
> e.printStackTrace();
> }
>
> this.copyFile(f, groupPath+"/"+g.getName()+"_"+i+".jpg");
> i++;
> fileIndex++;
> }
> try {
> acrobat.save(groupPath+".pdf");
> acrobat.close();
> } catch (Exception e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> }
> currentStatus.setText("Your images have been copied successfully");
> this.pack();
> this.repaint();
> }
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)