Увеличение размера страницы в PDF-документах, чтобы соответствовать штрих-код (itextsharp)

Я использую vb.net чтобы построить рабочий процесс, где я обрабатываю ряд PDF-файлов. Одна из вещей, которые мне нужно сделать, это разместить штрих-код в левом нижнем углу первой страницы на каждом PDF-документе.

Я уже разработал код для размещения штрих-кода, но проблема в том, что он может охватывать существующее содержимое на первой странице.

Я хочу увеличить размер страницы и добавить около 40 пикселей белого пространства в нижней части первой страницы, где я могу разместить штрих-код. Но я не знаю, как это сделать!

Вот существующий код:

Public Sub addBarcodeToPdf(byval openPDFpath as string, byval savePDFpath as string, ByVal barcode As String)

    Dim myPdf As PdfReader

    Try
        myPdf = New PdfReader(openPDFpath)
    Catch ex As Exception
        logEvent("LOAD PDF EXCEPTION " & ex.Message)
    End Try

    Dim stamper As PdfStamper = New PdfStamper(myPDF, New FileStream(savePDFpath, FileMode.Create))

    Dim over As PdfContentByte = stamper.GetOverContent(1)

    Dim textFont As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED)
    Dim BarcodeFont As BaseFont = BaseFont.CreateFont("c:windowsfontsFRE3OF9X.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED)

    over.SetColorFill(BaseColor.BLACK)
    over.BeginText()
    over.SetFontAndSize(textFont, 15)
    over.SetTextMatrix(30, 3)
    over.ShowText(barcode)
    over.EndText()

    over.BeginText()
    over.SetFontAndSize(BarcodeFont, 28)
    over.SetTextMatrix(5, 16)
    over.ShowText("*" & barcode & "*")
    over.EndText()

    stamper.Close()
    myPdf.Close()
End Sub

Заранее спасибо!

1 ответ

  1. Спасибо, Бруно, что указал мне правильное направление. Я еще не сделал тестирование тома, но мне удалось получить его работу на одном образце PDF. Просто изменить mediabox было недостаточно (я мог только сделать размер страницы меньше), но при изменении cropbox в том же thime я получил результаты, которые я искал.

    Код в VB ниже Для справки

        Dim myPdf As PdfReader
    
        Try
            myPdf = New PdfReader(openPDFpath)
        Catch ex As Exception
            logEvent("LOAD PDF EXCEPTION " & ex.Message)
        End Try
    
        Dim stamper As PdfStamper = New PdfStamper(myPdf, New FileStream(savePDFpath, FileMode.Create))
    
        Dim pageDict As PdfDictionary = myPdf.GetPageN(1)
        Dim mediabox As PdfArray = pageDict.GetAsArray(PdfName.MEDIABOX)
        Dim cropbox As PdfArray = pageDict.GetAsArray(PdfName.CROPBOX)
    
        Dim pixelsToAdd As Integer = -40
    
        mediabox.Set(1, New PdfNumber(pixelsToAdd))
        cropbox.Set(1, New PdfNumber(pixelsToAdd))
    
        stamper.Close()
        myPdf.Close()
    

    Спасибо