.NET HTTP客户端下载带有HTML表单的PDF POST
这里有点.NET问题,因为我不是.NET程序员。我使用导航:) 我正在使用Navision连接到返回PDF的Web服务。下面是我正在使用的代码.NET HTTP客户端下载带有HTML表单的PDF POST,.net,pdf,navision,.net,Pdf,Navision,这里有点.NET问题,因为我不是.NET程序员。我使用导航:) 我正在使用Navision连接到返回PDF的Web服务。下面是我正在使用的代码 HttpClient := HttpClient.HttpClient(); SubmitData := 'partnerid=MY1003'; SubmitData += '&password=mc1222'; SubmitData += '&country=DE'; SubmitData += '&firstname=Me'
HttpClient := HttpClient.HttpClient();
SubmitData := 'partnerid=MY1003';
SubmitData += '&password=mc1222';
SubmitData += '&country=DE';
SubmitData += '&firstname=Me';
SubmitData += '&lastname=McMe';
HttpContent := HttpContent.StringContent(SubmitData, Encoding.UTF8, 'application/x-www-form-urlencoded');
HttpResponseMessage := HttpClient.PostAsync(Uri.Uri('https://api-return-pdf.theirwebsite.com/PDFService/V1/getPDF'), HttpContent).Result;
IF (HttpResponseMessage.IsSuccessStatusCode) THEN BEGIN
ResponseData := HttpResponseMessage.Content.ReadAsStringAsync().Result;
f.CREATEOUTSTREAM(fileoutstream);
fileoutstream.WRITETEXT(ResponseData);
END;
但问题是返回的PDF文件似乎完全是空的!但是,如果我构建一个基本的web提交表单来完成这项工作,那么返回的PDF是完美的
<form action="https://api-return-pdf.theirwebsite.com/PDFService/V1/getPDF" method="POST">
<table>
<thead></thead>
<tbody>
<tr>
<td>User, Pass</td>
<td><input name="partnerid" type="text">
<input name="password" type="text">
</td>
</tr>
<tr>
<td>Vorname, Nachname</td>
<td><input name="firstname" type="text">
<input name="lastname" type="text">
</td>
</tr>
<tr>
<td>country:</td>
<input name="country" type="de">
</td>
</tr>
</tbody>
</table>
<input type="submit" value="Send" />
<input type="reset" />
</form>
用户,通过
沃纳姆
国家:
当我在记事本中编辑生成的PDF时,我会在开头看到以下内容,在我看来这是一个正确的PDF
%PDF-1.4
%????
3 0 obj
<</Type/XObject/ColorSpace/DeviceGray/Subtype/Image/BitsPerComponent 8/Width 227/Length 30/Height 35/Filter/FlateDecode>>stream
x???
%PDF-1.4
%????
30 obj
流动
x???
因此,我唯一的猜测是,流式输出到文件的字符串的编码有点错误。。。。。。。。。。。。是否应该在保存PDF之前/期间执行某种形式的转换
或者我可以使用更好的.NET类来实现相同的效果,而不会出现此问题吗?pdf文件不起作用,因为您确实在保存一个扩展名为pdf的txt文件。因此,当您使用记事本打开此文件时,看起来是OK 我认为您需要在.NET或C#中创建一个函数来执行此操作。然后从NAV调用以保存此值 可能是这样的:
PdfDocument pdf = new PdfDocument();
pdf.Info.Title = "PDF Title";
PdfPage pdfPage = pdf.AddPage();
XGraphics graph = XGraphics.FromPdfPage(pdfPage);
XFont font = new XFont("Verdana", 11, XFontStyle.Bold);
graph.DrawString("Your PDF Line", font, XBrushes.Black, new XRect(0, 0, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.Center);
string pdfFilename = "FileName.pdf";
pdf.Save(pdfFilename);
Process.Start(pdfFilename);
using System;
using System.Diagnostics;
using PdfSharp;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
使用此引用:
PdfDocument pdf = new PdfDocument();
pdf.Info.Title = "PDF Title";
PdfPage pdfPage = pdf.AddPage();
XGraphics graph = XGraphics.FromPdfPage(pdfPage);
XFont font = new XFont("Verdana", 11, XFontStyle.Bold);
graph.DrawString("Your PDF Line", font, XBrushes.Black, new XRect(0, 0, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.Center);
string pdfFilename = "FileName.pdf";
pdf.Save(pdfFilename);
Process.Start(pdfFilename);
using System;
using System.Diagnostics;
using PdfSharp;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
或者,您可以下载整个pdf文件(不读取)并保存在您的位置
我希望它能帮助你。谢谢你。唉,我不知道如何在.NET中编程,也不知道使用什么样的编码环境或其他任何东西:) 所以我有点希望这里的人知道: 1) 使用现有的.NET库或
2) 使用现有的.NET库如何增强我当前下载文件的方式,以便将其正确保存为PDF格式,而不是如您所说的TXT:)好的,很抱歉,我浪费了您的时间。但我自己解决了。我知道我是如何解决它的,我只是不知道它为什么起作用 我没有将HTTPResponse读入字符串,而是将其读入.NET数组。然后我创建了该数组的MemoryStream 从那里,我将结果流式传输到数据库中的Navision“BLOB”字段中,然后使用内部BLOB.EXPORT('C:\temp\result.pdf')命令从该BLOB导出文件。结果是一个完美的PDF
我想在这一过程中会有一些细微的编码差异,但我想是如何、为什么或者什么超出了我的工资等级:)Hi,
f
变量是File
和fileoutstream
是OutStream
对吗<代码>响应数据是否为文本
<代码>响应数据值是否正确?f变量是导航“文件”变量是。fileoutstream是Navision OutStream,而不是.net。ResponseData实际上也是一个Navision文本变量。