PowerToys 添加PDF合并和页面重新排序工具

0kjbasz6  于 6个月前  发布在  其他
关注(0)|答案(3)|浏览(51)

新功能的描述

简要描述

一个用于合并PDF文档和重新排列PDF文档中页面的上下文菜单工具,可能在同一窗口中。

关于功能行为的更详细的建议

在文件资源管理器中,当用户选择一个或多个PDF文档并右键单击选择时,此实用程序应出现在上下文菜单中。
当用户选择该实用程序时,它会打开一个窗口(类似于PowerRename),其中包含用于合并结果的文件名的文本框以及两个垂直部分:

  • 左侧是所选文件的列表
  • 右侧是一个包含所选文档中页面缩略图的网格,从左上角到右下角排列

网格中的页面应遵循左侧文档的顺序。重新排列列表中的文件不应重新排列右侧网格中的页面。
用户应该能够通过拖放来重新排列右侧网格中的页面,并且应该能够一次选择多个页面移动。

何时会使用这个功能?

通常我使用LaTeX将多个PDF文档合并到一个文档中,但并非每个人都有(或想要安装)LaTeX来合并或重新排列一些文档。我认为这在一般情况下是有用的,而不仅仅是为高级用户专门设计的工作流程。

支持信息

MacOS已经内置了这个功能,并且今年已经用过几次了
合并:

重新排列:

如果这个功能被接受,我很乐意自愿编写它 :)

9bfwbjaz

9bfwbjaz1#

我很想更好地了解它是如何实现的。使用哪个库来处理合并和重新排序/需要信息

sf6xfgos

sf6xfgos2#

这是我想象中这个实用程序的实现方式:

  • 上下文菜单启动一个可执行文件,该文件将执行实际的合并和重新排序操作
  • 可执行文件:
  • 以命令行参数的形式接受一系列PDF文档的路径(或者像PowerRename那样从管道中读取路径)
  • 使用 PDFSharp 来读取文档,通过索引访问单个页面,创建结果文档,一次追加一个页面到它,然后保存它

我稍微用过一点PDFSharp,它可以完成我上面提到的所有事情,而且它是MIT许可的。复制书签("大纲")似乎不起作用。
但是,复制其他信息(如文档的标题、作者、主题等)(PdfDocumentInformation类的内容)是可能的,但我不确定这对于合并多个文档有多大帮助。也许作为用户的其他额外选项?指定作者、主题等?
这种实现方式看起来合理吗?

其他库

与实际需求相比,PDFSharp显得非常强大。如果Windows.Data.Pdf中的PdfDocument类具有添加和删除页面的方法,并且可以将其保存为文件而不是位图,那就足够了。甚至可以使用System.Drawing.Printing中的类,如果“Microsoft打印到PDF”打印机是可以保证可用的。
我找到的唯一另一个C#库似乎能够合并文档,并且许可证足够宽松的是 this one 。但我还没有尝试过它,也不知道(或者如何)它是否可以重新排序页面。
我发现一个看起来不错的CPDF-Writer ,但它带有一些其他依赖项,而且用C编写UI似乎有些过度。

2q5ifsrm

2q5ifsrm3#

我已经编写了一个稍微简化的小示例,用于展示如何实现这个功能。
我使用了额外的一个库来处理拖放操作。为了避免添加更多的依赖,我认为拖放操作可以通过手动实现,但使用库要快得多(而且写代码要少得多)。
我还没有编写shell扩展。下周我会尝试一下。
shell扩展也同样有效,它可以启动带有选定PDF文件的应用程序。我认为实现这个功能应该足够简单。

相关问题