我有一个实用程序,可以使用 PDFSharp 库将批量 TIFF 图像转换为 PDF。以下代码执行实际转换。当我在 Acrobat Reader 中打开生成的 PDF 文件时,我收到一条错误消息,指出某些文件显示“图像数据不足”。其他都很好。
这可能是什么原因造成的?我在代码中遗漏了什么可以防止这种情况发生吗?
Public Shared Function ConvertImageToPDF(ByVal img As Image) As Byte()
Using ms As New MemoryStream()
Using pdf As New PdfDocument()
Dim pageCount = GetPageCount(img)
For index = 0 To (pageCount - 1)
Dim page = New PdfPage()
Using sourceImage = GetPage(img, index)
Using pageImage = XImage.FromGdiPlusImage(sourceImage)
page.Width = pageImage.PointWidth
page.Height = pageImage.PointHeight
pdf.Pages.Add(page)
Using xgr = XGraphics.FromPdfPage(pdf.Pages(index))
xgr.DrawImage(pageImage, 0, 0)
End Using
End Using
End Using
Next
pdf.Save(ms, False)
pdf.Close()
End Using
Return ms.ToArray()
End Using
End Function
Public Shared Function GetPageCount(ByVal img As Image) As Integer
If (img Is Nothing) Then
Return -1
End If
Return img.GetFrameCount(FrameDimension.Page)
End Function
Public Shared Function GetPage(ByVal img As Image, ByVal pageNumber As Integer) As Image
img.SelectActiveFrame(FrameDimension.Page, pageNumber)
Dim ms = New MemoryStream()
img.Save(ms, ImageFormat.Tiff)
Return Image.FromStream(ms)
End Function
更新:
如果我在相同的 TIFF 文件上运行相同的代码,那么之前损坏的 PDF 文件现在正常,而之前正常的 PDF 文件现在损坏了。
更新 2:
在查看此连接问题 ( https://connect.microsoft.com/VisualStudio/feedback/details/584681/system-drawing-image-flags-has-different-value-in-vista-and-windows-7 ) 和对此 MSDN 页面 ( http://msdn.microsoft.com/en-us/library/system.drawing.image.save.aspx ) 的社区评论,看来该问题与 Windows 7 中的操作系统级错误有关。任何人都可以确认这一点或提供解决方法吗?