0

我有一个需要将 PDF 转换为 XOD 的网络应用程序(PDFTron 的格式以在其 WebViewer 中显示文档)。我的 Web 应用程序托管在 Azure 上,PDF 位于 Azure 存储上。我们想通过 PDFNet SDK 进行本地转换(http://www.pdftron.com/webviewer/getstarted.html,请参阅“选择转换的部署模型),到目前为止我的代码如下:

WebRequest req = HttpWebRequest.Create("url of PDF on Azure Storage here");                         
using (Stream stream = req.GetResponse().GetResponseStream())
{
    PDFDoc pdfdoc = new PDFDoc(stream);
    var converted = pdftron.PDF.Convert.ToXod(pdfdoc);
    //pdfdoc.Save(stream, pdftron.SDF.SDFDoc.SaveOptions.e_linearized); //not clear to me
}

我的方法是从 azure 存储上的文件创建一个流并将该流转换为 XOD。我仍然不知道我是否应该调用“保存”以及在这种情况下将文件保存在哪里。我的问题是:

  1. 由于一切都在云上运行,使用 CloudAPI 而不是自托管解决方案是否有意义,还是没有任何区别?
  2. 在这两种情况下,转换后的文件存储在哪里(因为我是从 Azure 存储而不是从本地服务器获取它),因为我需要将它移动到我的 azure 存储帐户。文件是否保存在本地(意味着正在处理它的 web/worker 角色),因此需要移动到存储中?

这里(http://www.pdftron.com/pdfnet/samplecode.html)有转换代码示例,但它们都使用本地机器上的文件,这不是我的情况。

4

2 回答 2

1

由于一切都在云上运行,使用 CloudAPI 而不是自托管解决方案是否有意义,还是没有任何区别?在这两种情况下,转换后的文件存储在哪里 [...]

如果您要使用云解决方案,您可以将文件传输到 PDFTron 的服务器,在那里进行转换。然后,您将下载转换后的文件。

如果要使用本地解决方案,则需要在 Azure 实例上运行 DocPub CLI ( https://www.pdftron.com/docpub/downloads.html ),它与 ​​PDFTron 的唯一通信是增加您的 PWS 帐户的计费计数器 ( https://www.pdftron.com/pws/index.html )。

您必须自己决定哪种解决方案最适合您。

这里(http://www.pdftron.com/pdfnet/samplecode.html)有转换代码示例,但它们都使用本地机器上的文件,这不是我的情况。

[注意:这些示例展示了如何使用 PDFNet SDK 运行转换。要运行 PDFNet,您需要额外的许可证。因此,您可能想改用 DocPub CLI 或云转换器。]

示例展示了如何在本地转换文件,因为 XOD 转换需要在服务器端运行。大多数人这样做是通过设置一些网络服务来上传 PDF(或其他格式)文件。然后他们在服务器端转换文档,并将转换后的 XOD 文件放置在 WebViewer 可以为它们提供服务的地方。

于 2015-05-04T17:08:10.990 回答
0

经过一些额外的研究,我发现我可以直接在 Azure 上获取和设置源文件和目标文件的流(即使目标文件还不存在),而无需下载文件。然后生成的代码类似于

using (var sourceStream = sourceBlob.OpenRead())
{
    var destinationContainer = BlobClient.GetContainerReference(projectKey);
    var destinationBlob = destinationContainer.GetBlockBlobReference(xodName);
    using (var destinationStream = destinationBlob.OpenWrite())
    {
        var pdfDoc = new PDFDoc(sourceStream);
        pdftron.PDF.Convert.ToXod(pdfDoc);
        pdfDoc.Save(destinationStream, pdftron.SDF.SDFDoc.SaveOptions.e_linearized);
    });
});
于 2015-05-05T13:03:18.047 回答