' ' PDFNet Copyright (c) 2001-2008 by PDFTron Systems Inc. All Rights Reserved. ' Imports System Imports pdftron Imports pdftron.Common Imports pdftron.Filters Imports pdftron.SDF Imports pdftron.PDF Module Module1 ' This sample illustrates basic in-place text editing. Sub Main() PDFNet.Initialize() PDFNet.SetResourcesPath("../../../../resources") ' Relative path to the folder containing test files. Dim input_path As String = "../../../TestFiles/" Dim output_path As String = "../../../TestFiles/Output/" Try Console.WriteLine("-------------------------------------------------") ' Open the test file Console.WriteLine("Opening the input file...") Dim doc As PDFDoc = New PDFDoc(input_path + "newsletter.pdf") doc.InitSecurityHandler() Dim num_pages As Integer = doc.GetPageCount() Dim writer As ElementWriter = New ElementWriter Dim reader As ElementReader = New ElementReader Dim element As Element Dim i As Integer For i = 1 To num_pages Step 1 Dim page As Page = doc.GetPage(1) ' Get the first page reader.Begin(page) Dim new_page As Page = doc.PageCreate() doc.PagePushBack(new_page) writer.Begin(new_page) element = reader.Next() While (Not IsNothing(element)) ' Read page contents If element.GetType() = element.Type.e_text Then ' Set all text to blue color. Dim gs As GState = element.GetGState() gs.SetFillColorSpace(ColorSpace.CreateDeviceRGB()) gs.SetFillColor(New ColorPt(0, 0, 1)) Dim text_arr() As Byte = element.GetTextData() Dim size As Integer = text_arr.Length Dim text_arr_new(size - 1) As Byte Dim n As Integer Dim bUnicode As Boolean = False If (text_arr.Length > 2) Then If (text_arr(0) = 254) And (text_arr(1) = 255) Then bUnicode = True For n = 0 To size - 1 text_arr_new(n) = text_arr(n) Next End If End If If Not bUnicode Then For n = 0 To size - 1 text_arr_new(n) = text_arr(n) ' Replace 'c' with 'k' and 'k' with 'c'. Select Case text_arr(n) Case 99 : text_arr_new(n) = 107 Case 107 : text_arr_new(n) = 99 End Select Next End If element.SetTextData(text_arr_new, text_arr_new.Length) writer.WriteElement(element) ElseIf element.GetType() = element.Type.e_image Then ' remove all images if any Else writer.WriteElement(element) End If element = reader.Next() End While writer.End() reader.End() new_page.SetMediaBox(page.GetCropBox()) doc.PageRemove(doc.GetPageIterator(1)) ' Remove the old page Next i doc.Save(output_path + "newsletter_ed.pdf", PDFTRON.SDF.SDFDoc.SaveOptions.e_remove_unused) doc.Close() Console.WriteLine("Done. Result saved in newsletter_ed...") Catch ex As PDFNetException Console.WriteLine(ex.Message) Catch ex As Exception MsgBox(ex.Message) End Try PDFNet.Terminate() End Sub End Module