从tiff转换为Pdf时,DPI分辨率会导致问题

时间:2017-03-10 19:43:40

标签: .net pdfsharp

我有将.tif转换为.pdf的问题。基本上对于水平和垂直DPI均为96的每个文档,转换仅捕获文档的左上角 - 它非常拉伸。但是,如果文档的DPI 204为水平,196为Vertical,则表示正确显示。这是我需要在我的代码(下面)中解决的问题,还是我需要更新文档的每个页面的DPI分辨率(我必须以编程方式进行),以便在将其转换为dpi之前dpi为204和96 PDF。

    Dim destination As String = FileName & "pdf"

    Dim MyImage As Image = Image.FromFile(FileName & "tif")

    Dim doc As New PdfDocument()

    For PageIndex As Integer = 0 To MyImage.GetFrameCount(FrameDimension.Page) - 1
        MyImage.SelectActiveFrame(FrameDimension.Page, PageIndex)

        Dim img As XImage = XImage.FromGdiPlusImage(MyImage)
        Dim page = New PdfPage()

        If img.PixelWidth > img.PixelHeight Then
            page.Orientation = PageOrientation.Landscape
        Else
            page.Orientation = PageOrientation.Portrait
        End If
        doc.Pages.Add(page)

        Dim xgr As XGraphics = XGraphics.FromPdfPage(doc.Pages(PageIndex))

        xgr.DrawImage(img, 0, 0)
    Next
    doc.Save(destination)
    doc.Close()
    MyImage.Dispose()

1 个答案:

答案 0 :(得分:2)

PDF页面没有任何DPI(矢量格式)。

使用Windows,对于没有可用DPI信息的图像,通常会获得96 DPI。 如果使用200 DPI扫描图像,但Windows报告96 DPI,则PDF中的图像将具有双倍大小,您将只看到扫描图像的四分之一(假设您将扫描的A4页面绘制到新的A4页面上)。
204/196 DPI听起来像传真格式,所以我假设我们正在谈论扫描页面。

Hans Passant已经为您提供了解决方案:在调用DrawImage时指定目标矩形,您可以让所有图像都填满整个页面。