我正在尝试使用特定坐标(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 文件,只存储我感兴趣的文件的确切部分?