我想将pdf页面转换为png格式。我知道我的代码不正确,但是我找不到该怎么办。另外,我只想使用iTextSharp。
以下是源代码:
public void PDFDisplay(string DosyaAdi, int PerNr, int ID, int FileId, string message)
{
string filepath = Server.MapPath(@"~/Content/Egitim/Files/") + DosyaAdi;
PdfReader pdfReader = new PdfReader(filepath);
int numberOfPages = pdfReader.NumberOfPages;
string path = Server.MapPath(@"~/Content/Egitim/Slides/" + DosyaAdi + "/");
Directory.CreateDirectory(path);
System.Drawing.Image[] image1 = new System.Drawing.Image[numberOfPages];
for (int i = 1; i < numberOfPages; i++)
{
byte[] pdfPage = pdfReader.GetPageContent(i);
using (MemoryStream ms = new MemoryStream(pdfPage))
{
image1[i] = System.Drawing.Image.FromStream(ms);//error occurs here. Invalid parameter (ms)
}
image1[i].Save(path, System.Drawing.Imaging.ImageFormat.Png);
}
任何想法都会感激,谢谢。
答案 0 :(得分:1)
您假设iText可以将PDF语法(矢量数据)转换为图像(光栅图像)。这个假设是错误的。 iText不会将PDF转换为图像!
您正在使用GetPageContent()
方法。此方法获取页面的内容流。该内容流由可更改图形状态和文本状态并定义在页面上绘制内容的运算符和操作数组成。
但是,此页面流远远不足以绘制页面,因为每个页面还引用了大量资源:
/Annots
条目是指特定页面上的注释。/Fonts
条目的条目。简而言之:您的代码无法正常工作是正常的。您的问题“如何在c#中将PDF转换为图像?”的答案。是:不适用于iText!
如果您将问题更改为:我可以改用哪种工具,那么您的问题就不合时宜了,因为Stack Overflow FAQ明确指出您无法发布问题,以寻求有关工具库的建议。 ..