【问题标题】:Automator Quick Action to Save Images into Same FolderAutomator 快速操作将图像保存到同一文件夹中
【发布时间】:2019-08-30 18:44:47
【问题描述】:

我正在尝试制作一个 Automator 快速操作 (Mac OS),它将 pdf 页面中的图像保存到 pdf 所在的同一文件夹中

**编辑:user3439894 写道,我应该并且没有完全清楚地表明我想要“将多个文件从不同的文件夹发送到快速操作,并在文件所在的每个文件夹中创建文件”

我发现将文件保存到特定文件夹很容易;例如,这是一个将图像从 pdf 保存到桌面的工作流程:

困难的部分是保存到 pdf 所在的同一文件夹中。我试图调整this answer,但我得到:“重命名 Finder 项目:命名单个项目”遇到错误:“多个 Finder 项目已传递给命名单个项目”。我不知道如何解决这个问题——我的任务的重点是从 .pdf 输出多个图像。

the stackoverflow page I mentioned above 上实际上显示了 2 个工作流。我尝试调整它们,它们都给出了相同的错误。下面是我的改编之一。 “获取指定的查找器项目”操作仅用于测试目的。

【问题讨论】:

  • 我发现您的工作流程与我发布的答案存在一些差异,我可以向您保证工作正常并且不会将文件保存到桌面。如果您想将其转换为快速操作(我刚刚完成并且它也可以正常工作),您应该摆脱“询问查找器项目”操作,因为您可以通过右键单击目标 PDF 直接调用它.不要在 Automator 中测试它。保存它并直接从 Finder 部署它。其次,不要在重命名 Finder 项目的“新名称”字段中键入“pdf-name”。将名为“pdf-name”的变量从底部拖到字段中。
  • 如果您采用不同的方法,在 Run Shell Script action 中使用 shell 脚本,这是可行的。我已经测试了几种不同的方法来使用本机实用程序和/或本机和/或第三方实用程序的组合来实现目标,具体取决于您的实际需求/想要什么,除了能够处理来自不同的文件 文件夹同时发送,输出到各自的文件夹
  • 最大的障碍是 Render PDF Pages as Images 操作输出到一个临时文件夹,因此对于每个单独的 PDF,您需要保存包含文件夹,渲染图像,重命名并从临时文件夹中移动这些图像(避免任何重复的名称),然后继续下一个文件项。要使用该特定操作,您需要逐个遍历输入项(例如,使用 Dispense Items Incrementally 操作),或者使用 Run Shell ScriptRun AppleScript 完成整个操作 操作,只需使用 Automator 为其提供文件项。

标签: macos pdf applescript jpeg automator


【解决方案1】:

这有点令人费解,因为 Automator 没有用于获取名称或路径的默认操作(这是我当天的第一个操作之一),您需要在将项目放入变量时进行洗牌,并且工作流将多个输入项作为一个批次处理。

Rename Finder Items 操作只会重命名(您需要使用 Make Sequential 选项而不是 Name Single Item),但是没有多大帮助,特别是因为 将 PDF 页面呈现为图像 操作也在其输出中使用序列号。

对于具有相同父文件夹的项目(否则需要使用第三方操作来单独处理项目),可以使用 Run AppleScript 操作(如链接示例中所示)获取父文件夹以在变量中使用,因此您的工作流程将类似于:

  • Workflow 在任何应用程序中接收 PDF 文件
  • 设置变量值{变量:输入}
  • 运行 AppleScript:

    on run {input, parameters}
      tell application "Finder" to return (container of first item of input) as alias
    end run
    
  • 设置变量值{变量:文件夹}
  • 获取变量的值{变量:输入}(忽略输入)
  • 将 PDF 页面呈现为图像
  • Copy Finder Items { To: folder }(选择或拖动文件夹变量到组合框字段)

【讨论】:

  • 我不确定,但我认为当您说“(否则需要使用第三方操作...”时,您是在说您概述的解决方案不适用除非所有项目都在同一个父文件夹中。但如果是这样,我对这种受限情况没什么兴趣。我希望能够使用 Spotlight 查找位于多个文件夹中的 .pdf,选择它们,右键单击,然后使用将 .jpgs 输出到所有这些多个文件夹的快速操作。不幸的是,您的回复与我在尝试解决此问题时发现的一致,我开始得出结论,它只是无法完成
  • 看一下Dispense Items Incrementally 动作——它会一次循环遍历输入项。将动作放在工作流的开头,将循环动作放在最后。
【解决方案2】:

我找到了一种适合我的方法。

  • Workflow 在任何应用程序中接收 PDF 文件
  • 设置变量 {Variable: InputPDFs} 的值
  • 运行 AppleScript:

    on run {InputPDFs, parameters}
        tell application "Finder" to return (container of first item of InputPDFs) as alias
    end run
    
  • 设置变量{Variable: PathToPDFs}的值

  • 获取变量 {Variable: InputPDFs} 的值(忽略输入)
  • 将 PDF 页面呈现为图像
  • 设置变量 {Variable: InputPDFs} 的值
  • 获取变量 {Variable: InputPDFs} 的值(忽略输入)
  • 重命名 Finder 项:按顺序排列
  • 设置变量 {Variable: InputPDFs} 的值
  • 移动 Finder 项目 {To: PathToPDFs}

【讨论】:

  • 此解决方案不起作用。我最初问题的主要目标是“制作一个 Automator 快速操作 (Mac OS),它将 pdf 页面中的图像保存到 pdf 所在的同一文件夹中。”我尝试了您的代码,发现它将所有文件都保存到桌面而不是原始文件夹中。如原始问题所述,我已经知道该怎么做。为了确保我完全按照你说的做,我制作了一个视频来展示代码并运行它。我在评论中留下了该视频的链接 3 个月,但没有任何回应。我现在已删除我的评论并停止托管该视频
  • 这个解决方案看起来和我的很相似,而且看起来也是正确的。我认为@TonyM 是您的问题,但如果不知道您的系统配置以及您可能做错了什么,很难说出什么。
【解决方案3】:

屏幕截图中的以下解决方案在 Catalina (10.15.7) 中运行良好。

  1. 它会提示您选择输入 PDF(您可以将其替换为您喜欢的输入法)。
  2. 它存储包括输入文件名的完整路径(“PDF-file”)、不包括输入文件名的完整路径(“pdfPath”)和没有路径和扩展名的基本输入文件名(“pdf-name” )。
  3. 将 PDF 呈现为图像
  4. 将每个图像重命名为 pdf-name-***(注意:如果您跳过重命名或使用“将数字添加到现有项目名称”,您最终会得到由 Render PDF as images 小部件添加的自动索引,该小部件赢得了'不是以 01 开头,而是以页数 + 1 开头,例如 66、67、68 等,如果您的 pdf 有 65 页)。
  5. 将图像保存到原始输入文件夹(与所选 PDF 所在的文件夹相同)。

【讨论】:

  • 这个解决方案对我不起作用。正如我在原帖中所写,“困难的部分是保存到 pdf 所在的同一个文件夹中。”请参阅我的帖子末尾,其中我展示了我的尝试的屏幕截图。请注意,我正在尝试将其作为服务运行,以便我可以简单地右键单击任何文件夹中的 pdf。尽管如此(除非我犯了一个错误)我实现了这里发布的所有其他内容,并在被询问时导航到文件。不幸的是,所有文件最终都在桌面上,而不是包含 pdf 的文件夹。
  • 我看到了您声称是我的解决方案的解决方案,但您似乎已经更改了它,这不是我建议的。看我对你帖子的评论。我还将我的解决方案转换为快速操作,这也有效,图像保存到 pdf 所在的同一文件夹,而不是桌面。我认为您的计算机可能存在问题,因为我公司的每个人都使用此代码没有问题。或者您可能没有尝试将其实际保存为快速操作并通过右键单击目标 PDF 从 Finder 运行它(您在编辑中发布的工作流程无法从 Automator 运行)
  • 查看他对 red_menace 答案的评论。虽然您的 工作流程 按预期为您工作,但它不能也不会按 Tony M 打算如何使用它的方式工作。他想将多个文件从不同的文件夹发送到Quick Action,并在每个相应的文件夹中创建文件该文件在其中。您的 workflow 获取第一个 itemcontainer 以及当下一个 itemlist 得到处理,其输出被发送到错误的文件夹。这在他的 OP 中并没有完全明确,应该有。
  • 当您真正的意思是问题中根本没有提到它时,我们不要说“不清楚”。任何人都可以查看编辑历史记录,并看到在我回答这个问题时根本不包括从不同文件夹中获取 PDF 文件的要求,他后来补充道。 OP 应该更加尊重社区花时间在他的问题上,而不应该不断改变问题,然后对原始上下文中正确的答案投反对票。
猜你喜欢
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 2014-07-28
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多