【问题标题】:C# HTML to PDF code for use in a service (on a server)用于服务(在服务器上)的 C# HTML 到 PDF 代码
【发布时间】:2012-08-17 00:24:24
【问题描述】:
我正在寻找一些 C# 代码,以便从呈现的 HTML 页面在服务器上创建 .PDF 文档。我要转换为 .PDF 的 HTML 的结构和内容非常简单(DIV、TABLE、IMAGE 等),所以我需要以下代码:
- 创建可由客户端浏览保存的文档(在他们单击另存为 .PDF 后)
- 处理 HTML 流并将其转换为 .PDF
- 处理将图像添加到文档中
- 指定文档的分辨率 (?) - 这将是我想要的打印质量(高 DPI 并且我嵌入的图像将是高分辨率)
我已经看到了很多关于此的问题,但是在搜索了一个小时左右之后,我无法找到一个好的起点。任何指针都会很棒...理想情况下,我正在寻找一些我可以使用的源代码,而不是可购买的组件或可以完成所有工作的 Web 服务。
【问题讨论】:
标签:
c#
asp.net
html
pdf
adobe
【解决方案1】:
【讨论】:
-
是的,我使用 wkhtmltopdf 完全满足了您的需求,因为我们需要 PDF 服务来为多个客户提供服务,并且不想维护单独的安装等。我最终将在线服务公开给任何人 html2pdfrocket.com . wkhtmltopdf 效果很好,而且是免费的。
【解决方案3】:
我在 Expected Behavior 工作,我们开发了一个名为 DocRaptor 的 HTML 到 PDF API,它使用 Prince XML 作为我们的 PDF 渲染引擎。既然您提到想要创建高质量的文档,我认为我们的服务非常适合。
我们有 C# 的示例代码,您可以在这里找到:
DocRaptor C# example
DocRaptor 是一项基于订阅的服务,但我们还提供免费计划,允许用户每月最多创建 5 个文档。
【解决方案4】:
你可以试试Amyuni WebkitPDF。它是一个免费的组件,可以将 HTML 转换为 PDF 或 XPS,并且包中包含 C# 的示例代码。
通常的免责声明适用
【解决方案5】:
依赖于 SDK 的特定部分,例如 one
您还可以查看那些手册,这些小部分在 Native SDK Pages 的服务器端操作部分中描述。
http://www.pdfonline.com/easypdf/sdk/usermanual/source/running_on_server/asp_sample.htm
http://www.pdfonline.com/easypdf/sdk/usermanual/source/using_objects/native_net_printer.htm
其他一切都取决于您的架构以及您希望如何将文件传输到运行 SDK 的机器。我想最简单的方法是使用 FileUpload 元素,这是一个可以添加到由 Visual Studio 设计的网站的 Web 窗体元素。您可以从该对象将文件本地保存在服务器上,或将其读入内存并处理转换。
这是一个使用 FileUpload 的简单方法。切换到您想要的任何文件上传方法也很容易,唯一重要的是获取文件及其文件扩展名的 byte[] 数组,然后您可以将其发送到 PrintOut3()。或者您可以将文件本地保存到服务器上以使用 PrintJob 或 PrintJob2。
//Upload and convert a File when a Button is pushed
protected void Button1_Click(object sender, EventArgs e)
{
if(FileUpload1.HasFile)
{
string iEXT = Path.GetExtension(FileUpload1.FileName);
byte[] iMEM = FileUpload1.FileBytes;
byte[] oMEM;
Printer oPrin = new Printer();
PrintJob oPJob = oPrin.PrintJob;
try
{
oMEM = oPJob.PrintOut3(iMEM, iEXT);
}
catch (PrinterException ex)
{
//Perform your desired Error Handling
}
finally
{
oPrin.Dispose();
}
// Save oMEM as Desired, or use it how you see fit.
}
}