0

特定の座標 (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 ファイルを本当にトリミングするにはどうすればよいですか?

4

0 に答える 0