我想从C#Web服务打印HTML.Web浏览器控件过度,在服务环境中无法正常运行,在安全性受到严格限制的系统上也无法正常运行.是否有任何类型的免费.NET库可以支持打印基本HTML页面?这是我到目前为止的代码,它运行不正常.
public void PrintThing(string document)
{
if (Thread.CurrentThread.GetApartmentState() != ApartmentState.STA)
{
Thread thread =
new Thread((ThreadStart) delegate { PrintDocument(document); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
else
{
PrintDocument(document);
}
}
protected void PrintDocument(string document)
{
WebBrowser browser = new WebBrowser();
browser.DocumentText = document;
while (browser.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
browser.Print();
}
Run Code Online (Sandbox Code Playgroud)
从UI类型的线程调用时,这很好,但是从服务类型的线程调用时没有任何反应.更改Print()以ShowPrintPreviewDialog()产生以下IE脚本错误:
错误:
dialogArguments.___IE_PrintType为null或不是对象.网址:
res://ieframe.dll/preview.dlg
并出现一个小的空打印预览对话框.
我想将一段html导出为pdf文件,但我没有任何兼容的nuget包.
当我尝试安装任何人时:"X与netcoreapp1.0不兼容(.NETCoreApp,Version = v1.0)."
有谁知道用asp.net核心导出到pdf的任何方法?
10个小时后,尝试4个其他HTML到PDF工具,我准备爆炸了.
wkhtmltopdf听起来像是一个很好的解决方案......问题是我无法从asp.net执行具有足够权限的进程所以......
Process.Start("wkhtmltopdf.exe","http://www.google.com google.pdf");
Run Code Online (Sandbox Code Playgroud)
开始但没有做任何事情.
是否有一种简单的方法:
-a)允许asp.net启动进程(实际上可以做某事)或
-b)编译/包装/无论wkhtmltopdf.exe到我可以在C#中使用的东西,如下所示:WkHtmlToPdf.Save("http://www.google.com", "google.pdf");
有很多旧的文本,比如2002年的书,说明我们必须使用"CSS for Web"和"XSL-FO for print".我认为在现今(2012)我们最终可以使用CSS和渲染引擎来理解CSS2的分页媒体和CSS3的东西......但是"新文本",程序员的共识和软件的投资在哪里呢?
XSL-FO或"XSL格式化对象"(W3C标准)是从XML或XHTML内容生成PDF文档的最常用技术.XSL-FO 1.1版 于2006年发布,2001年发布1.0.
CSS2.1来自2011年,但CSS2.0是1998年的标准,2008年修订......我认为标准年龄不是问题.使用HTML,XHTML或XML的CSS具有"打印力":参见PrinceXML,WebKit打印模块(或wkhtmltopdf),ABCpdf等工具.
在CSS和XSL-FO之间进行选择:使用CSS2,您可以将文本完全适合纸质页面等.这不是分页,多列布局,放置脚注,运行页眉或页面边距......两者, CSS(分页媒体)和XSL-FO是做到这一点的好标准.
PS:关于这个上下文有一些相关的问题/答案,关于webkit转换,用PHP转换和关于HTML的Generation PDF.没有人对这个提出的问题有很好的答案.
如何使用asp.net,c#将wtml作为字符串而不是wltmltopdf中的url传递?
我希望有一个SPA,它可以完成客户端的所有工作,甚至可以生成一些图形/视觉效果.
我希望能够让用户单击按钮并保存页面中的视觉效果,表格和其他内容(既可以看到也可以看不到,因此右键单击保存或复制/粘贴并不总是一个选项).
如何从webassembly/blazor库调用函数,获取结果并将其保存为客户端文件?
这个想法是这样的......?
CSHTML
<input type="file" onchange="@ReadFile">
<input type="file" onchange="@SaveFile">
@functions{
object blazorObject = new blazorLibrary.SomeObject();
void ReadFile(){
blazorObject.someFunction(...selectedFile?...);
}
void SaveFile(){
saveFile(...selectedFile..?)
}
}
Run Code Online (Sandbox Code Playgroud) 我发送的电子邮件附有PDF格式的发票.我已经 - 在应用程序的其他地方 - 在.aspx页面中创建发票.我想使用Server.Execute返回输出HTML并从中生成PDF.否则,我必须使用报告工具在PDF上"绘制"发票.这有很多原因,其中最重要的原因是,我必须更新.aspx页面和报告,以便进行每次微小的更改.该怎么办...
可能重复:
在.NET中将HTML转换为PDF
在我们的应用程序中,我们将html文档作为报告和导出.但现在我们的客户想要一个按钮,将该文档保存在他们的电脑上.问题是文档包含图像.您可以使用以下代码创建Word文档:
private void WriteWordDoc(string docName)
{
Response.Buffer = true;
Response.ContentType = "application/msword";
Response.AddHeader("content-disposition", String.Format("attachment;filename={0}.doc", docName.Replace(" ", "_")));
Response.Charset = "utf-8";
}
Run Code Online (Sandbox Code Playgroud)
但问题是图像只是链接,因此没有嵌入word文档中.
因此,我正在寻找替代PDF似乎是一个很好的选择,有没有人知道一个优秀的C#作者?一个有一些很好的参考,并已经过适当的测试?
我需要从 HTML Canvas 生成 PDF,但该过程必须在作为 ASP.NET Core Web Api 的服务器端完成。
c# ×6
asp.net ×5
html ×4
pdf ×4
wkhtmltopdf ×2
.net ×1
asp.net-core ×1
blazor ×1
css ×1
export ×1
pagination ×1
printing ×1
web ×1
web-services ×1
webassembly ×1
xml ×1
xsl-fo ×1