【问题标题】:Most practical way to read an Azure Blob (PDF) in the Cloud?在云中读取 Azure Blob (PDF) 的最实用方法是什么?
【发布时间】:2020-12-07 03:07:49
【问题描述】:

我是一个初学者,以前从未处理过基于云的解决方案。

我的程序使用 PDFBox 库从 PDF 中提取数据并根据数据重命名文件。目前都是本地的,但最终需要部署为 Azure 函数。 PDF 将存储在 Azure Blob 容器中 - Azure Functions 的 Azure Blob 存储触发器是此选择的一个重要原因。

当然,我可以在本地下载 blob 并阅读它,但程序应该只在云中运行。我尝试使用 Java 直接读取 blob,但这会导致乱码数据并且与 PDFbox 不兼容。我现在的计划是将文件临时存储在云中的其他位置(例如 OneDrive、Azure 文件存储)并尝试从那里打开它们。然而,这似乎很快就会变成一个过于混乱的解决方案。我的问题:

(1) 有什么方法可以将 blob 作为文件而不是 CloudBlockBlob 打开,因此不需要此额外步骤?

(2) 如果不是,在这种情况下推荐的临时存储是什么?

(3) 有没有其他方法可以解决这个问题?

【问题讨论】:

    标签: java azure-blob-storage pdfbox


    【解决方案1】:

    由于您正在规划 Azure 功能,您可以使用blob trigger/binding 直接获取字节。然后您可以使用 PDFBox PdfDocument 加载方法直接构建对象PDDocument.load(content)。您不需要任何临时存储来存储文件以加载它。

    @FunctionName("blobprocessor")
    public void run(
      @BlobTrigger(name = "file",
                   dataType = "binary",
                   path = "myblob/{name}",
                   connection = "MyStorageAccountAppSetting") byte[] content,
      @BindingName("name") String filename,
      final ExecutionContext context
    ) {
      context.getLogger().info("Name: " + filename + " Size: " + content.length + " bytes");
      PDDocument doc = PDDocument.load(content);
      // do your stuffs
    }
    

    【讨论】:

    • 非常感谢!我在 PDFBox 文档中错过了这一点
    • @AlexanderJ 如果答案帮助您解决了问题,请点击复选标记。
    猜你喜欢
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多