首页 > 解决方案 > maven-pdf-plugin:如何定义文档根以使用相对引用

问题描述

我正在使用 maven-pdf-plugin 从 Markdown 文档生成 PDF 文件。我有降价文件/src/site/markdown以及包含的图像文件。我有一个pdf.xml文件在/src/site.

当我运行时mvn pdf:pdf,我得到一个在/target/pdf. PDF 文件从 markdown 文件格式化,但不包括图像。输出有错误,表明它最有可能因为警告而找不到图像:

[警告] 没有指定文档根目录,本地链接将无法正确解析!

我搜索了在 maven-pdf-plugin 上可以找到的所有内容,但没有找到有关如何设置这个难以捉摸的文档根目录的参考资料。我想将图像文件保存在同一目录中并在降价文件中使用相对引用,即在这种情况下,引用只是文件名。

任何帮助或指向哪里可以找到我需要做的事情将不胜感激。

编辑添加pdf.xml 这里是内容/src/site/pdf.xml

<document outputName="DesignDoc">
<meta>
  <title>Design Documentation</title>
  <author>Team A</author>
</meta>
<toc name="Table of Contents">
  <item name="Design Documentation" ref="DesignDoc.md"/>
</toc>
<cover>
  <coverTitle>${project.name}</coverTitle>
  <coverSubTitle>v. ${project.version}</coverSubTitle>
  <coverType>Design Documentation</coverType>
  <projectName>${project.name}</projectName>
</cover>
</document>

降价文件位于/src/site/markdown. 要包含的图像文件位于同一目录中。

这是一个图像如何包含在降价文件中的示例:

![Domain Model](domain-model-placeholder.png)

编辑以添加进一步调查的结果
我可以生成带有渲染图像的 PDF 的两种方法是将图像文件放在顶级项目根目录中,或者将 markdown 文件中的图像规范更改为相对于项目根目录目录。前者是一个糟糕的解决方案。后者可能是一种临时解决方法,但会破坏我们使用降价文件的其他方式。

标签: mavenmaven-pdf-plugin

解决方案


无法更改 maven-pdf-plugin 中图像的相对位置。它从站点上下文生成 PDF 文件。要使图像可用于 PDF,它们应该可用于站点。根据文档,图像应该在resources目录中。

+- src/
      +- markdown/
      |  +- docs.md
      |
      +- resources/
      |  +- images/
      |     +- domain-model-placeholder.png
      |
      +- site.xml

图片将在降价中提供,带有以下标签:

![Domain Model](images/domain-model-placeholder.png)

PDF 内容将与图像一起生成。但是在 BitBucket 或 Github 的存储库视图中找不到图像,其中文档根被用作相对参考。我通过将图像复制到降价目录来修复它。

+- src/
      +- markdown/
      |  +- images/
      |  |  +- domain-model-placeholder.png
      |  |
      |  +- docs.md
      |
      +- resources/
      |  +- images/
      |     +- domain-model-placeholder.png
      |
      +- site.xml

它是图像的重复,但是通过这种方法,它们在 pdf 生成和存储库视图中都可用。


推荐阅读