Ivan Ridao Freitas created PDFBOX-3359:
------------------------------------------

             Summary: 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() 
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 



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

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: dev-h...@pdfbox.apache.org

Reply via email to