当前位置: 首页 > 知识库问答 >
问题:

pdfbox:调整大小时PDJpeg的颜色不正确->Adobe Reader->Windows XP和7

公西岳
2023-03-14

当使用PDFBox创建PDF并向其绘制PDJpeg时,在将图像绘制到PDF之前调整PDJpeg的大小时,图像的颜色会改变/反转。此问题仅在使用Adobe Reader的Windows XP和Windows 7上可见。Mac上的预览版或Windows8上的新PDF预览版不受此影响。

示例:

    null
private void preparePDFIconCache(List<AbstractDataItem> list) throws IOException {

    iconCache = new HashMap<String, PDJpeg>();

    for (AbstractDataItem item : list) {
        String iconResourcePath = "/com/graphics/icons/" + item.getIconName();
        URL iconURL = this.getClass().getResource(iconResourcePath);

        BufferedImage icon = null;
        if (iconURL != null) {

            icon = ImageIO.read(iconURL);

        } else {

            String myIconResourcePath = SettingsDataModel.getInstance().getMyIconsPath() + File.separator + item.getIconName();

            File iconFile = new File(myIconResourcePath);
            if (iconFile.exists()) {

                URL myIconURL = iconFile.toURI().toURL();

                if (myIconURL != null) {

                    icon = ImageIO.read(myIconURL);
                }
            }

        }
        if (icon != null) {

            PDJpeg pdfIcon = new PDJpeg(currentDocument, icon);

            pdfIcon.setHeight(iconWidthXHeight);
            pdfIcon.setWidth(iconWidthXHeight);

            iconCache.put(item.getIconName(), pdfIcon);
        }
    }
}

如果在初始化pdjpeg之前调整BufferedImages的大小,那么一切工作都很好,但看起来并不那么锋利。

有没有人有很好的解决方案或者经历过同样的问题?

共有1个答案

益和雅
2023-03-14

使用PDPageContentStream#DrawxObject绘制图像,并在height中设置width,解决了这一问题。

 类似资料:
  • 编辑:它现在可以工作了,我用画布扩展了这个类,将它的大小设置为宽度和高度,然后将它添加到JFrame,然后打包。这管用!但我认为造成这种情况的原因不是尺寸大小,而是我呈现它的方式,我从JFrame中获得了bufferStrategy,而不是画布,这不是应该的方式。

  • 问题内容: 我在Java中使用Apache POI创建一个Excel文件。我填写了数据,然后尝试自动调整每列的大小,但是大小总是错误的(我 认为是 一致的)。前两行始终(?)完全折叠。当我在excel中自动调整列的大小时,它可以完美运行。 (我相信)没有空白单元被写入,并且调整大小是我要做的 最后一 件事。 这是相关的代码: 这是一个精简的版本,没有错误处理等。 我知道那里有一些类似的问题,但是其

  • 我在给散点图标记着色时遇到了一些麻烦。我有一个简单的数据框,其中有一个值“pos”和另外两个值“af_min”和“af_max”。我想根据af_x和af_y的一些条件给标记上色,但是因为我没有任何列可以用作色调,所以我创建了自己的列“color”。 现在,我创建了一个散点图,使用海运和海运调色板的方式: 在这里,我放置了整个脚本,以便您可以复制它: 感谢所有能帮忙的人!

  • 我正在使用此库:https://github.com/yshrsmz/KeyboardVisibilityEvent检测键盘何时打开或关闭,这取决于android清单的输入。 此库可以完美地检测软键盘的打开和关闭事件,但由于adjustResize参数,我的内容被推到了视图之外。 > Java: XML: 因此,通过调整第二个编辑文本的行,这非常有效,因此我在键盘上方键入,但当我关闭键盘时,滚动到

  • 我有一个包含大量选项的JDialog,它工作得很好,但是我已经更改了它,默认情况下,除非用户单击Show Advanced按钮,否则某些选项是不可见的。 当他们这样做时,选项就会显示出来,但是因为对话框不够高,因为它的大小是基于那些选项被隐藏的,所以会添加一个垂直滚动条。 我希望对话框的大小足够大,当高级选项启用。我尝试创建显示高级选项的对话框,根据高级选项可见的情况调用pack()来适应 然后调

  • 下面是和,我试图使它尽可能简单。 黑色是名为的,其内部是名为的。我要做的是将中的的大小调整为的大小减去4。但当您调整窗口大小时,一切都失败了。 你要尝试的... 2)增加窗口的大小,然后慢慢减小。 为什么会这样?我有这个问题三个月了,但我找不到解决办法... 我也看过javafx-resize Canvas,当屏幕调整大小时,但这里的问题似乎是不同的... 如果我不手动设置画布的宽度和高度,它甚至