[
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: [email protected]
For additional commands, e-mail: [email protected]