В конце концов, моя цель - отправить необработанные данные изображения из внешнего интерфейса, затем разделить это изображение на любое количество страниц и, наконец, отправить этот pdf обратно во внешний интерфейс для загрузки.
Но каждый раз, когда я использую theDoc.addImageFile()
, он говорит мне, что «Изображение не в подходящем формате». Я использую это как ссылку: https://www.websupergoo.com/helppdfnet/source/5-abcpdf/doc/1-methods/addimagefile.htm
Чтобы устранить неполадки, я подумал, что изображение может отображаться неправильно, поэтому я добавил File.WriteAllBytes для просмотра визуализированного изображения, и это было именно то, что я хотел, но все еще не добавлял в PDF. Я также попытался отправить фактический путь к ранее отрендеренному изображению, думая, что новое изображение, возможно, еще не было полностью создано, но оно также дало мне ту же ошибку. Наконец, я подумал, что PNG могут быть проблематичными и изменены на JPG, но это не сработало.
Вот код:
[HttpPost]
public IActionResult PrintToPDF(string imageString)
{
// Converts dataUri to bytes
var base64Data = Regex.Match(imageString, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
var binData = Convert.FromBase64String(base64Data);
/* Ultimately will be removed, but used for debugging image */
string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string imgName= "Test.jpg";
string filename = Path.Combine(path, imgName);
System.IO.File.WriteAllBytes(filename, binData);
/***********************************************************/
using (Doc theDoc = new Doc())
{
// Using explicit path
theDoc.AddImageFile(@"C:\Users\User\Documents\Test.jpg", 1);
// Using variable
//theDoc.AddImageFile(filename, 1);
// What I really want
//theDoc.AddImageFile(binData , 1);
theDoc.Page = theDoc.AddPage();
theDoc.AddText("Thanks");
Response.Headers.Clear();
Response.Headers.Add("content-disposition", "attachment; filename=test.pdf");
return new FileStreamResult(theDoc.GetStream(), "application/pdf");
}
}