Проблема заключается в том, что @ usr2564301 упоминается в комментарии: вы импортируете страницу в новый документ (в виде формы XObject), но не помещаете этот XObject ни на одну страницу нового документа.
В Поместите его туда, просто расширьте ваше предложение if
следующим образом:
If cb.Length > 150 Then
page = writer.GetImportedPage(reader, i)
writer.DirectContentUnder.AddTemplate(page, 0, 0)
document.NewPage()
End If
У этого решения есть некоторые недостатки: страница импортируется как форма Xobject, и этот XObject вставляется на текущую страницу в целевой документ. Но если размеры страницы различаются (А4 здесь, ПИСЬМО там или портрет здесь, пейзаж там), части страницы, скорее всего, будут потеряны. Кроме того, импорт страницы в виде XObject в PdfWriter
копирует только обычное содержимое страницы, но не аннотации (например, поля формы) и аналогичные дополнительные материалы .
Вместо , вы должны использовать PdfCopy
для этого:
Dim reader As PdfReader = New PdfReader(strSourceFile)
Dim raf As RandomAccessFileOrArray = New RandomAccessFileOrArray(strSourceFile)
Dim document As Document = New Document(reader.GetPageSizeWithRotation(1))
Dim copy As PdfCopy = New PdfCopy(document, New FileStream(strDestFile, FileMode.Create))
document.Open()
Dim page As PdfImportedPage = Nothing
Dim cb As Byte()
For i As Integer = 1 To reader.NumberOfPages()
cb = reader.GetPageContent(i, raf)
If cb.Length > 150 Then
page = copy.GetImportedPage(reader, i)
copy.AddPage(page)
End If
Next
document.Close()
raf.Close()
reader.Close()
Это копирует полные страницы, как они есть.