Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[docs、feat] 导出问题,导出到pdf的临时方案 #62

Open
LincZero opened this issue Sep 24, 2024 · 4 comments
Open

[docs、feat] 导出问题,导出到pdf的临时方案 #62

LincZero opened this issue Sep 24, 2024 · 4 comments
Labels
documentation Improvements or additions to documentation enhancement New feature or request

Comments

@LincZero
Copy link
Collaborator

          顺便还有一个问题,有任何办法单独导出渲染的片段为图片吗,只能在ob里面看到渲染图。各种格式导出,不能渲染出来。除了一个share note可以正常预览

Originally posted by @jotithan425 in #61 (comment)

@LincZero
Copy link
Collaborator Author

LincZero commented Sep 24, 2024

  1. 网页方案。可以看到 AnyBlock 的在线展示与教程网站是完美兼容该插件的,有能力创建博客的可以优先使用该方案
  2. pdf导出问题。目前并没有较好的支持,虽然 AnyBlock 在没有插件的情况下渲染不算太糟,但还是有影响
  3. 部分AnyBlock块 单独导出图片。目前没有较好的支持,如果是 markmap 或其他 svg 之类的,似乎可以借助其他插件做到,例如:https://forum-zh.obsidian.md/t/topic/37790 。可能往后会做,短时间没计划

其他:

pdf兼容问题。像 list2tab 这种标签页,带交互的,在非网页环境下可能需要另行渲染成扁平的样子。没做

@jotithan425
Copy link

okok,慢慢来吧,现在已经很强大了

@LincZero LincZero added the enhancement New feature or request label Sep 26, 2024
@LincZero
Copy link
Collaborator Author

LincZero commented Sep 26, 2024

发现一个可以暂时导出的方法:

AnyBlock 除了扩展的六种选择器外,传统的代码块选择器也能用。而使用传统的代码选择器声明的anyblock,是可以导出pdf的,如下:

(图左源码,右pdf(而且刚好被分页截断了))

图片

而扩展出来的那六种选择器,暂时不支持在pdf导出中使用。后面我看一下有没有能够实现的方法

@LincZero
Copy link
Collaborator Author

LincZero commented Sep 26, 2024

(1) 手动方案

见上一层中的描述

缺点:一来需要手动去用回代码块,二来并不符合AnyBlock ”不引入特殊语法,只使用md语法“ 的原则

那有没有自动化的方案呢?见下

(2) 文件转换方案

我能想到的最粗暴的一种解决方法是,提供一个命令,在导出前使用该命令:

会使用 " ```anyblock......``` " 的代码围栏,将所有 anyblock 块包起来(修改的源md内容,或生成一个md备份),这个时候再导出,就没有问题了

这种方式优点是我不需要过多专研ObsidianAPI的一些生命机制和流程,节省开发时长和我我狗命。
缺点是粗暴不优雅,导出前需要生成一份被修改过的 .md,再到处那个被修改的 .md

(3) 合理的解决方案

通过正规的程序方式,用正规的流程去解决。应该是可以的,但我暂时没有思路。

dvjs 的 inline 语句好像能做到,有空我去参考一下那边的代码。或者我去开发论坛那边提问一下……再说

(4) 差异化问题

不过导出pdf可能存在样式有细微变化

如果想要完整样式,还有一个解决方法:通过截图将anyblock渲染结果存为图片,然后使用图片替换掉原anyblock内容

这种方法也是可以实现的

  • 方案优点
    • 样式完整保留的优点
    • 另一个优点是这种策略的图应该不会被pdf分页所截断
  • 方案缺点
    • 不会被pdf截断也可能是缺点。如果渲染的是类似大表格的类型,可能更倾向于分页而不是缩小的预期结果
    • pdf编辑中缩放等,图片有可能导致清晰度较低(其实可以使用plantuml图表来模拟效果,因为这个就是以图片方式渲染的)
    • 图片方案可能带来额外的空间开销

最后

要用哪种方法还在思考中,而且这个功能估计没有那么快实装,特别是如果采用更复杂的解决策略的话。

有需要的可以先试一下方案一,看看效果。如果效果比较差的话可能只能用方案4了

另外,对该功能有强烈需求的,欢迎在该层的emoji中点个 ”like“

@LincZero LincZero added the documentation Improvements or additions to documentation label Sep 26, 2024
@LincZero LincZero changed the title [feat] 导出问题 [feat] 导出问题,导出到pdf的临时方案 Sep 26, 2024
@LincZero LincZero changed the title [feat] 导出问题,导出到pdf的临时方案 [feat、docs] 导出问题,导出到pdf的临时方案 Sep 26, 2024
@LincZero LincZero changed the title [feat、docs] 导出问题,导出到pdf的临时方案 [docs、feat] 导出问题,导出到pdf的临时方案 Oct 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants
@LincZero @jotithan425 and others