2015-05-04 61 views
0

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

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存储而不是从本地服务器获取的),因为我需要将其移至我的存储帐户。该文件是否保存在本地(意味着正在处理它的web/worker角色),因此需要将其移至存储?

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

+2

user3609640答案是正确的。但是关于你的代码。 var转换不是布尔值,而是pdftron.Filters.Filter对象。您可以使用此过滤器将XOD转换流式传输到webviewer。请参阅您下载的.Net SDK的WebViewerStreaming示例。要直接保存到文件,请调用ToXod(pdfdoc,“path_to_xod_file”),或将Filter指向文件位置。 请注意,您也可以使用DocPub CLI进行流式传输。有一个标志将输出指向标准输出管道。 – Ryan

回答

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); 
    }); 
}); 
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转换。大多数人这样做是通过设置一些Web服务来上传PDF(或其他格式)文件。然后他们将文档转换为服务器端,并将转换后的XOD文件放置在WebViewer可以为其提供服务的地方。

相关问题