[ 
https://issues.apache.org/jira/browse/PDFBOX-5898?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17897459#comment-17897459
 ] 

Tilman Hausherr edited comment on PDFBOX-5898 at 11/23/24 9:34 AM:
-------------------------------------------------------------------

I think the problem is in java itself, the pattern has this:
{code}
7 7 1 1 re
f
6 7 1 1 re
f
5 7 1 1 re
f
4 7 1 1 re
f
3 7 1 1 re
f
2 7 1 1 re
f
{code}
so it's creating many 1x1 rectangles, but isn't really perfect. PDF.js has the 
same problem at some resolutions.

These are the actual coordinates:

Point2D.Float[5.25, 5.25] Point2D.Float[6.0, 5.25] Point2D.Float[6.0, 6.0] 
Point2D.Float[5.25, 6.0]
Point2D.Float[4.5, 5.25] Point2D.Float[5.25, 5.25] Point2D.Float[5.25, 6.0] 
Point2D.Float[4.5, 6.0]
Point2D.Float[3.75, 5.25] Point2D.Float[4.5, 5.25] Point2D.Float[4.5, 6.0] 
Point2D.Float[3.75, 6.0]
Point2D.Float[3.0, 5.25] Point2D.Float[3.75, 5.25] Point2D.Float[3.75, 6.0] 
Point2D.Float[3.0, 6.0]
Point2D.Float[2.25, 5.25] Point2D.Float[3.0, 5.25] Point2D.Float[3.0, 6.0] 
Point2D.Float[2.25, 6.0]
Point2D.Float[1.5, 5.25] Point2D.Float[2.25, 5.25] Point2D.Float[2.25, 6.0] 
Point2D.Float[1.5, 6.0]
Point2D.Float[0.75, 5.25] Point2D.Float[1.5, 5.25] Point2D.Float[1.5, 6.0] 
Point2D.Float[0.75, 6.0]
Point2D.Float[0.0, 5.25] Point2D.Float[0.75, 5.25] Point2D.Float[0.75, 6.0] 
Point2D.Float[0.0, 6.0]
Point2D.Float[5.25, 4.5] Point2D.Float[6.0, 4.5] Point2D.Float[6.0, 5.25] 
Point2D.Float[5.25, 5.25]
Point2D.Float[4.5, 4.5] Point2D.Float[5.25, 4.5] Point2D.Float[5.25, 5.25] 
Point2D.Float[4.5, 5.25]
Point2D.Float[3.75, 4.5] Point2D.Float[4.5, 4.5] Point2D.Float[4.5, 5.25] 
Point2D.Float[3.75, 5.25]
Point2D.Float[3.0, 4.5] Point2D.Float[3.75, 4.5] Point2D.Float[3.75, 5.25] 
Point2D.Float[3.0, 5.25]
Point2D.Float[2.25, 4.5] Point2D.Float[3.0, 4.5] Point2D.Float[3.0, 5.25] 
Point2D.Float[2.25, 5.25]
Point2D.Float[1.5, 4.5] Point2D.Float[2.25, 4.5] Point2D.Float[2.25, 5.25] 
Point2D.Float[1.5, 5.25]
Point2D.Float[0.75, 4.5] Point2D.Float[1.5, 4.5] Point2D.Float[1.5, 5.25] 
Point2D.Float[0.75, 5.25]
Point2D.Float[0.0, 4.5] Point2D.Float[0.75, 4.5] Point2D.Float[0.75, 5.25] 
Point2D.Float[0.0, 5.25]
Point2D.Float[5.25, 3.75] Point2D.Float[6.0, 3.75] Point2D.Float[6.0, 4.5] 
Point2D.Float[5.25, 4.5]
Point2D.Float[4.5, 3.75] Point2D.Float[5.25, 3.75] Point2D.Float[5.25, 4.5] 
Point2D.Float[4.5, 4.5]
Point2D.Float[3.75, 3.75] Point2D.Float[4.5, 3.75] Point2D.Float[4.5, 4.5] 
Point2D.Float[3.75, 4.5]
Point2D.Float[3.0, 3.75] Point2D.Float[3.75, 3.75] Point2D.Float[3.75, 4.5] 
Point2D.Float[3.0, 4.5]
Point2D.Float[2.25, 3.75] Point2D.Float[3.0, 3.75] Point2D.Float[3.0, 4.5] 
Point2D.Float[2.25, 4.5]
Point2D.Float[1.5, 3.75] Point2D.Float[2.25, 3.75] Point2D.Float[2.25, 4.5] 
Point2D.Float[1.5, 4.5]
Point2D.Float[0.75, 3.75] Point2D.Float[1.5, 3.75] Point2D.Float[1.5, 4.5] 
Point2D.Float[0.75, 4.5]
Point2D.Float[0.0, 3.75] Point2D.Float[0.75, 3.75] Point2D.Float[0.75, 4.5] 
Point2D.Float[0.0, 4.5]
Point2D.Float[5.25, 3.0] Point2D.Float[6.0, 3.0] Point2D.Float[6.0, 3.75] 
Point2D.Float[5.25, 3.75]
Point2D.Float[4.5, 3.0] Point2D.Float[5.25, 3.0] Point2D.Float[5.25, 3.75] 
Point2D.Float[4.5, 3.75]
Point2D.Float[3.75, 3.0] Point2D.Float[4.5, 3.0] Point2D.Float[4.5, 3.75] 
Point2D.Float[3.75, 3.75]
Point2D.Float[2.25, 3.0] Point2D.Float[3.0, 3.0] Point2D.Float[3.0, 3.75] 
Point2D.Float[2.25, 3.75]
Point2D.Float[1.5, 3.0] Point2D.Float[2.25, 3.0] Point2D.Float[2.25, 3.75] 
Point2D.Float[1.5, 3.75]
Point2D.Float[0.75, 3.0] Point2D.Float[1.5, 3.0] Point2D.Float[1.5, 3.75] 
Point2D.Float[0.75, 3.75]
Point2D.Float[0.0, 3.0] Point2D.Float[0.75, 3.0] Point2D.Float[0.75, 3.75] 
Point2D.Float[0.0, 3.75]
Point2D.Float[5.25, 2.25] Point2D.Float[6.0, 2.25] Point2D.Float[6.0, 3.0] 
Point2D.Float[5.25, 3.0]
Point2D.Float[4.5, 2.25] Point2D.Float[5.25, 2.25] Point2D.Float[5.25, 3.0] 
Point2D.Float[4.5, 3.0]
Point2D.Float[3.75, 2.25] Point2D.Float[4.5, 2.25] Point2D.Float[4.5, 3.0] 
Point2D.Float[3.75, 3.0]
Point2D.Float[3.0, 2.25] Point2D.Float[3.75, 2.25] Point2D.Float[3.75, 3.0] 
Point2D.Float[3.0, 3.0]
Point2D.Float[2.25, 2.25] Point2D.Float[3.0, 2.25] Point2D.Float[3.0, 3.0] 
Point2D.Float[2.25, 3.0]
Point2D.Float[1.5, 2.25] Point2D.Float[2.25, 2.25] Point2D.Float[2.25, 3.0] 
Point2D.Float[1.5, 3.0]
Point2D.Float[0.75, 2.25] Point2D.Float[1.5, 2.25] Point2D.Float[1.5, 3.0] 
Point2D.Float[0.75, 3.0]
Point2D.Float[0.0, 2.25] Point2D.Float[0.75, 2.25] Point2D.Float[0.75, 3.0] 
Point2D.Float[0.0, 3.0]
Point2D.Float[5.25, 1.5] Point2D.Float[6.0, 1.5] Point2D.Float[6.0, 2.25] 
Point2D.Float[5.25, 2.25]
Point2D.Float[4.5, 1.5] Point2D.Float[5.25, 1.5] Point2D.Float[5.25, 2.25] 
Point2D.Float[4.5, 2.25]
Point2D.Float[3.75, 1.5] Point2D.Float[4.5, 1.5] Point2D.Float[4.5, 2.25] 
Point2D.Float[3.75, 2.25]
Point2D.Float[3.0, 1.5] Point2D.Float[3.75, 1.5] Point2D.Float[3.75, 2.25] 
Point2D.Float[3.0, 2.25]
Point2D.Float[2.25, 1.5] Point2D.Float[3.0, 1.5] Point2D.Float[3.0, 2.25] 
Point2D.Float[2.25, 2.25]
Point2D.Float[1.5, 1.5] Point2D.Float[2.25, 1.5] Point2D.Float[2.25, 2.25] 
Point2D.Float[1.5, 2.25]
Point2D.Float[0.75, 1.5] Point2D.Float[1.5, 1.5] Point2D.Float[1.5, 2.25] 
Point2D.Float[0.75, 2.25]
Point2D.Float[0.0, 1.5] Point2D.Float[0.75, 1.5] Point2D.Float[0.75, 2.25] 
Point2D.Float[0.0, 2.25]
Point2D.Float[5.25, 0.75] Point2D.Float[6.0, 0.75] Point2D.Float[6.0, 1.5] 
Point2D.Float[5.25, 1.5]
Point2D.Float[4.5, 0.75] Point2D.Float[5.25, 0.75] Point2D.Float[5.25, 1.5] 
Point2D.Float[4.5, 1.5]
Point2D.Float[3.75, 0.75] Point2D.Float[4.5, 0.75] Point2D.Float[4.5, 1.5] 
Point2D.Float[3.75, 1.5]
Point2D.Float[3.0, 0.75] Point2D.Float[3.75, 0.75] Point2D.Float[3.75, 1.5] 
Point2D.Float[3.0, 1.5]
Point2D.Float[2.25, 0.75] Point2D.Float[3.0, 0.75] Point2D.Float[3.0, 1.5] 
Point2D.Float[2.25, 1.5]
Point2D.Float[1.5, 0.75] Point2D.Float[2.25, 0.75] Point2D.Float[2.25, 1.5] 
Point2D.Float[1.5, 1.5]
Point2D.Float[0.75, 0.75] Point2D.Float[1.5, 0.75] Point2D.Float[1.5, 1.5] 
Point2D.Float[0.75, 1.5]
Point2D.Float[0.0, 0.75] Point2D.Float[0.75, 0.75] Point2D.Float[0.75, 1.5] 
Point2D.Float[0.0, 1.5]
Point2D.Float[5.25, 0.0] Point2D.Float[6.0, 0.0] Point2D.Float[6.0, 0.75] 
Point2D.Float[5.25, 0.75]
Point2D.Float[4.5, 0.0] Point2D.Float[5.25, 0.0] Point2D.Float[5.25, 0.75] 
Point2D.Float[4.5, 0.75]
Point2D.Float[3.75, 0.0] Point2D.Float[4.5, 0.0] Point2D.Float[4.5, 0.75] 
Point2D.Float[3.75, 0.75]
Point2D.Float[3.0, 0.0] Point2D.Float[3.75, 0.0] Point2D.Float[3.75, 0.75] 
Point2D.Float[3.0, 0.75]
Point2D.Float[2.25, 0.0] Point2D.Float[3.0, 0.0] Point2D.Float[3.0, 0.75] 
Point2D.Float[2.25, 0.75]
Point2D.Float[1.5, 0.0] Point2D.Float[2.25, 0.0] Point2D.Float[2.25, 0.75] 
Point2D.Float[1.5, 0.75]
Point2D.Float[0.75, 0.0] Point2D.Float[1.5, 0.0] Point2D.Float[1.5, 0.75] 
Point2D.Float[0.75, 0.75]

The weird numbers are because of the 0.75 scale matrix.


was (Author: tilman):
I think the problem is in java itself, the pattern has this:
{code}
7 7 1 1 re
f
6 7 1 1 re
f
5 7 1 1 re
f
4 7 1 1 re
f
3 7 1 1 re
f
2 7 1 1 re
f
{code}
so it's creating many 1x1 rectangles, but isn't really perfect. PDF.js has the 
same problem at some resolutions.

> Converting PDF to images using PDFBox results in unexpected outcomes.
> ---------------------------------------------------------------------
>
>                 Key: PDFBOX-5898
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-5898
>             Project: PDFBox
>          Issue Type: Bug
>    Affects Versions: 2.0.24
>            Reporter: bai yuan
>            Priority: Major
>         Attachments: TilingPattern-2371731399394458-1000%.png, 
> TilingPattern-2371731399416644-2000%.png, image-2024-11-12-15-45-48-011.png, 
> test2.pdf
>
>
> Running the following code, many fine red lines appear in the image.
> {code:java}
>         String pdfFilePath = path + "test2.pdf";
>         String outputDir = path + "/out/";
>         try {
>             PDDocument document = PDDocument.load(new File(pdfFilePath));
>             PDFRenderer pdfRenderer = new PDFRenderer(document);
>             for (int page = 0; page < document.getNumberOfPages(); page++) {
>                 BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, 
> ImageType.RGB);
>                 ImageIO.write(bim, "PNG", new File(outputDir + "page-" + 
> (page + 1) + ".png"));
>             }
>             document.close();
>             System.out.println("PDF converted to images successfully.");
>         } catch (Exception e) {
>             e.printStackTrace();
>         }
> {code}
>  !image-2024-11-12-15-45-48-011.png! 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to