我有一个向用户显示图像的网页。该显示旨在确认用户已上传正确的文档。由于安全要求,我决定将图像嵌入到 html 中(这允许所有图像具有相同的 URL)。我的应用程序允许使用几种不同类型的文件,但我的问题是 pdf 文件。
我正在使用 Ghostscript.NET 和 Ghostscript 来阅读我的 pdf 文件并将它们转换为图像,以便我可以嵌入它们。我的 Ghostscript 实现正在读取文件,但我只能显示第一页。我的问题:如何在一页或多页上显示整个 pdf?
我试过了:
do
{
img = _rasterizer.GetPage(desired_x_dpi, desired_y_dpi, pageNumber);
img.Save(ms, ImageFormat.Png);
imageBytes = ms.ToArray();
returnString += Convert.ToBase64String(imageBytes);
pageNumber++;
} while (pageNumber <= _rasterizer.PageCount);
_rasterizer.Close();
ms.Close();
return returnString;
上述实现会生成一个非常大的字符串,但是网页上会显示“损坏的图像”图标。
do
{
img = _rasterizer.GetPage(desired_x_dpi, desired_y_dpi, pageNumber);
img.Save(ms, ImageFormat.Png);
imageBytes = ms.ToArray();
Session["NextPage"] = Convert.ToBase64String(imageBytes);
if (pageNumber > 1)
{
Response.Write("<script>");
Response.Write("window.open('ImageDisplayMultiPage.aspx')");
Response.Write("<" + "/script>");
}
else
{
Image3.ImageUrl = "data:image/png;base64," + Session["NextPage"];
}
pageNumber++;
} while (pageNumber <= _rasterizer.PageCount);
_rasterizer.Close();
ms.Close();
此实现成功打开与文档中的页面数量相等的窗口,但在除一个网页之外的所有网页上显示 pdf 的第一页。其余网页显示“损坏的图像”图标。仅供参考,此方法打开的网页使用:
Image3.ImageUrl = "data:image/png;base64," + Session["NextPage"];
写入已正确设置的页面。
同样,目标是将整个 pdf 转换为 base64 字符串。它可以显示在多个页面上,也可以显示在一个页面上。你知道怎么做吗?
上传文件大小限制为 5mb,我猜最大的 pdf 将是 5 页,但这不是问题。