Skip to content

PDF Adding Watermark Tool Guide

Note:Before learning how to use different functions, we recommend that read the Request Workflow to know a basic PDF processing process. When using different functions, you can set their own special parameters when uploading files. Other basic steps are consistent.

PDF Add Watermark:

java
{
    "type": "text",
    "scale": "1",
    "opacity": "0.5",
    "rotation": "0.785",
    "targetPages": "1-2",
    "vertalign": "center",
    "horizalign": "left",
    "xoffset": "100",
    "yoffset": "100",
    "content": "test",
    "textColor": "#59c5bb",
    "front": "",
    "fullScreen": "111",
    "horizontalSpace": "10",
    "verticalSpace": "10",
    "extension": ""
}
ParameterDescription
typeWatermark type (text: text type watermark, image: image type watermark)
scaleZoom (image type attribute)
opacityTransparency:0~1
rotationRotation angle, a positive number means counterclockwise rotation
targetPagesPage number, page number starts from 1, for example:1,2,4,6,9-11
vertalignVertical alignment(top、center、bottom)
horizalignHorizontal alignment(left、center、right)
xoffsetHorizontal offset
yoffsetVertical offset
contentText
textColorText color, for example:#FFFFFF
frontPresent on the front
fullScreenWhether to fill the entire page
horizontalSpaceHorizontal spacing (supported only if --fullscreen exists) default value 50
verticalSpaceVertical spacing (supported only if --fullscreen exists) default value 50
extensionExtended information, base64 encoding

Request Example:

Replace apiKey with the publicKey obtained from the dashboard, file with the file you want to convert, and language with your preferred interface error prompt language type.

curl
curl --location --request POST 'https://api-server.compdf.com/server/v2/process/pdf/addWatermark' \
--header 'x-api-key: apiKey' \
--header 'Accept: */*' \
--header 'Connection: keep-alive' \
--header 'Content-Type: multipart/form-data' \
--form 'file=@"file"' \
--form 'password="" \
--form 'parameter="{    \"type\": \"image\",    \"scale\": \"1\",   \"opacity\":\"0.5\",    \"rotation\":\"0.785\",   \"targetPages\":\"1-5\",   \"vertalign\":\"center\",   \"horizalign\":\"left\",   \"xoffset\":\"100\",   \"yoffset\":\"100\",   \"front\":\"\",    \"fullScreen\":\"111\",   \"horizontalSpace\":\"10\",   \"verticalSpace\":\"10\",   \"extension\":\"\"}"' \
--form 'language="1"'
java
import java.io.*;
import okhttp3.*;
public class main {
  public static void main(String []args) throws IOException{
    OkHttpClient client = new OkHttpClient().newBuilder()
      .build();
    MediaType mediaType = MediaType.parse("text/plain");
    RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
      .addFormDataPart("file","{{file}}",
 RequestBody.create(MediaType.parse("application/octet-stream"),
                                          new File("<file>")))
      .addFormDataPart("language","{{language}}")
      .addFormDataPart("password","")
      .addFormDataPart("parameter","{    \"type\": \"image\",    \"scale\": \"1\",   \"opacity\":\"0.5\",    \"rotation\":\"0.785\",   \"targetPages\":\"1-5\",   \"vertalign\":\"center\",   \"horizalign\":\"left\",   \"xoffset\":\"100\",   \"yoffset\":\"100\",   \"front\":\"\",    \"fullScreen\":\"111\",   \"horizontalSpace\":\"10\",   \"verticalSpace\":\"10\",   \"extension\":\"\"}")
      .addFormDataPart("image","",
                       RequestBody.create(MediaType.parse("application/octet-stream"),
                                          new File("")))
      .build();
    Request request = new Request.Builder()
      .url("https://api-server.compdf.com/server/v2/process/pdf/addWatermark")
      .method("POST", body)
      .addHeader("x-api-key", "{{apiKey}}")
      .build();
    Response response = client.newCall(request).execute();
  }
}

Response Information:

A successful request returns an HTTP 200 OK status code and a JSON response body showing the order details.

Response type:application/json

Response ParameterData TypeDescription
codeStringHTTP request status, "200" indicates success
messageStringRequest message
dataObjectReturn result
+taskIdStringTask ID
+taskFileNumintNumber of files processed in the task
+taskSuccessNumintNumber of files successfully processed in the task
+taskFailNumintNumber of files failed in the task
+taskStatusStringTask status
+assetTypeIdintUsed asset type ID
+taskCostintTask cost
+taskTimeintTask duration
+sourceTypeStringOriginal format
+targetTypeStringTarget format
+fileInfoDTOListArrayTask file information
++fileKeyStringFile key
++taskIdStringTask ID
++fileNameStringOriginal file name
++downFileNameStringDownload file name
++fileUrlStringOriginal file URL
++downloadUrlStringProcessed result file download URL
++sourceTypeStringOriginal format
++targetTypeStringTarget format
++fileSizeintFile size
++convertSizeintProcessed result file size
++convertTimeintProcessing time
++statusStringFile processing status
++failureCodeStringFile processing failure error code
++failureReasonStringFile processing failure description
++fileParameterStringProcessing parameter

Response Example:

json
"code": "200",
"msg": "success",
"data": {
    "taskId": "f416dbcf-0c10-4f93-ab9e-a835c1f5dba1",
    "taskFileNum": 1,
    "taskSuccessNum": 1,
    "taskFailNum": 0,
    "taskStatus": "<taskStatus>",
    "assetTypeId": 0,
    "taskCost": 1,
    "taskTime": 1,
    "sourceType": "<sourceType>",
    "targetType": "<targetType>",
    "fileInfoDTOList": [
      {
        "fileKey": "<fileKey>",
        "taskId": "<taskId>",
        "fileName": "<fileName>",
        "downFileName": "<downFileName>",
        "fileUrl": "<fileUrl>",
        "downloadUrl": "<downloadUrl>",
        "sourceType": "<sourceType>",
        "targetType": "<targetType>",
        "fileSize": 24475,
        "convertSize": 6922,
        "convertTime": 8,
        "status": "<status>",
        "failureCode": "",
        "failureReason": "",
        "fileParameter": "<fileParameter>"
      }
    ]
}

Result:

File TypeDescription
.pdfThe PDF file after add watermarks

Asynchronous Request

If you need to use the file asynchronous processing flow, please read the Asynchronous Request Instructions.