我可以在PC上设计word文档,然后使用C#在IIS上编辑并转换为PDF吗?
以下是我想做的:我可以在PC上设计word文档,然后使用C#在IIS上编辑并转换为PDF吗?,c#,asp.net,pdf,C#,Asp.net,Pdf,以下是我想做的: 创建一个模板/文档,看起来像我想要的页面边框、徽标图像、结构化区域、预格式化和定位文本等。我认为这将是一个word文档,但我愿意接受任何内容。我只需要能够根据客户提供的细节设计文档。我计划在上传到服务器之前在PC上手动执行此操作 将其存储在服务器上或数据库中,以备将来检索(包括在内) 需要时,访问模板/文档,并以编程方式将数据添加到文档中的预定位置(如姓名、地址、电话、购买的产品、融资金额等) 将文档转换为PDF 通过电子邮件发送文档(已涵盖此内容) 我用C#和ASP.NE
- 创建一个模板/文档,看起来像我想要的页面边框、徽标图像、结构化区域、预格式化和定位文本等。我认为这将是一个word文档,但我愿意接受任何内容。我只需要能够根据客户提供的细节设计文档。我计划在上传到服务器之前在PC上手动执行此操作
- 将其存储在服务器上或数据库中,以备将来检索(包括在内)
- 需要时,访问模板/文档,并以编程方式将数据添加到文档中的预定位置(如姓名、地址、电话、购买的产品、融资金额等)
- 将文档转换为PDF
- 通过电子邮件发送文档(已涵盖此内容)
我用C#和ASP.NET/MVC来完成所有这些。你能推荐图书馆和可能的支持教程/wiki/文档来完成这项工作吗?有很多付费的第三方图书馆可以做到这一点。我用过一个这样的()并且它对我很有效。有很多付费的第三方图书馆都这样做。我使用了一个这样的()并且它对我很有效。我通过以下方法完成了这一点:
System.Xml
使用Word的Xml标记输出Word文档:
我通过以下方式完成了这项工作:
System.Xml
使用Word的Xml标记输出Word文档:
我做了一件与您描述的非常类似的事情,不过这更多的是合并和拆分pdf文件,只需稍加修改内容,但我发现PDFSharp工作得非常好。绝对值得一看。[PDFSharp.net][1]
[1] :-而且它是开源的…我做了一件与您描述的非常类似的事情,但是它更像是pdf文件的合并和拆分,只需对内容进行少量修改,但我发现PDFSharp工作得非常好。绝对值得一看。[PDFSharp.net][1]
[1] :-而且它是开源的…我使用NPOI处理Excel文档。您可以同时读取/写入数据。对于PDF操作来说,ghostscript相当不错,但它通常输入/输出图像和文本,而不是Excel。这里有一个相关的主题:当然,pdflib(我也使用)和NPOI可以允许您手动编写转换…要求我们推荐或查找工具、库或喜爱的场外资源的问题对于堆栈溢出来说是离题的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,描述问题以及迄今为止为解决问题所做的工作。你可以做任何你下定决心要做的事情。话虽如此,请查看第三方库。我是否正确地处理了这个问题?或者我必须完全通过代码生成文档?我使用NPOI进行Excel文档操作。您可以同时读取/写入数据。对于PDF操作来说,ghostscript相当不错,但它通常输入/输出图像和文本,而不是Excel。这里有一个相关的主题:当然,pdflib(我也使用)和NPOI可以允许您手动编写转换…要求我们推荐或查找工具、库或喜爱的场外资源的问题对于堆栈溢出来说是离题的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,描述问题以及迄今为止为解决问题所做的工作。你可以做任何你下定决心要做的事情。话虽如此,请查看第三方库。我是否正确地处理了这个问题?还是我必须完全通过代码生成文档?谢谢@bob mac。我会看看那个图书馆。谢谢@bob mac。我要去看看那个图书馆。
// Simple document setup
XmlTextWriter Writer = new XmlTextWriter(HttpContext.Current.Server.MapPath("../XMLDocs/") + FileName + ".doc", System.Text.Encoding.UTF8);
Writer.Formatting = Formatting.Indented;
Writer.WriteStartDocument(true);
Writer.WriteStartElement("w:wordDocument");
Writer.WriteAttributeString("xmlns:o", "urn:schemas-microsoft-com:office:office");
Writer.WriteAttributeString("xmlns:v", "urn:schemas-microsoft-com:vml");
Writer.WriteAttributeString("xmlns:w", "http://schemas.microsoft.com/office/word/2003/wordml");
Writer.WriteAttributeString("xmlns:w10", "urn:schemas-microsoft-com:office:word");
Writer.WriteAttributeString("xmlns:wx", "http://schemas.microsoft.com/office/word/2003/auxHint");
Writer.WriteStartElement("w:styles");
Writer.WriteStartElement("w:style");
Writer.WriteAttributeString("w:type", "paragraph");
Writer.WriteAttributeString("w:default", "on");
Writer.WriteAttributeString("w:styleId", "Paragraph");
Writer.WriteStartElement("w:name");
Writer.WriteAttributeString("w:val", "Paragraph");
Writer.WriteEndElement();
Writer.WriteStartElement("w:rPr");
Writer.WriteStartElement("w:sz");
Writer.WriteAttributeString("w:val", "18");
Writer.WriteEndElement();
Writer.WriteEndElement();
Writer.WriteEndElement();
Writer.WriteEndElement();
// Simple document editing
Writer.WriteStartElement("w:p");
Writer.WriteStartElement("w:pPr");
Writer.WriteStartElement("w:pStyle");
Writer.WriteAttributeString("w:val", "Paragraph");
Writer.WriteEndElement();
Writer.WriteEndElement();
Writer.WriteStartElement("w:r");
Writer.WriteStartElement("w:t");
Writer.WriteRaw("Some Text");
Writer.WriteEndElement();
Writer.WriteEndElement();
Writer.WriteEndElement();
// Simple document completion
Writer.WriteStartElement("w:sectPr");
Writer.WriteStartElement("w:pgSz");
Writer.WriteAttributeString("w:w", "12240");
Writer.WriteAttributeString("w:h", "15840");
Writer.WriteEndElement();
Writer.WriteStartElement("w:pgMar");
Writer.WriteAttributeString("w:top", "1440");
Writer.WriteAttributeString("w:right", "1440");
Writer.WriteAttributeString("w:bottom", "1440");
Writer.WriteAttributeString("w:left", "1440");
Writer.WriteAttributeString("w:header", "720");
Writer.WriteAttributeString("w:footer", "720");
Writer.WriteAttributeString("w:gutter", "0");
Writer.WriteEndElement();
Writer.WriteStartElement("w:cols");
Writer.WriteAttributeString("w:space", "720");
Writer.WriteEndElement();
Writer.WriteStartElement("w:docGrid");
Writer.WriteAttributeString("w:line-pitch", "360");
Writer.WriteEndElement();
Writer.WriteEndElement();
Writer.WriteEndElement();
Writer.WriteEndElement();
Writer.WriteEndElement();
Writer.Close();
var flagPrintToPrinter = String.Format("-print-to \"{0}\"", printerName);
var flagSilentAndSuppressErrors = "-silent";
var args = String.Format("{0} {1} \"{2}\"", flagPrintToPrinter, flagSilentAndSuppressErrors, printFileName);
var currentDirectory = Environment.CurrentDirectory;
var process = new Process
{
StartInfo = {FileName = String.Format(@"{0}\ThirdPartyAssemblies\SumatraPDF.exe", currentDirectory), Arguments = args}
};
process.Start();
process.WaitForExit();
var exitCode = process.ExitCode;
process.Close();