我在应用程序页面内动态生成一个页面(html)。
现在我需要将该页面存档在文档库中。 PDF会很棒,Word会好的。 Html是最糟糕的情况。
如果需要,我当然可以将html更改为aspx。
虽然我发现很多页面为最终用户解释了SP2013的新PDF功能,但我没有找到任何示例如何在不使用第三方工具的情况下通过代码执行此操作。
答案 0 :(得分:2)
您可以将SharePoint 2013中引入的新SyncConverter类用作Word Automation Services的一部分。为了能够使用它,您需要包含位于Microsoft.Office.Word.Server.dll
文件夹中的C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI
。
using Microsoft.Office.Word.Server.Conversions;
var fileContent = "<html><body><h1> Blah Blah Blah </h1></body></html>";
using (var read = GenerateStreamFromString(fileContent))
using (var write = new MemoryStream())
using (var site = new SPSite("http://localhost"))
using (var web = site.OpenWeb())
{
var wordAutomationServiceName = "Word Automation Services";
var sc = new SyncConverter(wordAutomationServiceName);
sc.UserToken = site.UserToken;
sc.Settings.UpdateFields = true;
sc.Settings.OutputFormat = SaveFormat.PDF;
var info = sc.Convert(read, write);
if (info.Succeeded)
{
var folder = web.Lists["Documents"].RootFolder;
folder.Files.Add("http://localhost/Documents/SyncConverted.pdf", write);
}
}
public static Stream GenerateStreamFromString(string s)
{
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.Write(s);
writer.Flush();
stream.Position = 0;
return stream;
}