Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET HTTP客户端下载带有HTML表单的PDF POST_.net_Pdf_Navision - Fatal编程技术网

.NET HTTP客户端下载带有HTML表单的PDF POST

.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'

这里有点.NET问题,因为我不是.NET程序员。我使用导航:)

我正在使用Navision连接到返回PDF的Web服务。下面是我正在使用的代码

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

我认为您需要在.NETC#中创建一个函数来执行此操作。然后从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文本变量。