如何真正裁剪PDF文件?

时间:2013-08-27 08:20:03

标签: .net pdf itextsharp coordinates crop

我正在尝试使用特定坐标(x,y,w,h)提取并保存PDF文件的某个部分。我使用以下代码,似乎工作正常:

Function CroppedPdf(Source As Byte(), PageNumber As Integer,
        Rect As System.Drawing.Rectangle) As MemoryStream
    Dim reader As New PdfReader(Source)
    Dim h = reader.GetPageSize(1).Height
    Dim document = New iTextSharp.text.Document(New iTextSharp.text.Rectangle(
            Rect.Right / 300 * 72, h - (Rect.Top / 300 * 72), Rect.Left / 300 * 72,
            h - (Rect.Bottom / 300 * 72)))
    document.SetMargins(0, 0, 0, 0)
    Dim destination = New MemoryStream
    Dim writer = PdfWriter.GetInstance(document, destination)
    document.Open()
    Dim cb = writer.DirectContent
    document.NewPage()
    Dim page = writer.GetImportedPage(reader, 1)
    cb.AddTemplate(page, 0, 0)
    document.Close()
    Return destination
End Function

问题是生成的pdf仅看似裁剪。当我尝试在其上运行文本提取时,我会找回整个原始源文档的文本。此外,当分割10个页面时,同一文档实际存储10次,仅在视口中存在差异。如何真正裁剪PDF文件,只存储我感兴趣的文件的确切部分?

0 个答案:

没有答案