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

无法使用DocX4J将图像添加到文档

宣望
2023-03-14

我正在尝试使用Docx4j库将图像添加到Document(. docx),代码如下。该图像已经存在于本地机器中,最初我教它不支持png,然后我将图像重命名为jpg,但它仍然会引发错误

String userSignatureFile = "C:\\esignature\\sign.jpg";

            // read the signature image into Bytes

            InputStream inputStream = new java.io.FileInputStream(userSignatureFile);
            long fileLength = userSignatureFile.length();    

            byte[] bytes = new byte[(int)fileLength];

            int offset = 0;
            int numRead = 0;

            while(offset < bytes.length
                   && (numRead = inputStream.read(bytes, offset, bytes.length-offset)) >= 0) {
                offset += numRead;
            }

            inputStream.close();

            String filenameHint = null;
            String altText = null;

            int id1 = 0;
            int id2 = 1;

            // create Inline Image

            BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordPackage, bytes);
            Inline inline = imagePart.createImageInline( filenameHint, altText, id1, id2);

            // Create Drawing and add to Run
              Drawing imageDrawing = factory.createDrawing();
               imageDrawing.getAnchorOrInline().add(inline);
            // add Text to Run
            run.getContent().add(imageDrawing);

            // add Run to Paragraph
            ((P) jaxbNode).getContent().add(run);

下面是错误消息。

    Exception in thread "main" org.docx4j.openpackaging.exceptions.Docx4JException: Error checking image format
        at org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage.ensureFormatIsSupported(BinaryPartAbstractImage.java:429)
        at org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage.ensureFormatIsSupported(BinaryPartAbstractImage.java:331)
        at org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage.createImagePart(BinaryPartAbstractImage.java:225)
        at org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage.createImagePart(BinaryPartAbstractImage.java:144)

Caused by: java.io.IOException: Cannot run program "imconvert": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage.convertToPNG(BinaryPartAbstractImage.java:905)
    at org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage.ensureFormatIsSupported(BinaryPartAbstractImage.java:413)
    ... 6 more
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    ... 12 more

共有1个答案

松成和
2023-03-14

实际上,这是我的错误,我使用输入流并直接传递文件路径字符串(没有File),并且在更正如下之后,它起作用了。

正确

File file = new File(userSignatureFile);

            // read the signature image into Bytes

            InputStream inputStream = new java.io.FileInputStream(file);

        InputStream inputStream = new java.io.FileInputStream(userSignatureFile);
 类似资料:
  • 我正在使用Python FastAPI编写一些Rest API。需要在Swagger-OpenAPI文档中添加许多自定义部分。这包括每个API的联系信息字段、作者信息、显示数据模型的图像、数据库字段等。 有没有办法使用快速API内置的OpenAPI功能来完成所有这些工作?我知道可以托管我们自己的自定义 json 文件。但是我不知道如何将图像添加到招摇的json文件中。我也不知道如何将自定义字段添加

  • 我正在使用iText生成Pdf。但当我试图在pdf中添加图像时, 我mage.get实例(新的URL(timetableResource.getImageUrl()));document.add(学校标志); 但我得到的错误是 HTTP状态500-服务器为URL返回了HTTP响应代码400:http://139.59.72.150:8080/sms/attachments/23/42/school

  • 我不确定是有什么明显的东西逃过了我的视线,还是根本不可能,但我正试图用docker hub的图像组成一个完整的应用程序堆栈。 其中之一是mysql,它支持通过卷添加自定义配置文件并运行。装载目录中的sql文件。 但是,我在运行docker compose的机器上有这些文件,而不是在主机上。在运行entrypoint/cmd之前,是否无法指定要从本地计算机复制到容器中的文件?我真的需要为这种情况创建

  • 问题内容: 我一直在尝试使用Apache POI将.png图片添加到.docx文件头中。我没有找到对我有帮助的方法。有人知道怎么做吗?这段代码我只能添加文本。 问题答案: 使用页眉和页脚以及页眉中的图像创建文档的示例: 编辑2016年3月29日: 这一直有效,直到Apache poi 3.13。现在,在3.14版本中,它的工作方式不再更多。原因:POI将不再在标题段落中保存图像的blip参考。 :

  • 我想将图像添加到FastAPI自动留档(由Swagger UI提供),但我不知道如何做到这一点。这是代码: 正如您从代码中看到的那样,我正在尝试使用 URL 执行此操作,我在 ReDoc 和 Swagger UI 中得到的只是作为文本的 URL,而不是实际图像。另外,我想使用存储在本地驱动器中的图像。 我如何才能做到这一点? 先谢谢你。

  • 问题内容: 此处已触及该主题,但未提供有关如何创建3D图并在平面中以指定高度插入图像的指示。 因此,要提出一个简单且可复制的案例,假设我使用以下代码创建了一个3D图: 在视觉上,我们有: 在级别上,这里是避免重叠的视觉偏移, 我想插入一张图像, 表示曲线显示特定值的元素。 怎么做? 在此示例中,我并不关心元素与其值之间的完美匹配,因此请随时上传您喜欢的任何图像。另外,如果对匹配不满意,有没有办法让