C# 是否从检索到的数据创建PDF,并在不使用第三方工具的情况下将PDF返回到浏览器?

C# 是否从检索到的数据创建PDF,并在不使用第三方工具的情况下将PDF返回到浏览器?,c#,pdf,model-view-controller,C#,Pdf,Model View Controller,好的,我想做的是从数据库中获取信息,并将这些信息转换成PDF,,而不使用第三方工具。我在谷歌上搜索了这个,并尝试了几个不同的化身。我得到的最接近的结果是: [HttpGet, ActionName("getthepdf")] public void CreateTheFile() { Response.Buffer = true; Response.Clear(); Response.ClearContent(); Response.ClearHeaders();

好的,我想做的是从数据库中获取信息,并将这些信息转换成PDF,,而不使用第三方工具。我在谷歌上搜索了这个,并尝试了几个不同的化身。我得到的最接近的结果是:

[HttpGet, ActionName("getthepdf")]
public void CreateTheFile()
{
    Response.Buffer = true;
    Response.Clear();
    Response.ClearContent();
    Response.ClearHeaders();

    string myString = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac eleifend nunc, eget consequat arcu.";

    byte[] bytes = System.Text.Encoding.UTF8.GetBytes(myString);

    Response.ContentType = "application/octet-stream";
    Response.AddHeader("Accept-Ranges", "bytes");
    Response.AddHeader("Content-Disposition", "inline; filename=testdoc_1.pdf");
    Response.AddHeader("Content-Length", myString.Length.ToString());

    Response.BinaryWrite(bytes);
    Response.Flush();
}
这在https上不起作用。它“创建”了一个PDF(或者更准确地说,是一个扩展名为.PDF的文件),但每当我尝试在Adobe Reader中打开它时,我都会得到:

Adobe Reader无法打开“testdoc_1.pdf”,因为它不是受支持的文件类型,或者文件已损坏

当我试图在浏览器中打开它时(在本例中是Chrome),我得到“无法加载PDF文档”

奇怪的是(这可能只是软件的一个功能),如果我将所需的文件类型更改为.doc,它会将未格式化的文本放入.doc文件中,我可以用word打开该文件

该公司想要一个最终用户可以打印或保存到本地机器上的PDF文件,所以我正试图找出如何满足他们的需求。如果这是不可能的,我可能不得不看看我是否可以让他们接受一个.doc文件

在这一点上,它不必看起来很漂亮,它只需要工作就行了


如有任何提示或建议,我们将不胜感激。

如果您想创建pdf,它必须符合pdf规范(可从ISO获得,费用由ISO:)。它不仅仅是带有pdf扩展名的纯文本。如果绝对不能使用第三方库,当然可以编写自己的实现,但我强烈建议不要这样做。这需要做很多工作,其他人可能比你做得更好

我不再需要这方面的帮助。我的领导说我可以使用iTextSharp。这个问题现在可以被视为已结束。

您的示例代码回吐纯文本并提示文件名以.PDF结尾-这与实际创建PDF无关,如果您使用
testdoc_1.jpg
您将无法获得图像。使用经验证的PDF库有什么问题?重新发明轮子并不总是好的。我同意@Stephen的观点。我建议您考虑一下,如果您不能使用任何第三方工具,是否可以将数据导出为其他格式,因为您(最多)将花费数周的时间来尝试实现PDF规范,甚至是部分实现,从零开始不使用第三方工具。我很好奇为什么不允许使用第三方工具?对于大多数类型的文件的创建,您需要依赖第三方工具,因为大多数文件格式都相当复杂(除了html、xml、纯文本和csv之外,它们是唯一常见的格式)。@AlexK@user2366842不使用第三方工具是公司的要求。他们的决定,不是我的。虽然我刚和工作场所的人谈过这件事,他们告诉我一个“.doc”就可以了。是的,我现在知道它是以文本的形式发送的,但如果他们能用Word(或同等版本)打开它,我想我会没事的。