2012-08-16 49 views
2

我们需要在.NET Azure应用程序中实时生成PDF,并确定PDFLib最符合我们的要求。有没有人有关于在Windows Azure工作者角色上运行PDFlib的建议?

基本部署是基于DLL,所以应该是比较简单的。在研究这个问题时,我遇到了一个案例研究,涉及安装另一个类似的组件(AbcPdf,here),这让我想知道是否有人有任何类似的详细经验来分享有关使PDFLib启动并运行在云服务上的经验?

具体而言,我感兴趣的是除引用的.dlls之外是否有任何其他文件需要与软件包一起复制,是否需要使用启动命令将PDFLib安装到GAC,以及是否有任何文件在云环境中获得许可的问题。

我们当然可以使用VM此如果需要的话,但一开始我期待使用标准的辅助角色。我将要求PDFLib支持这个问题,并将分享我在这里得到的任何答案,因为我还没有在Stackoverflow的其他任何地方发现此主题。

+0

接受我自己的答案,因为它来自PDF lib支持并涵盖所有要点。感谢Steve,Mike,Avkash提供有用的信息。 – JcFx 2012-08-20 08:19:21

回答

2

这是我从PDF库的支持,我想回来涵盖了:

是否.NET PDFLib来要求GAC部署,或可在dll只需将 复制到服务器?

你可以简单地部署pdflib_dotnet dll。

除了引用的dll之外,是否还有其他文件需要被部署为用于PDFLib的 ?

不,PDFlib没有任何进一步的依赖关系。

我们如何能在一个环境,我们 可能无法运行安装程序,以及我们可能无法访问 到Windows注册表中验证我们的产品许可证?

有多种方法可以实现此目的。最简单的方法是在代码中应用许可证密钥。您也可以应用许可证文件。请记住,您需要每个服务,其中PDFlib在生产使用中运行一个单独的许可证。例如,当您在具有4个节点(服务器)的集群系统中运行应用程序时,您需要4个许可证。

而且,您是否有像这样的云部署的一般指导?

我们对此没有任何特别的评论。但是我确定,您将在“PDF Howl中的PDFlib”中找到许多关于我们的PDFlib .NET实现概念的相关信息,这些信息包含在PDFlib 8包中,也可以在我们的网站上获得: http://www.pdflib.com/en/developer/technical-documentation/pdflib-in-net-howto/

1

让我从我没有将这个补丁部署到Azure开始;然而,接下来的内容对于你所拥有的任何组件都应该是准确的。

如果你可以XCOPY部署这个组件到正规的服务器,应该只是一个正常的部署包云服务工作;但是,如果在分发到普通服务器(读取,而不是您的开发计算机)时需要安装,那么您可能在此处有一些额外的步骤。例如,如果安装程序将组件推入GAC,那么您将不得不效仿。

我只是测试一个Xcopy部署部署到正规的处所框,以前没有过这种组件的安装,看看它是否工作。如果确实如此,那么您可能会确保它被引用并与您的包一起部署。如果您担心可能需要其他程序集,请使用Reflector,Just Decompile或ILDasm等检查程序集的引用(小心,使用程序集上的反编译程序可能违反EULA)。

+0

谢谢Mike,这很有用。不过,我仍然有兴趣了解是否有人对PdfLib有任何具体的经验。 – JcFx 2012-08-16 17:17:23

1

我知道你要问的实际经验,但我想说的答案是,这应该只是工作。 From http://www.pdflib.com/fileadmin/pdflib/pdf/support/PDFlib-in-.NET-HowTo.pdf

还支持称为xcopy部署的进程。你可以简单地 使PDFlib组件(pdflib_dotnet.dll)复制到使用 xcopy命令或FTP传输

+0

谢谢,史蒂夫。是的,它看起来像x-copy部署将安装未经许可的试用版本,但我仍然没有看到该文档(或其更详细的API参考),许可证如何照顾,在常规盒子上似乎是安装程序功能的一部分。我会继续挖掘他们的文档,并看看他们的支持必须说。 – JcFx 2012-08-16 21:21:17

+0

啊,我没有意识到他们有这样的授权计划。 – smarx 2012-08-16 22:35:11

1

我下载和PDFLib来的x64版本和给快速尝试使用Windows Azure Web角色的服务器。该库只包含一个作为PDFlib_dotnet.dll的DLL,您可以将其添加为参考,并将其属性设置为“Copy Local As True”。之后,您可以在代码中引用它并根据文档使用它。

根据我的快速测试,你确实需要修改使用Windows Azure的本地存储来创建PDF文件,并同步到Windows Azure Blob存储正确坚持它的代码。可能有办法直接创建PDF到Azure Blob存储,但我只是没有看得更远。

我创建了一个ASP。NET基于webrole用下面的代码:

 PDFlib p; 
     int font; 

     p = new PDFlib(); 

     try 
     { 
      // This means we must check return values of load_font() etc. 
      p.set_parameter("errorpolicy", "return"); 

      // Added code to create PDF on Local Storage 

      LocalResource myStorage = RoleEnvironment.GetLocalResource("myLocalStorage"); 
      string filePath = Path.Combine(myStorage.RootPath, "hello.pdf"); 


      if (p.begin_document(filePath, "") == -1) 
      { 
       Console.WriteLine("Error: {0}\n", p.get_errmsg()); 
       return; 
      } 

      p.set_info("Creator", "hello.cs"); 
      p.set_info("Author", "Rainer Schaaf"); 
      p.set_info("Title", "Hello, world (.NET/C#)!"); 

      p.begin_page_ext(595, 842, ""); 

      font = p.load_font("Helvetica-Bold", "unicode", ""); 
      if (font == -1) 
      { 
       Console.WriteLine("Error: {0}\n", p.get_errmsg()); 
       return; 
      } 

      p.setfont(font, 24); 
      p.set_text_pos(50, 700); 
      p.show("Hello, world!"); 
      p.continue_text("(says .NET/C#)"); 
      p.end_page_ext(""); 

      p.end_document(""); 
     } 

     catch (PDFlibException eX) 
     { 
      // caught exception thrown by PDFlib 
      Console.WriteLine("PDFlib exception occurred in hello sample:\n"); 
      Console.WriteLine("[{0}] {1}: {2}\n", eX.get_errnum(), 
        eX.get_apiname(), eX.get_errmsg()); 
     } 
     finally 
     { 
      if (p != null) 
      { 
       p.Dispose(); 
      } 
     } 
    } 
+0

感谢您花时间整理样品,Avkash。我认为可以将输出写入内存流,然后直接将其输出到blob存储。我必须在接下来的几天内解决这个问题,所以我肯定会添加或更新此评论。 – JcFx 2012-08-17 09:37:31

相关问题