[
https://issues.apache.org/jira/browse/PDFBOX-4928?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17168517#comment-17168517
]
Christian Appl commented on PDFBOX-4928:
----------------------------------------
Sorry, I will try to explain clearer what I meant. Maybe the following code
example will help?
{code:java}
File heicPDF = new File("D:\\experiments", "test.pdf");
PDDocument document = PDDocument.load(heicPDF);
try {
Map<RenderingHints.Key, Object> renderOptions = new
HashMap<RenderingHints.Key, Object>();
renderOptions.put(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
renderOptions.put(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BICUBIC);
renderOptions.put(RenderingHints.KEY_QUALITY_RENDERING_METHOD,
RenderingHints.VALUE_PRESCALE_RENDERING_METHOD);
PDFRenderer pdfRenderer = new PDFRenderer(document);
RenderingHints renderingHints = new RenderingHints(renderOptions);
pdfRenderer.setRenderingHints(renderingHints);
BufferedImage image = pdfRenderer.renderImageWithDPI(1, 500, ImageType.RGB);
ImageIO.write(image, "PNG", new File("D:\\experiments",
"out_disabled_500.png"));
} finally {
document.close();
}
{code}
My suggestion is the introduction of an additional rendering parameter for the
quality rendering (KEY_QUALITY_RENDERING_METHOD in this example). Instead of
(scaleX < 0.5 || {color:#000000}scaleY {color}< 0.5) you could check for:
{color:#000000}RenderingHints{color}.{color:#871094}VALUE_PRESCALE_RENDERING_METHOD{color}.equals({color:#871094}graphics{color}.getRenderingHint({color:#000000}RenderingHints{color}.{color:#871094}KEY_QUALITY_RENDERING_METHOD{color})
This would enable the user to directly select whether graphics.drawImage()
shall apply the transformation matrix, or the introduced prescaling shall be
applied. (to intentionally enable or disable the prescaling.)
> Could the new rendering method of PageDrawer be optional?
> ---------------------------------------------------------
>
> Key: PDFBOX-4928
> URL: https://issues.apache.org/jira/browse/PDFBOX-4928
> Project: PDFBox
> Issue Type: Wish
> Components: Rendering
> Affects Versions: 2.0.20
> Reporter: Christian Appl
> Priority: Major
>
> This relates to {color:#008dde}PDFBOX-4516, PDFBOX-4527, PDFBOX-4815,
> PDFBOX-4886, PDFBOX-4863{color}{color:#008dde}
> I have tested the new prescaled rendering method for the
> {color}org.apache.pdfbox.rendering.{color:#008dde}PageDrawer
> {color:#172b4d}with PDFBox:2.0.21-SNAPSHOT{color}{color} for different
> images, with different resolutions, target image sizes etc. and compared the
> results to our old expectations (pre 2.0.20). And I really like it!
>
> However it seems to depend on the person's subjective perception (atleast
> for my tested images), whether I like the old or the new results better. When
> asking my colleagues, I heard arguments for both sides.
>
> Therefore my question is: Could a RenderingHint be introduced to
> disable/enable this separately and more intentionally, instead of assuming,
> that the scaling method must always be applied for specific scaling factors?
> This would allow users to select the scaling method according to their own
> liking and needs.
>
> I can not really find a crystal clear, objective answer, whether the one or
> the other is "better", therefore I would prefer being able to de/activate it
> according to my own judgement.
> As far as I understand, the criterion (scaleX < {color:#1750eb}0.5 {color}||
> {color:#000000}scaleY {color}< {color:#1750eb}0.5{color}) has been selected
> rather arbitrarily.( ? )
> But what if I want to apply it even to images above those scaling factors?
> What if I want to not apply it to images bellow those scaling factors?
> What if I want to apply it to Image A, but not to Image C, for some unknown
> reason?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]