Link to home
Create AccountLog in
C#

C#

--

Questions

--

Followers

Top Experts

Avatar of mrwhipple
mrwhipple

C# and Adobe SDK Watermark
I have Adobe 7.0 SDK.  And I am trying to add a watermark to a pdf.  There is an example in VB that comes with the SDK, but I'm not very good at VB. I have tried to convert the VB code to C#, but some of the function do not seem to be available in C#.  

Here is the original Adobe sample code

Public Sub Main()

        ' Create a PDDoc IAC object.
        Dim pdDoc As Acrobat.CAcroPDDoc
        pdDoc = CreateObject("AcroExch.PDDoc")
        If pdDoc Is Nothing Then
            MsgBox("Failed to create Acrobat PDDoc object.")
            End
        End If

        ' Open the source PDF document
        Dim rc As Integer
        rc = pdDoc.Open(SamplePDFFilePath)
        If rc <> -1 Then
            MsgBox("Failed to open PDF document " & SamplePDFFilePath)
            End
        End If

        ' Acquire the Acrobat JavaScript Object interface from the PDDoc object
        jsObj = pdDoc.GetJSObject

        ' Add a watermark from a file.
        ' function prototype:
        '   addWatermarkFromFile(cDIPath, nSourcePage, nStart, nEnd, bOnTop, bOnScreen, bOnPrint, nHorizAlign, nVertAlign, nHorizValue, nVertValue, bPercentage, nScale, bFixedPrint, nRotation, nOpacity)
        jsObj.addWatermarkFromFile(SampleImageFilePath, 0, 0, 0, True, True, True, 0, 3, 10, -10, False, 0.4, False, 0, 0.7)

        ' get current time and make a string from it
        Dim currentTime As String
        currentTime = Now.ToString

        ' make a color object
        Dim oColor As Object
        oColor = jsObj.color.blue()

        ' Add a text watermark.
        ' function prototype:
        '   addWatermarkFromText(cText, nTextAlign, cFont, nFontSize, oColor, nStart, nEnd, bOnTop, bOnScreen, bOnPrint, nHorizAlign, nVertAlign, nHorizValue, nVertValue, bPercentage, nScale, bFixedPrint, nRotation, nOpacity)
        jsObj.addWatermarkFromText(currentTime, 1, "Helvetica", 10, oColor, 0, 0, True, True, True, 0, 3, 20, -45, False, 1.0, False, 0, 0.7)

        ' save the PDF with watermarks to a new document.
        rc = pdDoc.Save(1, OutputFilePath)  ' full save

        ' close original PDF.
        pdDoc.Close()
        pdDoc = Nothing
        jsObj = Nothing

        ' to clean up, get the Acrobat application,  
        ' close Acrobat if there are no open documents.
        Dim gApp As Acrobat.CAcroApp
        gApp = CreateObject("AcroExch.App")
        If gApp.GetNumAVDocs = 0 Then
            gApp.CloseAllDocs()
            gApp.Exit()
        End If

        ' show message. You can comment it out if you really need a quiet operation.
        If rc = True Then
            MsgBox("PDF with the watermark was saved to " & OutputFilePath)
        Else
            MsgBox("Operation was failed.")
        End If

    End Sub



When I try and run the code in VB it blows up right way on (pdDoc = CreateObject("AcroExch.PDDoc")).  In my converted C# code I do not have the addWatermarkFromFile function from the Adobe Javascript object.
Looking at the SDK help files I don't understand how I can access all the watermark functions they speak of.


What am I missing or doing wrong?   I think I am making this more difficult then it really is.


Thanks,

Zero AI Policy

We believe in human intelligence. Our moderation policy strictly prohibits the use of LLM content in our Q&A threads.


Avatar of Bob LearnedBob Learned🇺🇸

You might be squeezing the Charmin :)

What is the error on CreateObject?  ActiveX cannot create object?

Bob

Avatar of mrwhipplemrwhipple

ASKER

When running VB, I can now get past the CreateObject error, now the program blows up on the open (rc = pdDoc.Open(SamplePDFFilePath)).

 

Avatar of Bob LearnedBob Learned🇺🇸

What is the specific error text?

Bob

Reward 1Reward 2Reward 3Reward 4Reward 5Reward 6

EARN REWARDS FOR ASKING, ANSWERING, AND MORE.

Earn free swag for participating on the platform.


An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in WatermarkJsoVB.exe

Additional information: The server threw an exception.

 Is the full error I get.

I have finally got the sample code to work from Adobe.  

But I still unable to see how to convert the following VB code to C#

       jsObj = pdDoc.GetJSObject

        ' Add a watermark from a file.
        ' function prototype:
        '   addWatermarkFromFile(cDIPath, nSourcePage, nStart, nEnd, bOnTop, bOnScreen, bOnPrint, nHorizAlign, nVertAlign, nHorizValue,
        'tValue, bPercentage, nScale, bFixedPrint, nRotation, nOpacity)
        jsObj.addWatermarkFromFile(SampleImageFilePath, 0, 0, 0, True, True, True, 0, 3, 10, -10, False, 0.4, False, 0, 0.7)

when I do

      Acrobat.CAcroPDDoc pdDoc;
            CAcroAVDoc avDoc;
      avDoc = new AcroAVDocClass();
      avDoc.Open (szPdfPathConst, "");
                  
      //set the pdDoc object and get some data
      pdDoc  = (CAcroPDDoc)avDoc.GetPDDoc ();
      object jsObj = pdDoc.GetJSObject();



the jsObj does not have a addWatermarkFromFile functions?  

So can I assume that I can only access that through VB?

If all else fails I guess I will modify the VB sample program to fit my needs and convert it to a dll to be called from my C# program.

Thanks,



I made a VB dll that I call from my C# application to make my watermark.  Not the way I prefer it, but it seems Adobe SDK is not friendly with C#.


Free T-shirt

Get a FREE t-shirt when you ask your first question.

We believe in human intelligence. Our moderation policy strictly prohibits the use of LLM content in our Q&A threads.


ASKER CERTIFIED SOLUTION
Avatar of GhostModGhostMod🇺🇸

Link to home
membership
Log in or create a free account to see answer.
Signing up is free and takes 30 seconds. No credit card required.
Create Account
C#

C#

--

Questions

--

Followers

Top Experts

C# is an object-oriented programming language created in conjunction with Microsoft’s .NET framework. Compilation is usually done into the Microsoft Intermediate Language (MSIL), which is then JIT-compiled to native code (and cached) during execution in the Common Language Runtime (CLR).