我有一个私人存储库,其中包括一些pdf文件。然而,这些内容是通过MkDocs (材料)和github页面公开提供的。我想嵌入这些本地可用的pdf文件在网站(创建与MkDocs)。到目前为止,我已经尝试过:
# 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页面将这些内容作为网站发布。相关材料
- [_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)
- [_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)
发布于 2021-09-22 00:28:40
解决方案
在发布的站点上提供pdf文件的主要挑战是创建一个没有损坏的链接,并从存储库中实际访问该文件。
Mkdocs附带了许多扩展,增强了框架的功能。您需要使用pymdownx.pathconverter
来解决这个问题。
示例
我已经模糊了截图中的内容。但是你可以看到嵌入的pdf文件是什么样子的。
下面是你需要处理的部分。
A.安装PyMdown扩展程序
和其他人一样必须..。
pip install \
mkdocs \
mkdocs-material \
mkdocs-material-extensions \
pymdown-extensions
B.更新mkdocs.yml
将以下内容添加到mkdocs.yml
# 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
.扩展设置中的
absolute: false
docs/artifacts/file.pdf
嵌入到标记文件docs/howto/embedding_pdf.md
中,并且指向标记文件的链接看起来类似于http://localhost:8000/demo_mkdocs_project/howto/embedding-a-pdf-file
(请参阅以下章节以获得更多的上下文),则文件嵌入时的相对路径将类似于:。
"../../artifacts/file.pdf"
C.从存储库嵌入PDF文件
在这里,我们假设pdf文件位于:docs/artifacts/file.pdf
,而docs
文件夹位于存储库的根目录。在下面的代码块中,我在文件docs/howto/embedding_pdf.md
中嵌入了一个pdf。
<!--- 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
下创建。
# 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
Note:
我以为
githubid
demo_mkdocs_project
参考文献
https://stackoverflow.com/questions/69237778
复制相似问题