Spire.PDF is a professional PDF library applied to creating, writing, editing, handling and reading PDF files without any external dependencies. Get free and professional technical support for Spire.PDF for .NET, Java, Android, C++, Python.

Mon Jun 13, 2022 6:41 am

Can you help with the VB.NET Version for wrap text? here is my code example.

page.Canvas.DrawString("ENG/FR/039/15", font_title, brush, 160, 600, PdfTextAlignment.Right)
Dim doc As New PdfDocument()
Dim page As PdfPageBase = doc.Pages.Add()
doc.PageSettings.Orientation = PdfPageOrientation.Landscape
doc.PageSettings.Size = New Size(280, 205)

page.Canvas.DrawImage(pdfImage, position)
page.Canvas.DrawString("PTMI AESTHETIC SAMPLE (APPROVED)", font_header, brush, 45, 610, PdfTextAlignment.Center)
page.Canvas.DrawString("SN :" & " " & sno & " Rev :" & " " & rev, font_title, brush, 0, 640, leftAlignment)
page.Canvas.DrawString("Date :" & " " & pdt, font_title, brush, 0, 650, leftAlignment)
page.Canvas.DrawString("Toy :" & " " & toy, font_title, brush, 0, 660, leftAlignment)
page.Canvas.DrawString("Part :" & " " & prt, font_title, brush, 0, 670, leftAlignment)
page.Canvas.DrawString("Desc :" & " " & dsc, font_title, brush, 0, 680, leftAlignment)
page.Canvas.DrawString("Remark :" & " " & rmk, font_title, brush, 0, 690, leftAlignment)
page.Canvas.DrawImage(pdfImagedc, positiondc)
page.Canvas.DrawString("Initiator :" & " " & intr, font_title, brush, 0, 740, leftAlignment)
page.Canvas.DrawString("Approver :" & " " & Session("ath"), font_title, brush, 0, 750, leftAlignment)

thanks a lot.

ariputraananda
 
Posts: 4
Joined: Thu Jun 02, 2022 1:02 am

Mon Jun 13, 2022 8:36 am

Hello,

Thanks for your inquiry.

Which of the pictures below is your desired result?
case1.png

case2.png

If they are neither, could you please provide some more detailed description of your needs. Thanks in advance for your assistance.
Sincerely,
Andy
E-iceblue support team
User avatar

Andy.Zhou
 
Posts: 483
Joined: Mon Mar 29, 2021 3:03 am

Mon Jun 13, 2022 9:39 am

i think case 2 is the best i need, thanks in advance.

ariputraananda
 
Posts: 4
Joined: Thu Jun 02, 2022 1:02 am

Tue Jun 14, 2022 7:02 am

Hi,

Here is the sample code for you. Please refer to it.

Code: Select all
    Function drawString(page As PdfPageBase, item As String, value As String, y As Integer)

        Dim textLayouter As New PdfStringLayouter()
        Dim y1 = y
        Dim y2 = y
        Dim font = New Font("Arial", 8.0F, FontStyle.Regular)
        Dim pdfFont = New PdfTrueTypeFont(font)

        Dim leftAlignment = New PdfStringFormat()
        leftAlignment.Alignment = PdfTextAlignment.Left
        Dim rightAlignment = New PdfStringFormat()
        rightAlignment.Alignment = PdfTextAlignment.Right
        Dim result1 As PdfStringLayoutResult = textLayouter.Layout(item, pdfFont, rightAlignment, New SizeF(40, 100))
        For Each line As LineInfo In result1.Lines
            page.Canvas.DrawString(line.Text, pdfFont, PdfBrushes.Red, 40, y1, rightAlignment)
            y1 = y1 + result1.LineHeight + 2
        Next line


        Dim result2 As PdfStringLayoutResult = textLayouter.Layout(value, pdfFont, leftAlignment, New SizeF(200, 1000))
        For Each line As LineInfo In result2.Lines
            page.Canvas.DrawString(line.Text, pdfFont, PdfBrushes.Red, 45, y2, leftAlignment)
            y2 = y2 + result1.LineHeight + 2
        Next line

        'return the max value of y1 and y2 for next drawing
        Dim max As Integer
        If (y1 > y2) Then
            max = y1
        Else
            max = y2
        End If

        Return max
    End Function
    Sub Main()
        Dim doc As New PdfDocument()
        Dim page As PdfPageBase = doc.Pages.Add(New SizeF(280, 205), New PdfMargins(0))
        doc.PageSettings.Orientation = PdfPageOrientation.Landscape
        'doc.PageSettings.Size = New Size(280, 205)

        Dim leftAlignment = New PdfStringFormat()
        leftAlignment.Alignment = PdfTextAlignment.Left
        Dim centerAlignment = New PdfStringFormat()
        centerAlignment.Alignment = PdfTextAlignment.Center

        Dim font_title = New PdfTrueTypeFont(New Font("Arial", 6.0F, FontStyle.Regular))
        'Dim font_header = New PdfTrueTypeFont(New Font("Arial", 9.0F, FontStyle.Bold))
        Dim map = New Dictionary(Of String, String)
        Dim value = {"SNODASDSAGFGFDGFHGJGJKHJSADSADASDKJGHJHJGH", "PDTASDASDSAFGHFGHFGHFGDASDSADSASDASDSADSADADDASDGFGFGFG", "TOYASDASDHSADSADSAFGHFSDASDASDASDSADASD",
            "PRTSADSDSADSADSADASDSDFDGFDFGDFGFDGFFDGFDGFDGDFGADCSADASD", "ABCasdsadasdasdsadasdsadFDGDFGDFGFDGDFGDFGFDsadsad",
            "ASDASNIDNASIDNSAIDNSAIDNAISNDISANDIASDASASMDASDMASODMSOAMDOASDIASNDINSADINASIDNASIDNSANDIASDASMDO"}
        Dim item = {"SN :", "Date :", "Toy :", "Part :", "Desc :", "Remark :"}
        For i As Integer = 0 To item.Length - 1
            map.Add(item(i), value(i))
        Next
        Dim y = 10
        For Each key As String In map.Keys
            Dim v = map.Item(key)
            y = drawString(page, key, v, y)
        Next key
        doc.SaveToFile("output.pdf", FileFormat.PDF)
        System.Diagnostics.Process.Start("output.pdf")
    End Sub
Sincerely,
Andy
E-iceblue support team
User avatar

Andy.Zhou
 
Posts: 483
Joined: Mon Mar 29, 2021 3:03 am

Sun Jun 19, 2022 6:46 am

thank you for the respond, sorry for the late reply from me, its cool and it's work,but can you help me for implementing based on my pdf design and code?.

here is my code.

best regard from me.

Sub docs_pdf()



Dim doc As New PdfDocument()
Dim page As PdfPageBase = doc.Pages.Add()
doc.PageSettings.Orientation = PdfPageOrientation.Landscape
doc.PageSettings.Size = New Size(280, 205)



Dim image As Image = Image.FromFile(My.Settings.doc_DC_dir)
Dim image_dc As Image = Image.FromFile(My.Settings.doc_DC_dir)


Dim schaleImage As Bitmap = New Bitmap(image)
schaleImage.SetResolution(550.0F, 550.0F)
Dim graphicAS As Graphics = Graphics.FromImage(schaleImage)
graphicAS.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
graphicAS.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
graphicAS.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic


Dim pdfImage As PdfImage = PdfImage.FromImage(schaleImage)
Dim page0 As PdfPageBase = doc.Pages(0)
Dim position As PointF = New PointF(((page.Canvas.ClientSize.Width - schaleImage.Width) _
/ 150), 600)
' Create one page

Dim schaleImageDC As Bitmap = New Bitmap(image_dc)
schaleImageDC.SetResolution(400.0F, 400.0F)
Dim graphicASDC As Graphics = Graphics.FromImage(schaleImageDC)
graphicASDC.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
graphicASDC.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
graphicASDC.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
Dim pdfImagedc As PdfImage = PdfImage.FromImage(schaleImageDC)
Dim page0dc As PdfPageBase = doc.Pages(0)
Dim positiondc As PointF = New PointF(((page.Canvas.ClientSize.Width - schaleImageDC.Width) _
/ 1.1), 725)

Dim font As System.Drawing.Font = New System.Drawing.Font("Calibri", 10.0F, FontStyle.Bold)


Dim font_header As New PdfTrueTypeFont(font, True)
Dim font_title As New PdfTrueTypeFont(font, True)

Dim brush As New PdfSolidBrush(Color.Black)


Dim leftAlignment As New PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle)

page.Canvas.DrawString("ENG/FR/039/15", font_title, brush, 160, 600, PdfTextAlignment.Right)
page.Canvas.DrawImage(pdfImage, position)
page.Canvas.DrawString("IMTP AESTHETIC SAMPLE (APPROVED)", font_header, brush, 45, 610, PdfTextAlignment.Center)
page.Canvas.DrawString("SN :" & " " & sno & " Rev :" & " " & rev, font_title, brush, 0, 640, leftAlignment)
page.Canvas.DrawString("Date :" & " " & pdt, font_title, brush, 0, 650, leftAlignment)
page.Canvas.DrawString("Toy :" & " " & toy, font_title, brush, 0, 660, leftAlignment)
page.Canvas.DrawString("Part :" & " " & prt, font_title, brush, 0, 670, leftAlignment)
page.Canvas.DrawString("Desc :" & " " & dsc, font_title, brush, 0, 680, leftAlignment)
page.Canvas.DrawString("Remark :" & " " & rmk, font_title, brush, 0, 690, leftAlignment)
page.Canvas.DrawImage(pdfImagedc, positiondc)
page.Canvas.DrawString("Initiator :" & " " & intr, font_title, brush, 0, 740, leftAlignment)
page.Canvas.DrawString("Approver :" & " " & Session("ath"), font_title, brush, 0, 750, leftAlignment)





doc.SaveToFile(My.Settings.pdf_directory)
doc.Close()
'docs_print()

Dim origDoc As New PdfDocument()
origDoc.LoadFromFile(My.Settings.pdf_directory)
Dim destDoc As New PdfDocument()

Dim top As Single = 1
Dim bottom As Single = -40
Dim left As Single = -30
Dim right As Single = 0

For Each pages As PdfPageBase In origDoc.Pages
Dim newPage As PdfPageBase = destDoc.Pages.Add(pages.Size, New PdfMargins(0))
newPage.Canvas.ScaleTransform((pages.ActualSize.Width - left - right) / pages.ActualSize.Width, (pages.ActualSize.Height - top - bottom) / pages.ActualSize.Height)
newPage.Canvas.DrawTemplate(pages.CreateTemplate(), New PointF(left, top))
Next

destDoc.SaveToFile(My.Settings.pdf_directory, FileFormat.PDF)

Dim fp As String
Response.Clear()
fp = My.Settings.pdf_directory
Response.ContentType = "application/pdf"
Response.WriteFile(fp)
Response.End()

End Sub

ariputraananda
 
Posts: 4
Joined: Thu Jun 02, 2022 1:02 am

Mon Jun 20, 2022 2:42 am

Hi,

Please test the modified code below.

Code: Select all
    Function drawString(page As PdfPageBase, item As String, value As String, x As Integer, y As Integer, font As Font)

        Dim textLayouter As New PdfStringLayouter()
        Dim y1 = y
        Dim y2 = y
        Dim pdfFont = New PdfTrueTypeFont(font)

        Dim leftAlignment = New PdfStringFormat()
        leftAlignment.Alignment = PdfTextAlignment.Left
        Dim rightAlignment = New PdfStringFormat()
        rightAlignment.Alignment = PdfTextAlignment.Right
        Dim result1 As PdfStringLayoutResult = textLayouter.Layout(item, pdfFont, rightAlignment, New SizeF(40, 100))
        For Each line As LineInfo In result1.Lines
            page.Canvas.DrawString(line.Text, pdfFont, PdfBrushes.Black, x, y1, rightAlignment)
            y1 = y1 + result1.LineHeight
        Next line


        Dim result2 As PdfStringLayoutResult = textLayouter.Layout(value, pdfFont, leftAlignment, New SizeF(200, 1000))
        For Each line As LineInfo In result2.Lines
            page.Canvas.DrawString(line.Text, pdfFont, PdfBrushes.Black, x + 5, y2, leftAlignment)
            y2 = y2 + result1.LineHeight
        Next line

        'return the max value of y1 and y2 for next drawing
        Dim max As Integer
        If (y1 > y2) Then
            max = y1
        Else
            max = y2
        End If

        Return max
    End Function
    Sub docs_pdf()



        Dim doc As New PdfDocument()
        Dim page As PdfPageBase = doc.Pages.Add()
        doc.PageSettings.Orientation = PdfPageOrientation.Landscape
        doc.PageSettings.Size = New Size(280, 205)



        Dim image As Image = Image.FromFile("Word.png")
        Dim image_dc As Image = Image.FromFile("logo.png")


        Dim schaleImage As Bitmap = New Bitmap(image)
        schaleImage.SetResolution(550.0F, 550.0F)
        Dim graphicAS As Graphics = Graphics.FromImage(schaleImage)
        graphicAS.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
        graphicAS.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
        graphicAS.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic


        Dim pdfImage As PdfImage = PdfImage.FromImage(schaleImage)
        Dim page0 As PdfPageBase = doc.Pages(0)
        Dim position As PointF = New PointF(((page.Canvas.ClientSize.Width - schaleImage.Width) _
/ 150), 600)
        ' Create one page

        Dim schaleImageDC As Bitmap = New Bitmap(image_dc)
        schaleImageDC.SetResolution(400.0F, 400.0F)
        Dim graphicASDC As Graphics = Graphics.FromImage(schaleImageDC)
        graphicASDC.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
        graphicASDC.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
        graphicASDC.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
        Dim pdfImagedc As PdfImage = PdfImage.FromImage(schaleImageDC)
        Dim page0dc As PdfPageBase = doc.Pages(0)
        Dim positiondc As PointF = New PointF(((page.Canvas.ClientSize.Width - schaleImageDC.Width) _
/ 1.1), 725)

        Dim font As System.Drawing.Font = New System.Drawing.Font("Calibri", 10.0F, FontStyle.Bold)


        Dim font_header As New PdfTrueTypeFont(font, True)
        Dim font_title As New PdfTrueTypeFont(font, True)

        Dim brush As New PdfSolidBrush(Color.Black)
        Dim map = New Dictionary(Of String, String)
        Dim value = {"19-Jun-2022", "Hotwheel", "12/A/2001",
            "FULL HEAD", "NEW PART WITH NEW COLORIZM NEW SOMETHING TOO LONG LONG LONG LONG LONG LONG TO BE SHOWN",
            "ARI PUTRA ANANDA", "ARI PUTRA ANANDA"}
        Dim item = {"Date :", "Toy :", "Part :", "Desc :", "Remark :", "Initiator :", "Approver :"}
        For i As Integer = 0 To item.Length - 1
            map.Add(item(i), value(i))
        Next
        Dim sno = "20010913"
        Dim rev = "A"

        Dim leftAlignment As New PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle)

        page.Canvas.DrawString("ENG/FR/039/15", font_title, brush, 160, 600, PdfTextAlignment.Right)
        page.Canvas.DrawImage(pdfImage, position)
        page.Canvas.DrawString("IMTP AESTHETIC SAMPLE (APPROVED)", font_header, brush, 45, 610, PdfTextAlignment.Center)

        Dim y = 640
        Dim x = 40
        Dim tempY1 = drawString(page, "SN :", sno, x, y, font)
        Dim tempY2 = drawString(page, "Rev :", rev, x + 100, y, font)
        If (tempY1 > tempY2) Then
            y = tempY1
        Else
            y = tempY2
        End If
        For Each key As String In map.Keys
            Dim v = map.Item(key)
            y = drawString(page, key, v, x, y, font)
        Next key
        page.Canvas.DrawImage(pdfImagedc, positiondc)

        doc.SaveToFile("output.pdf")
        doc.Close()
        'docs_print()

        Dim origDoc As New PdfDocument()
        origDoc.LoadFromFile("output.pdf")
        Dim destDoc As New PdfDocument()

        Dim top As Single = 1
        Dim bottom As Single = -40
        Dim left As Single = -30
        Dim right As Single = 0

        For Each pages As PdfPageBase In origDoc.Pages
            Dim newPage As PdfPageBase = destDoc.Pages.Add(pages.Size, New PdfMargins(0))
            newPage.Canvas.ScaleTransform((pages.ActualSize.Width - left - right) / pages.ActualSize.Width, (pages.ActualSize.Height - top - bottom) / pages.ActualSize.Height)
            newPage.Canvas.DrawTemplate(pages.CreateTemplate(), New PointF(left, top))
        Next

        destDoc.SaveToFile("output.pdf", FileFormat.PDF)
        System.Diagnostics.Process.Start("output.pdf")
    End Sub
Sincerely,
Andy
E-iceblue support team
User avatar

Andy.Zhou
 
Posts: 483
Joined: Mon Mar 29, 2021 3:03 am

Tue Jun 28, 2022 6:12 am

Thanks a lot its work. :D that a great work lovelly...

ariputraananda
 
Posts: 4
Joined: Thu Jun 02, 2022 1:02 am

Tue Jun 28, 2022 6:57 am

You are welcome!
Have a nice day! :D
Sincerely,
Andy
E-iceblue support team
User avatar

Andy.Zhou
 
Posts: 483
Joined: Mon Mar 29, 2021 3:03 am

Return to Spire.PDF

cron