[ 
https://issues.apache.org/jira/browse/PDFBOX-3359?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ivan Ridao Freitas updated PDFBOX-3359:
---------------------------------------
    Description: 
First, there is a little bug on PDFRenderer.renderPageToGraphics(int pageIndex, 
Graphics2D graphics, float scale) when using scale != 1 the call to clearRect() 
fills the original size with white background, but it should fill the scaled 
size.

Second, I implemented a JPanel which is painted using that function and on 
every paint this message goes to the console:
"DEBUG ScratchFileBuffer:516 - ScratchFileBuffer not closed!". Here is the code 
to test it, run it and resize the JFrame:

{code:title=PanelTest.java|borderStyle=solid}
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.io.File;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;

public class PanelTest {
   
    private static JPanel getTestPanel() {
        PDDocument doc = null;
        try {
            doc = PDDocument.load(new File("anyfile.pdf"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        final PDFRenderer renderer = new PDFRenderer(doc);
        JPanel panel = new JPanel() {
            @Override
            protected void paintComponent(Graphics g) {
                try {
                    renderer.renderPageToGraphics(0, (Graphics2D) g, 0.5f);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        };
        return panel;
    }

    public static void main(String[] args) throws Exception {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                frame.add(getTestPanel());
                frame.pack();
                frame.setSize(600, 400);
                Dimension paneSize = frame.getSize();
                Dimension screenSize = frame.getToolkit().getScreenSize();
                frame.setLocation((screenSize.width - paneSize.width) / 2, 
(screenSize.height - paneSize.height) / 2);
                frame.setTitle("Test");
                frame.setVisible(true);
            }
        });
    }
}
{code}

Ivan 

  was:
First, there is a little bug on PDFRenderer.renderPageToGraphics(int pageIndex, 
Graphics2D graphics, float scale) when using scale != 1 the call to clearRect() 
fill the original size with white background, but it should fill the scaled 
size.

Second, I implemented a JPanel which is painted using that function and on 
every paint this message goes to the console:
"DEBUG ScratchFileBuffer:516 - ScratchFileBuffer not closed!". Here is the code 
to test it, run it and resize the JFrame:

{code:title=PanelTest.java|borderStyle=solid}
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.io.File;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;

public class PanelTest {
   
    private static JPanel getTestPanel() {
        PDDocument doc = null;
        try {
            doc = PDDocument.load(new File("anyfile.pdf"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        final PDFRenderer renderer = new PDFRenderer(doc);
        JPanel panel = new JPanel() {
            @Override
            protected void paintComponent(Graphics g) {
                try {
                    renderer.renderPageToGraphics(0, (Graphics2D) g, 0.5f);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        };
        return panel;
    }

    public static void main(String[] args) throws Exception {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                frame.add(getTestPanel());
                frame.pack();
                frame.setSize(600, 400);
                Dimension paneSize = frame.getSize();
                Dimension screenSize = frame.getToolkit().getScreenSize();
                frame.setLocation((screenSize.width - paneSize.width) / 2, 
(screenSize.height - paneSize.height) / 2);
                frame.setTitle("Test");
                frame.setVisible(true);
            }
        });
    }
}
{code}

Ivan 


> Drawing to Graphics2D
> ---------------------
>
>                 Key: PDFBOX-3359
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-3359
>             Project: PDFBox
>          Issue Type: Bug
>    Affects Versions: 2.0.1
>            Reporter: Ivan Ridao Freitas
>
> First, there is a little bug on PDFRenderer.renderPageToGraphics(int 
> pageIndex, Graphics2D graphics, float scale) when using scale != 1 the call 
> to clearRect() fills the original size with white background, but it should 
> fill the scaled size.
> Second, I implemented a JPanel which is painted using that function and on 
> every paint this message goes to the console:
> "DEBUG ScratchFileBuffer:516 - ScratchFileBuffer not closed!". Here is the 
> code to test it, run it and resize the JFrame:
> {code:title=PanelTest.java|borderStyle=solid}
> import java.awt.Dimension;
> import java.awt.Graphics;
> import java.awt.Graphics2D;
> import java.io.File;
> import java.io.IOException;
> import javax.swing.JFrame;
> import javax.swing.JPanel;
> import javax.swing.SwingUtilities;
> import javax.swing.WindowConstants;
> import org.apache.pdfbox.pdmodel.PDDocument;
> import org.apache.pdfbox.rendering.PDFRenderer;
> public class PanelTest {
>    
>     private static JPanel getTestPanel() {
>         PDDocument doc = null;
>         try {
>             doc = PDDocument.load(new File("anyfile.pdf"));
>         } catch (IOException e) {
>             e.printStackTrace();
>         }
>         final PDFRenderer renderer = new PDFRenderer(doc);
>         JPanel panel = new JPanel() {
>             @Override
>             protected void paintComponent(Graphics g) {
>                 try {
>                     renderer.renderPageToGraphics(0, (Graphics2D) g, 0.5f);
>                 } catch (IOException e) {
>                     e.printStackTrace();
>                 }
>             }
>         };
>         return panel;
>     }
>     public static void main(String[] args) throws Exception {
>         SwingUtilities.invokeLater(new Runnable() {
>             @Override
>             public void run() {
>                 JFrame frame = new JFrame();
>                 frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
>                 frame.add(getTestPanel());
>                 frame.pack();
>                 frame.setSize(600, 400);
>                 Dimension paneSize = frame.getSize();
>                 Dimension screenSize = frame.getToolkit().getScreenSize();
>                 frame.setLocation((screenSize.width - paneSize.width) / 2, 
> (screenSize.height - paneSize.height) / 2);
>                 frame.setTitle("Test");
>                 frame.setVisible(true);
>             }
>         });
>     }
> }
> {code}
> Ivan 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to