首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在github页面上mkdocs生成的网站中嵌入本地pdf文件?

如何在github页面上mkdocs生成的网站中嵌入本地pdf文件?
EN

Stack Overflow用户
提问于 2021-09-18 19:21:23
回答 1查看 2.2K关注 0票数 0

我有一个私人存储库,其中包括一些pdf文件。然而,这些内容是通过MkDocs (材料)和github页面公开提供的。我想嵌入这些本地可用的pdf文件在网站(创建与MkDocs)。到目前为止,我已经尝试过:

代码语言:javascript
运行
复制
# Method-1
<object data="/path/to/file.pdf" type="application/pdf">
    <embed src="/path/to/file.pdf" type="application/pdf" />
</object>

# Method-2
<a href="/path/to/file.pdf" class="image fit"><i class="fas fa-file-pdf"></i></a>

当从Google (公开发布)共享/path/to/file.pdf时,它可以工作。但是,当我试图显示保存在我的github存储库中的docs文件夹中的文件时,它不起作用。

如何从存储库本身显示它们(而不必从GDrive复制和共享文件)?

关于github页面:

  • 只将docs文件夹的内容推送到gh-pages分支,然后GitHub页面将这些内容作为网站发布。

相关材料

  • Stackoverflow:

代码语言:javascript
运行
复制
- [_How to link a pdf?_](https://stackoverflow.com/questions/50852738/how-to-link-a-pdf)
- [_Opening PDF in a browser with Github Pages_](https://stackoverflow.com/questions/30745981/opening-pdf-in-a-browser-with-github-pages)

  • GitHub社区:

代码语言:javascript
运行
复制
- [_How to link a pdf which opens a pdf-viewer in GitHub pages?_](https://github.community/t/how-to-link-a-pdf-which-opens-a-pdf-viewer-in-github-pages/10643)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-22 00:28:40

解决方案

在发布的站点上提供pdf文件的主要挑战是创建一个没有损坏的链接,并从存储库中实际访问该文件。

Mkdocs附带了许多扩展,增强了框架的功能。您需要使用pymdownx.pathconverter来解决这个问题。

示例

我已经模糊了截图中的内容。但是你可以看到嵌入的pdf文件是什么样子的。

下面是你需要处理的部分。

A.安装PyMdown扩展程序

和其他人一样必须..。

代码语言:javascript
运行
复制
pip install \
    mkdocs \
    mkdocs-material \
    mkdocs-material-extensions \
    pymdown-extensions 

B.更新mkdocs.yml

将以下内容添加到mkdocs.yml

代码语言:javascript
运行
复制
# Strategy: Use an absolute path
markdown_extensions:
  - pymdownx.pathconverter:
      base_path: 'YOUR_REPO_NAME' # default: ''
      relative_path: '' # default ''
      absolute: true # default: false
      tags: 'a script img link object embed'

读者注意:您还可以在pymdownx.pathconverter中使用相对路径。有关详情,请参阅文件。但是,为了简洁起见,如果您最终使用了相对路径,您需要这样做:

pymdownx.pathconverter.扩展设置中的

  1. 设置absolute: false

  1. 使用相对路径(这应该考虑到您的URL路径层次结构)。例如,如果将pdf-file docs/artifacts/file.pdf嵌入到标记文件docs/howto/embedding_pdf.md中,并且指向标记文件的链接看起来类似于http://localhost:8000/demo_mkdocs_project/howto/embedding-a-pdf-file (请参阅以下章节以获得更多的上下文),则文件嵌入时的相对路径将类似于:

代码语言:javascript
运行
复制
"../../artifacts/file.pdf"

C.从存储库嵌入PDF文件

在这里,我们假设pdf文件位于:docs/artifacts/file.pdf,而docs文件夹位于存储库的根目录。在下面的代码块中,我在文件docs/howto/embedding_pdf.md中嵌入了一个pdf。

代码语言:javascript
运行
复制
<!--- file: docs/howto/embedding_pdf.md --->
{% with pdf_file = "artifacts/file.pdf" %}

{% set solid_filepdf = '<i class="fas fa-file-pdf"></i>' %}
{% set empty_filepdf = '<i class="far fa-file-pdf"></i>' %}

## Example: Embedding a PDF file

<object data="{{ pdf_file }}" type="application/pdf">
    <embed src="{{ pdf_file }}" type="application/pdf" />
</object>

## Example: Creating a link to a PDF file

<a href="{{ pdf_file }}" class="image fit">{{ solid_filepdf }}</a>

{% endwith %}

D.在mkdocs.yml中添加到页面的链接

这将创建一个顶级链接HowTo,然后在另一个链接Embedding a PDF file下创建。

代码语言:javascript
运行
复制
# file: mkdocs.yml

nav:
  - Home: index.md
  - HowTo:
    - Embedding a PDF file: howto/embedding_pdf.md

这四个步骤实际上使pdf文件可以在本地服务器(localhost:8000)和github页面上使用(以防您在那里发布)。然后,指向该文件的链接将如下所示:

http://localhost:8000/demo_mkdocs_project/artifacts/file.pdf本地服务器:

http://githubid.github.io/demo_mkdocs_project/artifacts/file.pdf

  • GitHub Pages:

Note

我以为

githubid

  • repository

  • Git用户Git:名称:demo_mkdocs_project

参考文献

  1. PyMdown Extensions Documentation -
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69237778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档