为了账号安全,请及时绑定邮箱和手机立即绑定

“找不到”“找不到”时出现

“找不到”“找不到”时出现

饮歌长啸 2022-09-21 16:43:56

我正在为Bitbucket服务器编写一个插件,其中我必须处理将PDF渲染为图像。我使用我有一个将调用来执行处理的方法,并且我已经修改了PDF渲染器,类似于Apache示例所建议的。pdfToPng


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;


import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.pdmodel.graphics.color.PDColor;

import org.apache.pdfbox.rendering.PDFRenderer;

import org.apache.pdfbox.rendering.PageDrawer;

import org.apache.pdfbox.rendering.PageDrawerParameters;


import javax.imageio.ImageIO;

import java.awt.*;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;


public class PDFProcessor {


    private static Logger logger = LoggerFactory.getLogger(PDFProcessor.class);


    private static int _colorMode;


    /**

     * Convert a page of a PDF document into a colored PNG

     * @param color color to use, 0 - black, 1- red

     * @param fileName output file

     * @param pdfFile PDF to process

     * @throws IOException

     */

    public static void pdfToPng(int color, String fileName, File pdfFile) throws IOException{

        _colorMode = color;

        try (PDDocument pdfDoc = PDDocument.load(pdfFile)){

            logger.info("Begin PDF to PNG render for " + fileName);

            PDFRenderer renderer = new CustomPdfRenderer(pdfDoc);

            BufferedImage image = renderer.renderImageWithDPI(0,600);

            logger.info("Making PNG transparent...");

            BufferedImage transparentImage = ImageProcessor.makeTransparent(image,new Color(image.getRGB(0,0)));

            ImageIO.write(transparentImage, "PNG",new File(fileName+".png"));

            logger.info("Image processed successfully, writing to " + fileName + ".png");

        }

    }


该项目是使用Maven构建的,因为这是BitBucket用于插件开发的时候。但是,当实际调用该方法时,我得到一个异常,指出:ClassNotFound

如您所见,我已经导入了该类。My 还包含正确的依赖项定义:PDFRendererpom.xml

为什么 Java 找不到该类?以这种方式声明的其他依赖项永远不会有此问题。PDFRenderer


查看完整描述

1 回答

?
汪汪一只猫

TA贡献1550条经验 获得超8个赞

您正在使用 与 的依赖项。您希望谁在需要时提供此依赖项?像 Tomcat 这样的应用程序容器?pdfbox<scope>provided</scope>

我建议你删除这一行,这样依赖关系将是隐式范围的,这应该为你解决问题。scopecompile

另请参阅 Maven 范围文档,其中说:

  • compile– 这是默认范围,如果未指定任何作用域,则使用。编译依赖项在项目的所有类路径中都可用。

  • provided– 这很像编译,但表示您希望 JDK 或容器在运行时提供依赖项。


查看完整回答
反对 回复 2022-09-21

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信