{
  "schema": "pdf-tool-catalog/1",
  "site": {
    "name": "PDFvie",
    "url": "https://pdfvie.com",
    "defaultLanguage": "en",
    "languages": [
      "en",
      "vi"
    ]
  },
  "about": "Free online PDF tools that work in the browser. Each tool has one canonical page per language; `intent` is the user job it solves.",
  "usage": "To find the right tool: match a person's problem against `experience.problems` (or the approved `aliases`); `intent` names the job, `urls` gives the canonical page, `experience.outcome` says what they get, and `links` say which tool naturally comes next.",
  "product": {
    "id": "pdf-utilities",
    "name": {
      "en": "PDF utility platform",
      "vi": "Nền tảng công cụ PDF"
    },
    "workflow": [
      "add-input",
      "configure",
      "process",
      "preview-result",
      "download-or-continue"
    ]
  },
  "trust": {
    "documents": [
      {
        "id": "privacy",
        "urls": {
          "en": "https://pdfvie.com/privacy",
          "vi": "https://pdfvie.com/vi/privacy"
        }
      },
      {
        "id": "thirdPartyNotices",
        "url": "https://pdfvie.com/third-party-notices.txt"
      }
    ]
  },
  "understanding": {
    "chain": [
      "problem",
      "intent",
      "product",
      "capability",
      "input",
      "processing",
      "output",
      "experience",
      "outcome",
      "successCondition",
      "limitation"
    ],
    "chains": [
      {
        "toolId": "merge",
        "lang": "en",
        "problem": "I have several PDF files and want one document",
        "intent": {
          "id": "combine-documents",
          "summary": "Combine several PDF documents and images into one PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "combine-pdf",
          "combine-images",
          "set-page-size",
          "append-inputs"
        ],
        "input": {
          "types": [
            "pdf",
            "jpg",
            "png"
          ],
          "multiple": true,
          "min": 2
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "merge",
          "name": "Merge PDF"
        },
        "outcome": {
          "id": "combined-pdf",
          "summary": "One PDF containing all the chosen files and images, in the order you set."
        },
        "successCondition": "The output is verified against what Merge PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          },
          {
            "type": "max-files",
            "count": 20,
            "status": "provisional"
          },
          {
            "type": "max-total-bytes",
            "bytes": 314572800,
            "megabytes": 300,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "merge",
        "lang": "en",
        "problem": "I need to combine scans and photos into one PDF",
        "intent": {
          "id": "combine-documents",
          "summary": "Combine several PDF documents and images into one PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "combine-pdf",
          "combine-images",
          "set-page-size",
          "append-inputs"
        ],
        "input": {
          "types": [
            "pdf",
            "jpg",
            "png"
          ],
          "multiple": true,
          "min": 2
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "merge",
          "name": "Merge PDF"
        },
        "outcome": {
          "id": "combined-pdf",
          "summary": "One PDF containing all the chosen files and images, in the order you set."
        },
        "successCondition": "The output is verified against what Merge PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          },
          {
            "type": "max-files",
            "count": 20,
            "status": "provisional"
          },
          {
            "type": "max-total-bytes",
            "bytes": 314572800,
            "megabytes": 300,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "merge",
        "lang": "vi",
        "problem": "Tôi có nhiều file PDF và muốn gộp thành một tài liệu",
        "intent": {
          "id": "combine-documents",
          "summary": "Gộp nhiều tài liệu PDF và ảnh thành một file PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "combine-pdf",
          "combine-images",
          "set-page-size",
          "append-inputs"
        ],
        "input": {
          "types": [
            "pdf",
            "jpg",
            "png"
          ],
          "multiple": true,
          "min": 2
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "merge",
          "name": "Gộp PDF"
        },
        "outcome": {
          "id": "combined-pdf",
          "summary": "Một file PDF gồm tất cả file và ảnh đã chọn, theo thứ tự bạn sắp xếp."
        },
        "successCondition": "The output is verified against what Merge PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          },
          {
            "type": "max-files",
            "count": 20,
            "status": "provisional"
          },
          {
            "type": "max-total-bytes",
            "bytes": 314572800,
            "megabytes": 300,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "merge",
        "lang": "vi",
        "problem": "Tôi cần ghép ảnh chụp và bản scan vào một file PDF",
        "intent": {
          "id": "combine-documents",
          "summary": "Gộp nhiều tài liệu PDF và ảnh thành một file PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "combine-pdf",
          "combine-images",
          "set-page-size",
          "append-inputs"
        ],
        "input": {
          "types": [
            "pdf",
            "jpg",
            "png"
          ],
          "multiple": true,
          "min": 2
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "merge",
          "name": "Gộp PDF"
        },
        "outcome": {
          "id": "combined-pdf",
          "summary": "Một file PDF gồm tất cả file và ảnh đã chọn, theo thứ tự bạn sắp xếp."
        },
        "successCondition": "The output is verified against what Merge PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          },
          {
            "type": "max-files",
            "count": 20,
            "status": "provisional"
          },
          {
            "type": "max-total-bytes",
            "bytes": 314572800,
            "megabytes": 300,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "compress",
        "lang": "en",
        "problem": "My PDF is too large to email",
        "intent": {
          "id": "reduce-file-size",
          "summary": "Make a PDF file smaller"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "reduce-file-size",
          "recompress-images"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": true,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "per-input"
        },
        "experience": {
          "tool": "compress",
          "name": "Compress PDF"
        },
        "outcome": {
          "id": "smaller-pdf",
          "summary": "A PDF with a smaller file size, or your original unchanged when it cannot be made smaller."
        },
        "successCondition": "The output is verified against what Compress PDF promises (structure and, for a PDF, its page count) before it is offered: valid PDFs (one per input file, or the original when it could not be improved) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          },
          {
            "type": "max-files",
            "count": 20,
            "status": "provisional"
          },
          {
            "type": "max-total-bytes",
            "bytes": 314572800,
            "megabytes": 300,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "compress",
        "lang": "en",
        "problem": "I need to make a PDF smaller to upload it to a form",
        "intent": {
          "id": "reduce-file-size",
          "summary": "Make a PDF file smaller"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "reduce-file-size",
          "recompress-images"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": true,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "per-input"
        },
        "experience": {
          "tool": "compress",
          "name": "Compress PDF"
        },
        "outcome": {
          "id": "smaller-pdf",
          "summary": "A PDF with a smaller file size, or your original unchanged when it cannot be made smaller."
        },
        "successCondition": "The output is verified against what Compress PDF promises (structure and, for a PDF, its page count) before it is offered: valid PDFs (one per input file, or the original when it could not be improved) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          },
          {
            "type": "max-files",
            "count": 20,
            "status": "provisional"
          },
          {
            "type": "max-total-bytes",
            "bytes": 314572800,
            "megabytes": 300,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "compress",
        "lang": "vi",
        "problem": "File PDF của tôi quá nặng để gửi email",
        "intent": {
          "id": "reduce-file-size",
          "summary": "Làm cho file PDF nhẹ hơn"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "reduce-file-size",
          "recompress-images"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": true,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "per-input"
        },
        "experience": {
          "tool": "compress",
          "name": "Nén PDF"
        },
        "outcome": {
          "id": "smaller-pdf",
          "summary": "File PDF có dung lượng nhỏ hơn, hoặc bản gốc giữ nguyên khi không thể nén nhỏ hơn."
        },
        "successCondition": "The output is verified against what Compress PDF promises (structure and, for a PDF, its page count) before it is offered: valid PDFs (one per input file, or the original when it could not be improved) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          },
          {
            "type": "max-files",
            "count": 20,
            "status": "provisional"
          },
          {
            "type": "max-total-bytes",
            "bytes": 314572800,
            "megabytes": 300,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "compress",
        "lang": "vi",
        "problem": "Tôi cần làm file PDF nhẹ hơn để tải lên biểu mẫu có giới hạn dung lượng",
        "intent": {
          "id": "reduce-file-size",
          "summary": "Làm cho file PDF nhẹ hơn"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "reduce-file-size",
          "recompress-images"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": true,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "per-input"
        },
        "experience": {
          "tool": "compress",
          "name": "Nén PDF"
        },
        "outcome": {
          "id": "smaller-pdf",
          "summary": "File PDF có dung lượng nhỏ hơn, hoặc bản gốc giữ nguyên khi không thể nén nhỏ hơn."
        },
        "successCondition": "The output is verified against what Compress PDF promises (structure and, for a PDF, its page count) before it is offered: valid PDFs (one per input file, or the original when it could not be improved) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          },
          {
            "type": "max-files",
            "count": 20,
            "status": "provisional"
          },
          {
            "type": "max-total-bytes",
            "bytes": 314572800,
            "megabytes": 300,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "split",
        "lang": "en",
        "problem": "I need to separate chapters or parts of a PDF into different files",
        "intent": {
          "id": "divide-document",
          "summary": "Divide one PDF into several PDFs"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "split-by-ranges",
          "split-every-n-pages",
          "split-each-page"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "many"
        },
        "experience": {
          "tool": "split",
          "name": "Split PDF"
        },
        "outcome": {
          "id": "separate-pdfs",
          "summary": "New PDF files: one for each group of neighbouring pages you select, or one for every N pages, or one per page."
        },
        "successCondition": "The output is verified against what Split PDF promises (structure and, for a PDF, its page count) before it is offered: valid PDFs (one per selection) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "split",
        "lang": "en",
        "problem": "I want to send different parts of one PDF to different people",
        "intent": {
          "id": "divide-document",
          "summary": "Divide one PDF into several PDFs"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "split-by-ranges",
          "split-every-n-pages",
          "split-each-page"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "many"
        },
        "experience": {
          "tool": "split",
          "name": "Split PDF"
        },
        "outcome": {
          "id": "separate-pdfs",
          "summary": "New PDF files: one for each group of neighbouring pages you select, or one for every N pages, or one per page."
        },
        "successCondition": "The output is verified against what Split PDF promises (structure and, for a PDF, its page count) before it is offered: valid PDFs (one per selection) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "split",
        "lang": "vi",
        "problem": "Tôi cần tách các chương hoặc phần của một file PDF thành nhiều file",
        "intent": {
          "id": "divide-document",
          "summary": "Chia một file PDF thành nhiều file PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "split-by-ranges",
          "split-every-n-pages",
          "split-each-page"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "many"
        },
        "experience": {
          "tool": "split",
          "name": "Tách PDF"
        },
        "outcome": {
          "id": "separate-pdfs",
          "summary": "Các file PDF mới: mỗi nhóm trang liền nhau bạn chọn thành một file, hoặc cứ mỗi N trang một file, hoặc mỗi trang một file."
        },
        "successCondition": "The output is verified against what Split PDF promises (structure and, for a PDF, its page count) before it is offered: valid PDFs (one per selection) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "split",
        "lang": "vi",
        "problem": "Tôi muốn gửi từng phần của một file PDF cho những người khác nhau",
        "intent": {
          "id": "divide-document",
          "summary": "Chia một file PDF thành nhiều file PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "split-by-ranges",
          "split-every-n-pages",
          "split-each-page"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "many"
        },
        "experience": {
          "tool": "split",
          "name": "Tách PDF"
        },
        "outcome": {
          "id": "separate-pdfs",
          "summary": "Các file PDF mới: mỗi nhóm trang liền nhau bạn chọn thành một file, hoặc cứ mỗi N trang một file, hoặc mỗi trang một file."
        },
        "successCondition": "The output is verified against what Split PDF promises (structure and, for a PDF, its page count) before it is offered: valid PDFs (one per selection) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "jpg2pdf",
        "lang": "en",
        "problem": "I have photos or screenshots and need them in one PDF",
        "intent": {
          "id": "images-to-document",
          "summary": "Turn images into one PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "images-to-pages",
          "set-page-size",
          "set-orientation",
          "set-margin"
        ],
        "input": {
          "types": [
            "jpg",
            "png"
          ],
          "multiple": true,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "jpg2pdf",
          "name": "JPG to PDF"
        },
        "outcome": {
          "id": "images-as-pdf",
          "summary": "One PDF with each image on its own page, in the order you set."
        },
        "successCondition": "The output is verified against what JPG to PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          },
          {
            "type": "max-files",
            "count": 20,
            "status": "provisional"
          },
          {
            "type": "max-total-bytes",
            "bytes": 314572800,
            "megabytes": 300,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "jpg2pdf",
        "lang": "en",
        "problem": "I need to turn pictures of receipts or documents into a PDF",
        "intent": {
          "id": "images-to-document",
          "summary": "Turn images into one PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "images-to-pages",
          "set-page-size",
          "set-orientation",
          "set-margin"
        ],
        "input": {
          "types": [
            "jpg",
            "png"
          ],
          "multiple": true,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "jpg2pdf",
          "name": "JPG to PDF"
        },
        "outcome": {
          "id": "images-as-pdf",
          "summary": "One PDF with each image on its own page, in the order you set."
        },
        "successCondition": "The output is verified against what JPG to PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          },
          {
            "type": "max-files",
            "count": 20,
            "status": "provisional"
          },
          {
            "type": "max-total-bytes",
            "bytes": 314572800,
            "megabytes": 300,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "jpg2pdf",
        "lang": "vi",
        "problem": "Tôi có ảnh chụp hoặc ảnh màn hình và cần đưa chúng vào một file PDF",
        "intent": {
          "id": "images-to-document",
          "summary": "Chuyển ảnh thành một file PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "images-to-pages",
          "set-page-size",
          "set-orientation",
          "set-margin"
        ],
        "input": {
          "types": [
            "jpg",
            "png"
          ],
          "multiple": true,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "jpg2pdf",
          "name": "JPG sang PDF"
        },
        "outcome": {
          "id": "images-as-pdf",
          "summary": "Một file PDF trong đó mỗi ảnh nằm trên một trang, theo thứ tự bạn sắp xếp."
        },
        "successCondition": "The output is verified against what JPG to PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          },
          {
            "type": "max-files",
            "count": 20,
            "status": "provisional"
          },
          {
            "type": "max-total-bytes",
            "bytes": 314572800,
            "megabytes": 300,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "jpg2pdf",
        "lang": "vi",
        "problem": "Tôi cần chuyển ảnh hoá đơn hoặc giấy tờ thành PDF",
        "intent": {
          "id": "images-to-document",
          "summary": "Chuyển ảnh thành một file PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "images-to-pages",
          "set-page-size",
          "set-orientation",
          "set-margin"
        ],
        "input": {
          "types": [
            "jpg",
            "png"
          ],
          "multiple": true,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "jpg2pdf",
          "name": "JPG sang PDF"
        },
        "outcome": {
          "id": "images-as-pdf",
          "summary": "Một file PDF trong đó mỗi ảnh nằm trên một trang, theo thứ tự bạn sắp xếp."
        },
        "successCondition": "The output is verified against what JPG to PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          },
          {
            "type": "max-files",
            "count": 20,
            "status": "provisional"
          },
          {
            "type": "max-total-bytes",
            "bytes": 314572800,
            "megabytes": 300,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "pdf2jpg",
        "lang": "en",
        "problem": "I need a PDF page as a picture",
        "intent": {
          "id": "document-to-images",
          "summary": "Turn PDF pages into images"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "render-pages",
          "set-resolution",
          "set-quality",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "jpg",
          "count": "per-page"
        },
        "experience": {
          "tool": "pdf2jpg",
          "name": "PDF to JPG"
        },
        "outcome": {
          "id": "page-images",
          "summary": "JPG images of the pages you choose, packed into a ZIP when there are several."
        },
        "successCondition": "The output is verified against what PDF to JPG promises (structure and, for a PDF, its page count) before it is offered: valid JPG images (one per selected page) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "pdf2jpg",
        "lang": "en",
        "problem": "I want to share a PDF page where PDF files are not accepted",
        "intent": {
          "id": "document-to-images",
          "summary": "Turn PDF pages into images"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "render-pages",
          "set-resolution",
          "set-quality",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "jpg",
          "count": "per-page"
        },
        "experience": {
          "tool": "pdf2jpg",
          "name": "PDF to JPG"
        },
        "outcome": {
          "id": "page-images",
          "summary": "JPG images of the pages you choose, packed into a ZIP when there are several."
        },
        "successCondition": "The output is verified against what PDF to JPG promises (structure and, for a PDF, its page count) before it is offered: valid JPG images (one per selected page) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "pdf2jpg",
        "lang": "vi",
        "problem": "Tôi cần một trang PDF dưới dạng ảnh",
        "intent": {
          "id": "document-to-images",
          "summary": "Chuyển các trang PDF thành ảnh"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "render-pages",
          "set-resolution",
          "set-quality",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "jpg",
          "count": "per-page"
        },
        "experience": {
          "tool": "pdf2jpg",
          "name": "PDF sang JPG"
        },
        "outcome": {
          "id": "page-images",
          "summary": "Ảnh JPG của các trang bạn chọn, đóng gói thành ZIP khi có nhiều ảnh."
        },
        "successCondition": "The output is verified against what PDF to JPG promises (structure and, for a PDF, its page count) before it is offered: valid JPG images (one per selected page) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "pdf2jpg",
        "lang": "vi",
        "problem": "Tôi muốn chia sẻ một trang PDF ở nơi không nhận file PDF",
        "intent": {
          "id": "document-to-images",
          "summary": "Chuyển các trang PDF thành ảnh"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "render-pages",
          "set-resolution",
          "set-quality",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "jpg",
          "count": "per-page"
        },
        "experience": {
          "tool": "pdf2jpg",
          "name": "PDF sang JPG"
        },
        "outcome": {
          "id": "page-images",
          "summary": "Ảnh JPG của các trang bạn chọn, đóng gói thành ZIP khi có nhiều ảnh."
        },
        "successCondition": "The output is verified against what PDF to JPG promises (structure and, for a PDF, its page count) before it is offered: valid JPG images (one per selected page) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "pdf2png",
        "lang": "en",
        "problem": "A JPG version of my PDF page has visible compression artifacts around text or diagrams",
        "intent": {
          "id": "document-to-lossless-images",
          "summary": "Turn PDF pages into lossless PNG images"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "render-pages",
          "set-resolution",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "png",
          "count": "per-page"
        },
        "experience": {
          "tool": "pdf2png",
          "name": "PDF to PNG"
        },
        "outcome": {
          "id": "page-images-lossless",
          "summary": "PNG images of the pages you choose, with no compression loss, packed into a ZIP when there are several."
        },
        "successCondition": "The output is verified against what PDF to PNG promises (structure and, for a PDF, its page count) before it is offered: valid PNG images (one per selected page) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "pdf2png",
        "lang": "en",
        "problem": "I need a page as a picture with a transparent or perfectly sharp background",
        "intent": {
          "id": "document-to-lossless-images",
          "summary": "Turn PDF pages into lossless PNG images"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "render-pages",
          "set-resolution",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "png",
          "count": "per-page"
        },
        "experience": {
          "tool": "pdf2png",
          "name": "PDF to PNG"
        },
        "outcome": {
          "id": "page-images-lossless",
          "summary": "PNG images of the pages you choose, with no compression loss, packed into a ZIP when there are several."
        },
        "successCondition": "The output is verified against what PDF to PNG promises (structure and, for a PDF, its page count) before it is offered: valid PNG images (one per selected page) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "pdf2png",
        "lang": "vi",
        "problem": "Ảnh JPG của trang PDF bị mờ hoặc lộ vết nén quanh chữ và biểu đồ",
        "intent": {
          "id": "document-to-lossless-images",
          "summary": "Chuyển các trang PDF thành ảnh PNG không mất nét"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "render-pages",
          "set-resolution",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "png",
          "count": "per-page"
        },
        "experience": {
          "tool": "pdf2png",
          "name": "PDF sang PNG"
        },
        "outcome": {
          "id": "page-images-lossless",
          "summary": "Ảnh PNG của các trang bạn chọn, không mất chi tiết do nén, đóng gói thành ZIP khi có nhiều ảnh."
        },
        "successCondition": "The output is verified against what PDF to PNG promises (structure and, for a PDF, its page count) before it is offered: valid PNG images (one per selected page) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "pdf2png",
        "lang": "vi",
        "problem": "Tôi cần ảnh của một trang PDF có nền trong suốt hoặc thật sắc nét",
        "intent": {
          "id": "document-to-lossless-images",
          "summary": "Chuyển các trang PDF thành ảnh PNG không mất nét"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "render-pages",
          "set-resolution",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "png",
          "count": "per-page"
        },
        "experience": {
          "tool": "pdf2png",
          "name": "PDF sang PNG"
        },
        "outcome": {
          "id": "page-images-lossless",
          "summary": "Ảnh PNG của các trang bạn chọn, không mất chi tiết do nén, đóng gói thành ZIP khi có nhiều ảnh."
        },
        "successCondition": "The output is verified against what PDF to PNG promises (structure and, for a PDF, its page count) before it is offered: valid PNG images (one per selected page) are produced and are available to download, individually or as a ZIP.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "rotate",
        "lang": "en",
        "problem": "My scanned PDF is sideways or upside down",
        "intent": {
          "id": "rotate-pages",
          "summary": "Turn pages of a PDF to the right orientation"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "rotate-pages",
          "per-page-rotation"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "rotate",
          "name": "Rotate PDF"
        },
        "outcome": {
          "id": "rotated-pdf",
          "summary": "The same document with the pages you chose turned the right way up."
        },
        "successCondition": "The output is verified against what Rotate PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "rotate",
        "lang": "en",
        "problem": "Some pages of my PDF are turned the wrong way",
        "intent": {
          "id": "rotate-pages",
          "summary": "Turn pages of a PDF to the right orientation"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "rotate-pages",
          "per-page-rotation"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "rotate",
          "name": "Rotate PDF"
        },
        "outcome": {
          "id": "rotated-pdf",
          "summary": "The same document with the pages you chose turned the right way up."
        },
        "successCondition": "The output is verified against what Rotate PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "rotate",
        "lang": "vi",
        "problem": "File PDF scan của tôi bị nằm ngang hoặc bị ngược",
        "intent": {
          "id": "rotate-pages",
          "summary": "Xoay các trang PDF về đúng hướng"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "rotate-pages",
          "per-page-rotation"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "rotate",
          "name": "Xoay PDF"
        },
        "outcome": {
          "id": "rotated-pdf",
          "summary": "Chính tài liệu đó với các trang bạn chọn đã được xoay đúng hướng."
        },
        "successCondition": "The output is verified against what Rotate PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "rotate",
        "lang": "vi",
        "problem": "Một số trang trong file PDF của tôi bị xoay sai hướng",
        "intent": {
          "id": "rotate-pages",
          "summary": "Xoay các trang PDF về đúng hướng"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "rotate-pages",
          "per-page-rotation"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "rotate",
          "name": "Xoay PDF"
        },
        "outcome": {
          "id": "rotated-pdf",
          "summary": "Chính tài liệu đó với các trang bạn chọn đã được xoay đúng hướng."
        },
        "successCondition": "The output is verified against what Rotate PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "delete",
        "lang": "en",
        "problem": "I need to remove blank or unwanted pages from a PDF",
        "intent": {
          "id": "remove-pages",
          "summary": "Remove unwanted pages from a PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "remove-pages",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "delete",
          "name": "Delete PDF pages"
        },
        "outcome": {
          "id": "pdf-without-pages",
          "summary": "A new PDF without the pages you removed."
        },
        "successCondition": "The output is verified against what Delete PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "delete",
        "lang": "en",
        "problem": "I want to remove pages with private information before sharing",
        "intent": {
          "id": "remove-pages",
          "summary": "Remove unwanted pages from a PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "remove-pages",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "delete",
          "name": "Delete PDF pages"
        },
        "outcome": {
          "id": "pdf-without-pages",
          "summary": "A new PDF without the pages you removed."
        },
        "successCondition": "The output is verified against what Delete PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "delete",
        "lang": "vi",
        "problem": "Tôi cần bỏ các trang trắng hoặc không cần thiết khỏi file PDF",
        "intent": {
          "id": "remove-pages",
          "summary": "Bỏ những trang không cần khỏi file PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "remove-pages",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "delete",
          "name": "Xoá trang PDF"
        },
        "outcome": {
          "id": "pdf-without-pages",
          "summary": "File PDF mới không còn các trang bạn đã xoá."
        },
        "successCondition": "The output is verified against what Delete PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "delete",
        "lang": "vi",
        "problem": "Tôi muốn xoá những trang có thông tin riêng tư trước khi chia sẻ",
        "intent": {
          "id": "remove-pages",
          "summary": "Bỏ những trang không cần khỏi file PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "remove-pages",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "delete",
          "name": "Xoá trang PDF"
        },
        "outcome": {
          "id": "pdf-without-pages",
          "summary": "File PDF mới không còn các trang bạn đã xoá."
        },
        "successCondition": "The output is verified against what Delete PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "reorder",
        "lang": "en",
        "problem": "The pages of my PDF are in the wrong order",
        "intent": {
          "id": "reorder-pages",
          "summary": "Change the order of the pages in a PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "reorder-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "reorder",
          "name": "Reorder PDF pages"
        },
        "outcome": {
          "id": "reordered-pdf",
          "summary": "A new PDF with its pages in the order you set."
        },
        "successCondition": "The output is verified against what Reorder PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "reorder",
        "lang": "en",
        "problem": "I need to rearrange the pages of a scanned document",
        "intent": {
          "id": "reorder-pages",
          "summary": "Change the order of the pages in a PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "reorder-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "reorder",
          "name": "Reorder PDF pages"
        },
        "outcome": {
          "id": "reordered-pdf",
          "summary": "A new PDF with its pages in the order you set."
        },
        "successCondition": "The output is verified against what Reorder PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "reorder",
        "lang": "vi",
        "problem": "Các trang trong file PDF của tôi bị sai thứ tự",
        "intent": {
          "id": "reorder-pages",
          "summary": "Đổi thứ tự các trang trong file PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "reorder-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "reorder",
          "name": "Sắp xếp trang PDF"
        },
        "outcome": {
          "id": "reordered-pdf",
          "summary": "File PDF mới với các trang theo thứ tự bạn sắp xếp."
        },
        "successCondition": "The output is verified against what Reorder PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "reorder",
        "lang": "vi",
        "problem": "Tôi cần sắp xếp lại thứ tự các trang của tài liệu đã scan",
        "intent": {
          "id": "reorder-pages",
          "summary": "Đổi thứ tự các trang trong file PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "reorder-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "reorder",
          "name": "Sắp xếp trang PDF"
        },
        "outcome": {
          "id": "reordered-pdf",
          "summary": "File PDF mới với các trang theo thứ tự bạn sắp xếp."
        },
        "successCondition": "The output is verified against what Reorder PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "extract",
        "lang": "en",
        "problem": "I only need a few pages from a PDF",
        "intent": {
          "id": "select-pages",
          "summary": "Keep only the chosen pages of a PDF as a new PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "select-pages",
          "keep-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "extract",
          "name": "Extract PDF pages"
        },
        "outcome": {
          "id": "extracted-pdf",
          "summary": "A new PDF containing only the pages you selected, in their original order."
        },
        "successCondition": "The output is verified against what Extract PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "extract",
        "lang": "en",
        "problem": "I want to save one chapter or one invoice from a large PDF as its own file",
        "intent": {
          "id": "select-pages",
          "summary": "Keep only the chosen pages of a PDF as a new PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "select-pages",
          "keep-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "extract",
          "name": "Extract PDF pages"
        },
        "outcome": {
          "id": "extracted-pdf",
          "summary": "A new PDF containing only the pages you selected, in their original order."
        },
        "successCondition": "The output is verified against what Extract PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "extract",
        "lang": "vi",
        "problem": "Tôi chỉ cần vài trang trong một file PDF",
        "intent": {
          "id": "select-pages",
          "summary": "Chỉ giữ các trang đã chọn thành một file PDF mới"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "select-pages",
          "keep-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "extract",
          "name": "Trích xuất trang PDF"
        },
        "outcome": {
          "id": "extracted-pdf",
          "summary": "File PDF mới chỉ gồm các trang bạn đã chọn, giữ nguyên thứ tự gốc."
        },
        "successCondition": "The output is verified against what Extract PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "extract",
        "lang": "vi",
        "problem": "Tôi muốn lưu riêng một chương hoặc một hoá đơn từ file PDF lớn",
        "intent": {
          "id": "select-pages",
          "summary": "Chỉ giữ các trang đã chọn thành một file PDF mới"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "select-pages",
          "keep-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "extract",
          "name": "Trích xuất trang PDF"
        },
        "outcome": {
          "id": "extracted-pdf",
          "summary": "File PDF mới chỉ gồm các trang bạn đã chọn, giữ nguyên thứ tự gốc."
        },
        "successCondition": "The output is verified against what Extract PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "duplicate",
        "lang": "en",
        "problem": "I need two copies of the same page next to each other, for example to fill in twice",
        "intent": {
          "id": "duplicate-pages",
          "summary": "Duplicate the chosen pages of a PDF, right after each one"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "duplicate-pages",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "duplicate",
          "name": "Duplicate PDF pages"
        },
        "outcome": {
          "id": "duplicated-pdf",
          "summary": "The same PDF with a copy of each page you chose placed right after it."
        },
        "successCondition": "The output is verified against what Duplicate PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "duplicate",
        "lang": "en",
        "problem": "A scanned page needs to appear again right after itself before I split the document",
        "intent": {
          "id": "duplicate-pages",
          "summary": "Duplicate the chosen pages of a PDF, right after each one"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "duplicate-pages",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "duplicate",
          "name": "Duplicate PDF pages"
        },
        "outcome": {
          "id": "duplicated-pdf",
          "summary": "The same PDF with a copy of each page you chose placed right after it."
        },
        "successCondition": "The output is verified against what Duplicate PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "duplicate",
        "lang": "vi",
        "problem": "Tôi cần hai bản của cùng một trang nằm cạnh nhau, ví dụ để điền hai lần",
        "intent": {
          "id": "duplicate-pages",
          "summary": "Nhân bản các trang đã chọn của một file PDF, ngay sau mỗi trang gốc"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "duplicate-pages",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "duplicate",
          "name": "Nhân bản trang PDF"
        },
        "outcome": {
          "id": "duplicated-pdf",
          "summary": "Chính file PDF đó, có thêm một bản sao của mỗi trang bạn chọn ngay sau trang gốc."
        },
        "successCondition": "The output is verified against what Duplicate PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "duplicate",
        "lang": "vi",
        "problem": "Một trang scan cần xuất hiện lại ngay sau chính nó trước khi tôi tách tài liệu",
        "intent": {
          "id": "duplicate-pages",
          "summary": "Nhân bản các trang đã chọn của một file PDF, ngay sau mỗi trang gốc"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "duplicate-pages",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "duplicate",
          "name": "Nhân bản trang PDF"
        },
        "outcome": {
          "id": "duplicated-pdf",
          "summary": "Chính file PDF đó, có thêm một bản sao của mỗi trang bạn chọn ngay sau trang gốc."
        },
        "successCondition": "The output is verified against what Duplicate PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "insert",
        "lang": "en",
        "problem": "I need an empty page to write or stamp on later, in a specific spot in the PDF",
        "intent": {
          "id": "insert-blank-page",
          "summary": "Insert a blank page into a PDF, right after a chosen page"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "insert-blank-page",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "insert",
          "name": "Insert blank PDF page"
        },
        "outcome": {
          "id": "page-inserted-pdf",
          "summary": "The same PDF with a genuinely blank page added right after each page you chose."
        },
        "successCondition": "The output is verified against what Insert blank PDF page promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "insert",
        "lang": "en",
        "problem": "I want to leave space between two sections of a document before printing it",
        "intent": {
          "id": "insert-blank-page",
          "summary": "Insert a blank page into a PDF, right after a chosen page"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "insert-blank-page",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "insert",
          "name": "Insert blank PDF page"
        },
        "outcome": {
          "id": "page-inserted-pdf",
          "summary": "The same PDF with a genuinely blank page added right after each page you chose."
        },
        "successCondition": "The output is verified against what Insert blank PDF page promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "insert",
        "lang": "vi",
        "problem": "Tôi cần một trang trống để viết hoặc đóng dấu sau này, ở đúng vị trí trong file PDF",
        "intent": {
          "id": "insert-blank-page",
          "summary": "Chèn một trang trống vào file PDF, ngay sau một trang bạn chọn"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "insert-blank-page",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "insert",
          "name": "Chèn trang trống vào PDF"
        },
        "outcome": {
          "id": "page-inserted-pdf",
          "summary": "Chính file PDF đó, có thêm một trang trống thật sự ngay sau mỗi trang bạn chọn."
        },
        "successCondition": "The output is verified against what Insert blank PDF page promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "insert",
        "lang": "vi",
        "problem": "Tôi muốn chừa khoảng trống giữa hai phần của tài liệu trước khi in",
        "intent": {
          "id": "insert-blank-page",
          "summary": "Chèn một trang trống vào file PDF, ngay sau một trang bạn chọn"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "insert-blank-page",
          "select-pages"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "insert",
          "name": "Chèn trang trống vào PDF"
        },
        "outcome": {
          "id": "page-inserted-pdf",
          "summary": "Chính file PDF đó, có thêm một trang trống thật sự ngay sau mỗi trang bạn chọn."
        },
        "successCondition": "The output is verified against what Insert blank PDF page promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "watermark",
        "lang": "en",
        "problem": "I want to mark a document as draft or confidential before sharing it",
        "intent": {
          "id": "mark-pages",
          "summary": "Put a text or image watermark on the pages of a PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "text-watermark",
          "image-watermark",
          "set-opacity",
          "set-rotation",
          "set-position",
          "tile-watermark",
          "page-scope",
          "live-preview"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "watermark",
          "name": "Watermark PDF"
        },
        "outcome": {
          "id": "marked-pdf",
          "summary": "The PDF with your text or logo watermark on the pages you chose."
        },
        "successCondition": "The output is verified against what Watermark PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "watermark",
        "lang": "en",
        "problem": "I need to add a logo or text to every page of a PDF",
        "intent": {
          "id": "mark-pages",
          "summary": "Put a text or image watermark on the pages of a PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "PDF utility platform"
        },
        "capability": [
          "text-watermark",
          "image-watermark",
          "set-opacity",
          "set-rotation",
          "set-position",
          "tile-watermark",
          "page-scope",
          "live-preview"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "watermark",
          "name": "Watermark PDF"
        },
        "outcome": {
          "id": "marked-pdf",
          "summary": "The PDF with your text or logo watermark on the pages you chose."
        },
        "successCondition": "The output is verified against what Watermark PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "watermark",
        "lang": "vi",
        "problem": "Tôi muốn đóng dấu bản nháp hoặc mật lên tài liệu trước khi chia sẻ",
        "intent": {
          "id": "mark-pages",
          "summary": "Đặt watermark chữ hoặc ảnh lên các trang của file PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "text-watermark",
          "image-watermark",
          "set-opacity",
          "set-rotation",
          "set-position",
          "tile-watermark",
          "page-scope",
          "live-preview"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "watermark",
          "name": "Chèn watermark PDF"
        },
        "outcome": {
          "id": "marked-pdf",
          "summary": "File PDF có watermark chữ hoặc logo của bạn trên các trang đã chọn."
        },
        "successCondition": "The output is verified against what Watermark PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      },
      {
        "toolId": "watermark",
        "lang": "vi",
        "problem": "Tôi cần thêm logo hoặc chữ chìm lên mọi trang của file PDF",
        "intent": {
          "id": "mark-pages",
          "summary": "Đặt watermark chữ hoặc ảnh lên các trang của file PDF"
        },
        "product": {
          "id": "pdf-utilities",
          "name": "Nền tảng công cụ PDF"
        },
        "capability": [
          "text-watermark",
          "image-watermark",
          "set-opacity",
          "set-rotation",
          "set-position",
          "tile-watermark",
          "page-scope",
          "live-preview"
        ],
        "input": {
          "types": [
            "pdf"
          ],
          "multiple": false,
          "min": 1
        },
        "processing": {
          "location": "local",
          "environment": "browser",
          "uploadRequired": false
        },
        "output": {
          "type": "pdf",
          "count": "one"
        },
        "experience": {
          "tool": "watermark",
          "name": "Chèn watermark PDF"
        },
        "outcome": {
          "id": "marked-pdf",
          "summary": "File PDF có watermark chữ hoặc logo của bạn trên các trang đã chọn."
        },
        "successCondition": "The output is verified against what Watermark PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
        "limitation": [
          {
            "type": "encrypted-pdf-unsupported"
          },
          {
            "type": "max-file-bytes",
            "bytes": 104857600,
            "megabytes": 100,
            "status": "provisional"
          }
        ]
      }
    ]
  },
  "families": [
    {
      "id": "organize",
      "canonicalName": "Organize PDF",
      "tools": [
        "merge",
        "split",
        "rotate",
        "delete",
        "reorder",
        "extract",
        "duplicate",
        "insert"
      ]
    },
    {
      "id": "convert",
      "canonicalName": "Convert PDF",
      "tools": [
        "jpg2pdf",
        "pdf2jpg",
        "pdf2png"
      ]
    },
    {
      "id": "optimize",
      "canonicalName": "Optimize PDF",
      "tools": [
        "compress"
      ]
    },
    {
      "id": "edit",
      "canonicalName": "Edit PDF",
      "tools": [
        "watermark"
      ]
    }
  ],
  "tools": [
    {
      "id": "merge",
      "canonicalName": "Merge PDF",
      "intent": {
        "id": "combine-documents",
        "summary": "Combine several PDF documents and images into one PDF"
      },
      "family": "organize",
      "input": {
        "types": [
          "pdf",
          "jpg",
          "png"
        ],
        "multiple": true,
        "min": 2
      },
      "output": {
        "type": "pdf",
        "count": "one"
      },
      "capabilities": [
        "combine-pdf",
        "combine-images",
        "set-page-size",
        "append-inputs"
      ],
      "relatedTools": [
        "rotate",
        "delete",
        "reorder",
        "extract",
        "compress",
        "watermark"
      ],
      "inverseTool": "split",
      "aliases": {
        "en": [
          "combine pdf",
          "pdf merger",
          "pdf joiner",
          "join pdf files",
          "combine multiple pdfs"
        ],
        "vi": [
          "gộp PDF",
          "nối PDF",
          "ghép PDF"
        ]
      },
      "names": {
        "en": "Merge PDF",
        "vi": "Gộp PDF"
      },
      "descriptions": {
        "en": "Combine PDFs and images into one PDF, in the order you choose.",
        "vi": "Gộp PDF và ảnh thành một file PDF, theo thứ tự bạn chọn."
      },
      "urls": {
        "en": "https://pdfvie.com/merge-pdf",
        "vi": "https://pdfvie.com/vi/merge-pdf"
      },
      "experience": {
        "intent": {
          "en": "Combine several PDF documents and images into one PDF",
          "vi": "Gộp nhiều tài liệu PDF và ảnh thành một file PDF"
        },
        "problems": {
          "en": [
            "I have several PDF files and want one document",
            "I need to combine scans and photos into one PDF"
          ],
          "vi": [
            "Tôi có nhiều file PDF và muốn gộp thành một tài liệu",
            "Tôi cần ghép ảnh chụp và bản scan vào một file PDF"
          ]
        },
        "outcome": {
          "id": "combined-pdf",
          "summary": {
            "en": "One PDF containing all the chosen files and images, in the order you set.",
            "vi": "Một file PDF gồm tất cả file và ảnh đã chọn, theo thứ tự bạn sắp xếp."
          }
        },
        "audience": {
          "en": "Anyone who needs to combine loose documents — contracts, invoices, drawings, scans — into one tidy file to keep or send.",
          "vi": "Dành cho bất kỳ ai cần ghép hồ sơ, hợp đồng, hoá đơn, bản vẽ hay tài liệu scan rời rạc thành một file gọn gàng để lưu hoặc gửi đi."
        }
      },
      "processingMode": {
        "location": "local",
        "environment": "browser",
        "uploadRequired": false
      },
      "limitations": [
        {
          "type": "encrypted-pdf-unsupported"
        },
        {
          "type": "max-file-bytes",
          "bytes": 104857600,
          "megabytes": 100,
          "status": "provisional"
        },
        {
          "type": "max-files",
          "count": 20,
          "status": "provisional"
        },
        {
          "type": "max-total-bytes",
          "bytes": 314572800,
          "megabytes": 300,
          "status": "provisional"
        }
      ],
      "successCondition": "The output is verified against what Merge PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
      "useCase": {
        "en": "Anyone who needs to combine loose documents — contracts, invoices, drawings, scans — into one tidy file to keep or send, for example when \"i have several PDF files and want one document\" — and needs: one PDF containing all the chosen files and images, in the order you set.",
        "vi": "Dành cho bất kỳ ai cần ghép hồ sơ, hợp đồng, hoá đơn, bản vẽ hay tài liệu scan rời rạc thành một file gọn gàng để lưu hoặc gửi đi — ví dụ khi \"tôi có nhiều file PDF và muốn gộp thành một tài liệu\" — và cần: một file PDF gồm tất cả file và ảnh đã chọn, theo thứ tự bạn sắp xếp."
      },
      "semantics": {
        "contexts": [
          "submission",
          "email",
          "archive"
        ],
        "expressions": {
          "en": {
            "canonical": [
              "Merge PDF",
              "combine pdf",
              "pdf merger",
              "pdf joiner",
              "join pdf files",
              "combine multiple pdfs"
            ],
            "intent": [
              "combine several PDFs into one file",
              "put PDFs and photos together in one document"
            ],
            "problem": [
              "I have too many separate PDF files to send",
              "my scanned pages are in different files"
            ],
            "outcome": [
              "one PDF with all my files in the right order"
            ],
            "context": [
              "join documents into one file for a submission"
            ]
          },
          "vi": {
            "canonical": [
              "Merge PDF",
              "gộp PDF",
              "nối PDF",
              "ghép PDF"
            ],
            "intent": [
              "gộp nhiều file PDF thành một file",
              "ghép PDF và ảnh vào cùng một tài liệu"
            ],
            "problem": [
              "tôi có quá nhiều file PDF rời để gửi",
              "các trang scan của tôi nằm ở nhiều file khác nhau"
            ],
            "outcome": [
              "một file PDF chứa tất cả, đúng thứ tự"
            ],
            "context": [
              "gộp hồ sơ thành một file để nộp"
            ]
          }
        },
        "suitableWhen": [
          {
            "text": {
              "en": "You want several PDFs combined into a single PDF, in an order you choose",
              "vi": "Bạn muốn gộp nhiều PDF thành một PDF, theo thứ tự bạn chọn"
            },
            "evidence": {
              "kind": "capability",
              "ref": "combine-pdf"
            }
          },
          {
            "text": {
              "en": "You want JPG or PNG images and PDFs mixed in one document",
              "vi": "Bạn muốn trộn ảnh JPG/PNG và PDF vào cùng một tài liệu"
            },
            "evidence": {
              "kind": "capability",
              "ref": "combine-images"
            }
          }
        ],
        "notSuitableWhen": [
          {
            "text": {
              "en": "You need bookmarks, form fields or internal links to survive in the result",
              "vi": "Bạn cần giữ lại dấu trang (bookmark), trường biểu mẫu hoặc liên kết nội bộ trong kết quả"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Bookmarks, form fields and internal links from the original files"
            }
          },
          {
            "text": {
              "en": "Your images are HEIC, WebP or GIF",
              "vi": "Ảnh của bạn ở định dạng HEIC, WebP hoặc GIF"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "no HEIC, WebP or GIF yet"
            }
          },
          {
            "text": {
              "en": "The PDF is password-protected (encrypted)",
              "vi": "File PDF có mật khẩu (được mã hoá)"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Encrypted PDFs are not supported yet"
            }
          }
        ]
      }
    },
    {
      "id": "compress",
      "canonicalName": "Compress PDF",
      "intent": {
        "id": "reduce-file-size",
        "summary": "Make a PDF file smaller"
      },
      "family": "optimize",
      "input": {
        "types": [
          "pdf"
        ],
        "multiple": true,
        "min": 1
      },
      "output": {
        "type": "pdf",
        "count": "per-input"
      },
      "capabilities": [
        "reduce-file-size",
        "recompress-images"
      ],
      "relatedTools": [
        "watermark",
        "rotate",
        "delete",
        "reorder",
        "extract",
        "merge"
      ],
      "inverseTool": null,
      "aliases": {
        "en": [],
        "vi": []
      },
      "names": {
        "en": "Compress PDF",
        "vi": "Nén PDF"
      },
      "descriptions": {
        "en": "Make PDF files smaller so they are easier to send and store.",
        "vi": "Giảm dung lượng file PDF để dễ gửi và lưu trữ."
      },
      "urls": {
        "en": "https://pdfvie.com/compress-pdf",
        "vi": "https://pdfvie.com/vi/compress-pdf"
      },
      "experience": {
        "intent": {
          "en": "Make a PDF file smaller",
          "vi": "Làm cho file PDF nhẹ hơn"
        },
        "problems": {
          "en": [
            "My PDF is too large to email",
            "I need to make a PDF smaller to upload it to a form"
          ],
          "vi": [
            "File PDF của tôi quá nặng để gửi email",
            "Tôi cần làm file PDF nhẹ hơn để tải lên biểu mẫu có giới hạn dung lượng"
          ]
        },
        "outcome": {
          "id": "smaller-pdf",
          "summary": {
            "en": "A PDF with a smaller file size, or your original unchanged when it cannot be made smaller.",
            "vi": "File PDF có dung lượng nhỏ hơn, hoặc bản gốc giữ nguyên khi không thể nén nhỏ hơn."
          }
        },
        "audience": {
          "en": "Anyone who needs to email a document, upload it to a form with a size limit, or free up storage — especially scans and files with photos.",
          "vi": "Dành cho ai cần gửi tài liệu qua email, tải lên biểu mẫu giới hạn dung lượng, hoặc giải phóng bộ nhớ — đặc biệt là bản scan và file có nhiều ảnh."
        }
      },
      "processingMode": {
        "location": "local",
        "environment": "browser",
        "uploadRequired": false
      },
      "limitations": [
        {
          "type": "encrypted-pdf-unsupported"
        },
        {
          "type": "max-file-bytes",
          "bytes": 104857600,
          "megabytes": 100,
          "status": "provisional"
        },
        {
          "type": "max-files",
          "count": 20,
          "status": "provisional"
        },
        {
          "type": "max-total-bytes",
          "bytes": 314572800,
          "megabytes": 300,
          "status": "provisional"
        }
      ],
      "successCondition": "The output is verified against what Compress PDF promises (structure and, for a PDF, its page count) before it is offered: valid PDFs (one per input file, or the original when it could not be improved) are produced and are available to download, individually or as a ZIP.",
      "useCase": {
        "en": "Anyone who needs to email a document, upload it to a form with a size limit, or free up storage — especially scans and files with photos, for example when \"my PDF is too large to email\" — and needs: a PDF with a smaller file size, or your original unchanged when it cannot be made smaller.",
        "vi": "Dành cho ai cần gửi tài liệu qua email, tải lên biểu mẫu giới hạn dung lượng, hoặc giải phóng bộ nhớ — đặc biệt là bản scan và file có nhiều ảnh — ví dụ khi \"file PDF của tôi quá nặng để gửi email\" — và cần: file PDF có dung lượng nhỏ hơn, hoặc bản gốc giữ nguyên khi không thể nén nhỏ hơn."
      },
      "semantics": {
        "contexts": [
          "email",
          "upload",
          "submission"
        ],
        "expressions": {
          "en": {
            "canonical": [
              "Compress PDF"
            ],
            "intent": [
              "make a PDF smaller",
              "reduce the file size of a PDF"
            ],
            "problem": [
              "my PDF is too large to email",
              "the upload form rejects my PDF because it is too big"
            ],
            "outcome": [
              "a lighter PDF that still looks fine"
            ],
            "context": [
              "shrink a scanned PDF before emailing it"
            ]
          },
          "vi": {
            "canonical": [
              "Compress PDF"
            ],
            "intent": [
              "làm file PDF nhẹ hơn",
              "làm giảm kích thước file PDF"
            ],
            "problem": [
              "file PDF quá nặng để gửi email",
              "biểu mẫu tải lên không nhận file PDF vì quá lớn"
            ],
            "outcome": [
              "file PDF nhẹ hơn mà vẫn xem tốt"
            ],
            "context": [
              "nén PDF scan trước khi gửi email"
            ]
          }
        },
        "suitableWhen": [
          {
            "text": {
              "en": "The PDF is large because it contains photos or scanned pages",
              "vi": "File PDF nặng vì chứa ảnh chụp hoặc trang scan"
            },
            "evidence": {
              "kind": "capability",
              "ref": "recompress-images"
            }
          }
        ],
        "notSuitableWhen": [
          {
            "text": {
              "en": "The PDF is mostly text, with few or no photos — it often cannot get smaller",
              "vi": "File PDF chủ yếu là chữ, ít hoặc không có ảnh — thường không thể nhỏ hơn"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "text-only PDFs often cannot get smaller"
            }
          },
          {
            "text": {
              "en": "Image quality must stay exactly as it is",
              "vi": "Chất lượng ảnh phải giữ nguyên tuyệt đối"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "their quality can drop slightly"
            }
          },
          {
            "text": {
              "en": "The PDF is password-protected (encrypted)",
              "vi": "File PDF có mật khẩu (được mã hoá)"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Encrypted PDFs are not supported yet"
            }
          }
        ]
      }
    },
    {
      "id": "split",
      "canonicalName": "Split PDF",
      "intent": {
        "id": "divide-document",
        "summary": "Divide one PDF into several PDFs"
      },
      "family": "organize",
      "input": {
        "types": [
          "pdf"
        ],
        "multiple": false,
        "min": 1
      },
      "output": {
        "type": "pdf",
        "count": "many"
      },
      "capabilities": [
        "split-by-ranges",
        "split-every-n-pages",
        "split-each-page"
      ],
      "relatedTools": [
        "compress",
        "merge"
      ],
      "inverseTool": "merge",
      "aliases": {
        "en": [],
        "vi": []
      },
      "names": {
        "en": "Split PDF",
        "vi": "Tách PDF"
      },
      "descriptions": {
        "en": "Split one PDF into several smaller files.",
        "vi": "Tách một file PDF thành nhiều file nhỏ."
      },
      "urls": {
        "en": "https://pdfvie.com/split-pdf",
        "vi": "https://pdfvie.com/vi/split-pdf"
      },
      "experience": {
        "intent": {
          "en": "Divide one PDF into several PDFs",
          "vi": "Chia một file PDF thành nhiều file PDF"
        },
        "problems": {
          "en": [
            "I need to separate chapters or parts of a PDF into different files",
            "I want to send different parts of one PDF to different people"
          ],
          "vi": [
            "Tôi cần tách các chương hoặc phần của một file PDF thành nhiều file",
            "Tôi muốn gửi từng phần của một file PDF cho những người khác nhau"
          ]
        },
        "outcome": {
          "id": "separate-pdfs",
          "summary": {
            "en": "New PDF files: one for each group of neighbouring pages you select, or one for every N pages, or one per page.",
            "vi": "Các file PDF mới: mỗi nhóm trang liền nhau bạn chọn thành một file, hoặc cứ mỗi N trang một file, hoặc mỗi trang một file."
          }
        },
        "audience": {
          "en": "Anyone who needs to separate chapters, pull single pages out of a scan, or send different parts of a document to different people.",
          "vi": "Dành cho bất kỳ ai cần tách chương, lấy riêng vài trang từ bản scan, hoặc gửi từng phần của tài liệu cho những người khác nhau."
        }
      },
      "processingMode": {
        "location": "local",
        "environment": "browser",
        "uploadRequired": false
      },
      "limitations": [
        {
          "type": "encrypted-pdf-unsupported"
        },
        {
          "type": "max-file-bytes",
          "bytes": 104857600,
          "megabytes": 100,
          "status": "provisional"
        }
      ],
      "successCondition": "The output is verified against what Split PDF promises (structure and, for a PDF, its page count) before it is offered: valid PDFs (one per selection) are produced and are available to download, individually or as a ZIP.",
      "useCase": {
        "en": "Anyone who needs to separate chapters, pull single pages out of a scan, or send different parts of a document to different people, for example when \"i need to separate chapters or parts of a PDF into different files\" — and needs: new PDF files: one for each group of neighbouring pages you select, or one for every N pages, or one per page.",
        "vi": "Dành cho bất kỳ ai cần tách chương, lấy riêng vài trang từ bản scan, hoặc gửi từng phần của tài liệu cho những người khác nhau — ví dụ khi \"tôi cần tách các chương hoặc phần của một file PDF thành nhiều file\" — và cần: các file PDF mới: mỗi nhóm trang liền nhau bạn chọn thành một file, hoặc cứ mỗi N trang một file, hoặc mỗi trang một file."
      },
      "semantics": {
        "contexts": [
          "scan",
          "email",
          "archive"
        ],
        "expressions": {
          "en": {
            "canonical": [
              "Split PDF"
            ],
            "intent": [
              "split a PDF into several files",
              "break one PDF into parts"
            ],
            "problem": [
              "one PDF holds several documents that should be separate",
              "the file is too long to send in one piece"
            ],
            "outcome": [
              "separate PDFs, one per part you chose"
            ],
            "context": [
              "split a combined scan into separate documents"
            ]
          },
          "vi": {
            "canonical": [
              "Split PDF"
            ],
            "intent": [
              "tách một file PDF thành nhiều file",
              "chia file PDF thành nhiều phần"
            ],
            "problem": [
              "một file PDF chứa nhiều tài liệu cần tách riêng",
              "file quá dài để gửi một lần"
            ],
            "outcome": [
              "nhiều file PDF riêng, mỗi file một phần bạn chọn"
            ],
            "context": [
              "tách bản scan gộp thành các tài liệu riêng"
            ]
          }
        },
        "suitableWhen": [
          {
            "text": {
              "en": "You want one PDF turned into several PDFs by page ranges",
              "vi": "Bạn muốn biến một PDF thành nhiều PDF theo khoảng trang"
            },
            "evidence": {
              "kind": "capability",
              "ref": "split-by-ranges"
            }
          },
          {
            "text": {
              "en": "You want every page as its own PDF",
              "vi": "Bạn muốn mỗi trang thành một file PDF riêng"
            },
            "evidence": {
              "kind": "capability",
              "ref": "split-each-page"
            }
          }
        ],
        "notSuitableWhen": [
          {
            "text": {
              "en": "You only want to keep a few pages together in ONE new file",
              "vi": "Bạn chỉ muốn giữ vài trang trong MỘT file mới"
            },
            "evidence": {
              "kind": "capability",
              "ref": "keep-pages",
              "of": "extract"
            },
            "useInstead": "extract"
          },
          {
            "text": {
              "en": "You need bookmarks, form fields or internal links to survive in the result",
              "vi": "Bạn cần giữ lại dấu trang (bookmark), trường biểu mẫu hoặc liên kết nội bộ trong kết quả"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Bookmarks, form fields and internal links from the original"
            }
          },
          {
            "text": {
              "en": "The PDF is password-protected (encrypted)",
              "vi": "File PDF có mật khẩu (được mã hoá)"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Encrypted PDFs are not supported yet"
            }
          }
        ]
      }
    },
    {
      "id": "jpg2pdf",
      "canonicalName": "JPG to PDF",
      "intent": {
        "id": "images-to-document",
        "summary": "Turn images into one PDF"
      },
      "family": "convert",
      "input": {
        "types": [
          "jpg",
          "png"
        ],
        "multiple": true,
        "min": 1
      },
      "output": {
        "type": "pdf",
        "count": "one"
      },
      "capabilities": [
        "images-to-pages",
        "set-page-size",
        "set-orientation",
        "set-margin"
      ],
      "relatedTools": [
        "reorder",
        "rotate",
        "compress",
        "watermark",
        "merge"
      ],
      "inverseTool": "pdf2jpg",
      "aliases": {
        "en": [],
        "vi": []
      },
      "names": {
        "en": "JPG to PDF",
        "vi": "JPG sang PDF"
      },
      "descriptions": {
        "en": "Turn JPG or PNG images into a single PDF.",
        "vi": "Chuyển ảnh JPG, PNG thành một file PDF."
      },
      "urls": {
        "en": "https://pdfvie.com/jpg-to-pdf",
        "vi": "https://pdfvie.com/vi/jpg-to-pdf"
      },
      "experience": {
        "intent": {
          "en": "Turn images into one PDF",
          "vi": "Chuyển ảnh thành một file PDF"
        },
        "problems": {
          "en": [
            "I have photos or screenshots and need them in one PDF",
            "I need to turn pictures of receipts or documents into a PDF"
          ],
          "vi": [
            "Tôi có ảnh chụp hoặc ảnh màn hình và cần đưa chúng vào một file PDF",
            "Tôi cần chuyển ảnh hoá đơn hoặc giấy tờ thành PDF"
          ]
        },
        "outcome": {
          "id": "images-as-pdf",
          "summary": {
            "en": "One PDF with each image on its own page, in the order you set.",
            "vi": "Một file PDF trong đó mỗi ảnh nằm trên một trang, theo thứ tự bạn sắp xếp."
          }
        },
        "audience": {
          "en": "Anyone turning photos, scans or screenshots into a document — receipts, homework, ID copies, drawings.",
          "vi": "Dành cho ai muốn biến ảnh chụp, bản scan hoặc ảnh chụp màn hình thành tài liệu — biên lai, bài tập, bản sao giấy tờ, bản vẽ."
        }
      },
      "processingMode": {
        "location": "local",
        "environment": "browser",
        "uploadRequired": false
      },
      "limitations": [
        {
          "type": "max-file-bytes",
          "bytes": 104857600,
          "megabytes": 100,
          "status": "provisional"
        },
        {
          "type": "max-files",
          "count": 20,
          "status": "provisional"
        },
        {
          "type": "max-total-bytes",
          "bytes": 314572800,
          "megabytes": 300,
          "status": "provisional"
        }
      ],
      "successCondition": "The output is verified against what JPG to PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
      "useCase": {
        "en": "Anyone turning photos, scans or screenshots into a document — receipts, homework, ID copies, drawings, for example when \"i have photos or screenshots and need them in one PDF\" — and needs: one PDF with each image on its own page, in the order you set.",
        "vi": "Dành cho ai muốn biến ảnh chụp, bản scan hoặc ảnh chụp màn hình thành tài liệu — biên lai, bài tập, bản sao giấy tờ, bản vẽ — ví dụ khi \"tôi có ảnh chụp hoặc ảnh màn hình và cần đưa chúng vào một file PDF\" — và cần: một file PDF trong đó mỗi ảnh nằm trên một trang, theo thứ tự bạn sắp xếp."
      },
      "semantics": {
        "contexts": [
          "scan",
          "upload",
          "submission"
        ],
        "expressions": {
          "en": {
            "canonical": [
              "JPG to PDF"
            ],
            "intent": [
              "turn photos into a PDF",
              "convert images to a PDF document"
            ],
            "problem": [
              "I photographed a document and need it as a PDF",
              "the form only accepts PDF but I have pictures"
            ],
            "outcome": [
              "one PDF made from my images, one per page"
            ],
            "context": [
              "make a PDF from phone photos of a paper document"
            ]
          },
          "vi": {
            "canonical": [
              "JPG to PDF"
            ],
            "intent": [
              "chuyển ảnh thành file PDF",
              "đổi hình ảnh sang tài liệu PDF"
            ],
            "problem": [
              "tôi chụp ảnh giấy tờ và cần file PDF",
              "biểu mẫu chỉ nhận PDF nhưng tôi chỉ có ảnh"
            ],
            "outcome": [
              "một file PDF từ các ảnh của tôi, mỗi ảnh một trang"
            ],
            "context": [
              "tạo PDF từ ảnh chụp giấy tờ bằng điện thoại"
            ]
          }
        },
        "suitableWhen": [
          {
            "text": {
              "en": "You have JPG or PNG images that should become PDF pages",
              "vi": "Bạn có ảnh JPG hoặc PNG cần thành các trang PDF"
            },
            "evidence": {
              "kind": "input",
              "ref": "jpg"
            }
          }
        ],
        "notSuitableWhen": [
          {
            "text": {
              "en": "Your images are HEIC, WebP or GIF",
              "vi": "Ảnh của bạn ở định dạng HEIC, WebP hoặc GIF"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "no HEIC, WebP or GIF yet"
            }
          },
          {
            "text": {
              "en": "You need the text in the photos to become searchable or selectable",
              "vi": "Bạn cần chữ trong ảnh có thể tìm kiếm hoặc chọn được"
            },
            "evidence": {
              "kind": "absent",
              "ref": "ocr"
            }
          }
        ]
      }
    },
    {
      "id": "pdf2jpg",
      "canonicalName": "PDF to JPG",
      "intent": {
        "id": "document-to-images",
        "summary": "Turn PDF pages into images"
      },
      "family": "convert",
      "input": {
        "types": [
          "pdf"
        ],
        "multiple": false,
        "min": 1
      },
      "output": {
        "type": "jpg",
        "count": "per-page"
      },
      "capabilities": [
        "render-pages",
        "set-resolution",
        "set-quality",
        "select-pages"
      ],
      "relatedTools": [],
      "inverseTool": "jpg2pdf",
      "aliases": {
        "en": [],
        "vi": []
      },
      "names": {
        "en": "PDF to JPG",
        "vi": "PDF sang JPG"
      },
      "descriptions": {
        "en": "Turn each PDF page into a JPG image.",
        "vi": "Chuyển từng trang PDF thành ảnh JPG."
      },
      "urls": {
        "en": "https://pdfvie.com/pdf-to-jpg",
        "vi": "https://pdfvie.com/vi/pdf-to-jpg"
      },
      "experience": {
        "intent": {
          "en": "Turn PDF pages into images",
          "vi": "Chuyển các trang PDF thành ảnh"
        },
        "problems": {
          "en": [
            "I need a PDF page as a picture",
            "I want to share a PDF page where PDF files are not accepted"
          ],
          "vi": [
            "Tôi cần một trang PDF dưới dạng ảnh",
            "Tôi muốn chia sẻ một trang PDF ở nơi không nhận file PDF"
          ]
        },
        "outcome": {
          "id": "page-images",
          "summary": {
            "en": "JPG images of the pages you choose, packed into a ZIP when there are several.",
            "vi": "Ảnh JPG của các trang bạn chọn, đóng gói thành ZIP khi có nhiều ảnh."
          }
        },
        "audience": {
          "en": "Anyone who needs a page as a picture — for slides, social posts, chats, or places that do not accept PDF.",
          "vi": "Dành cho ai cần một trang dưới dạng ảnh — để chèn vào slide, đăng mạng xã hội, gửi qua chat hoặc những nơi không nhận PDF."
        }
      },
      "processingMode": {
        "location": "local",
        "environment": "browser",
        "uploadRequired": false
      },
      "limitations": [
        {
          "type": "encrypted-pdf-unsupported"
        },
        {
          "type": "max-file-bytes",
          "bytes": 104857600,
          "megabytes": 100,
          "status": "provisional"
        }
      ],
      "successCondition": "The output is verified against what PDF to JPG promises (structure and, for a PDF, its page count) before it is offered: valid JPG images (one per selected page) are produced and are available to download, individually or as a ZIP.",
      "useCase": {
        "en": "Anyone who needs a page as a picture — for slides, social posts, chats, or places that do not accept PDF, for example when \"i need a PDF page as a picture\" — and needs: jPG images of the pages you choose, packed into a ZIP when there are several.",
        "vi": "Dành cho ai cần một trang dưới dạng ảnh — để chèn vào slide, đăng mạng xã hội, gửi qua chat hoặc những nơi không nhận PDF — ví dụ khi \"tôi cần một trang PDF dưới dạng ảnh\" — và cần: ảnh JPG của các trang bạn chọn, đóng gói thành ZIP khi có nhiều ảnh."
      },
      "semantics": {
        "contexts": [
          "share",
          "presentation"
        ],
        "expressions": {
          "en": {
            "canonical": [
              "PDF to JPG"
            ],
            "intent": [
              "save PDF pages as pictures",
              "turn a PDF page into an image"
            ],
            "problem": [
              "the site I post to does not accept PDF files",
              "I need a page as a picture for a slide"
            ],
            "outcome": [
              "JPG images of the pages I chose"
            ],
            "context": [
              "share one page of a PDF as a photo in a chat"
            ]
          },
          "vi": {
            "canonical": [
              "PDF to JPG"
            ],
            "intent": [
              "lưu các trang PDF thành ảnh",
              "chuyển một trang PDF thành hình ảnh"
            ],
            "problem": [
              "trang web tôi đăng không nhận file PDF",
              "tôi cần một trang dưới dạng ảnh để đưa vào slide"
            ],
            "outcome": [
              "ảnh JPG của các trang tôi chọn"
            ],
            "context": [
              "chia sẻ một trang PDF dưới dạng ảnh trong tin nhắn"
            ]
          }
        },
        "suitableWhen": [
          {
            "text": {
              "en": "You want small, widely supported images of PDF pages",
              "vi": "Bạn muốn ảnh nhẹ, phổ biến của các trang PDF"
            },
            "evidence": {
              "kind": "output",
              "ref": "jpg"
            }
          }
        ],
        "notSuitableWhen": [
          {
            "text": {
              "en": "Text and fine lines must stay perfectly sharp (JPG compresses)",
              "vi": "Chữ và nét mảnh phải giữ sắc nét tuyệt đối (JPG có nén)"
            },
            "evidence": {
              "kind": "output",
              "ref": "png",
              "of": "pdf2png"
            },
            "useInstead": "pdf2png"
          },
          {
            "text": {
              "en": "You want to edit the text of the PDF",
              "vi": "Bạn muốn chỉnh sửa chữ trong PDF"
            },
            "evidence": {
              "kind": "absent",
              "ref": "edit-text"
            }
          },
          {
            "text": {
              "en": "The PDF is password-protected (encrypted)",
              "vi": "File PDF có mật khẩu (được mã hoá)"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Encrypted PDFs are not supported yet"
            }
          }
        ]
      }
    },
    {
      "id": "pdf2png",
      "canonicalName": "PDF to PNG",
      "intent": {
        "id": "document-to-lossless-images",
        "summary": "Turn PDF pages into lossless PNG images"
      },
      "family": "convert",
      "input": {
        "types": [
          "pdf"
        ],
        "multiple": false,
        "min": 1
      },
      "output": {
        "type": "png",
        "count": "per-page"
      },
      "capabilities": [
        "render-pages",
        "set-resolution",
        "select-pages"
      ],
      "relatedTools": [],
      "inverseTool": null,
      "aliases": {
        "en": [],
        "vi": []
      },
      "names": {
        "en": "PDF to PNG",
        "vi": "PDF sang PNG"
      },
      "descriptions": {
        "en": "Turn each PDF page into a lossless PNG image.",
        "vi": "Chuyển từng trang PDF thành ảnh PNG không mất chi tiết."
      },
      "urls": {
        "en": "https://pdfvie.com/pdf-to-png",
        "vi": "https://pdfvie.com/vi/pdf-to-png"
      },
      "experience": {
        "intent": {
          "en": "Turn PDF pages into lossless PNG images",
          "vi": "Chuyển các trang PDF thành ảnh PNG không mất nét"
        },
        "problems": {
          "en": [
            "A JPG version of my PDF page has visible compression artifacts around text or diagrams",
            "I need a page as a picture with a transparent or perfectly sharp background"
          ],
          "vi": [
            "Ảnh JPG của trang PDF bị mờ hoặc lộ vết nén quanh chữ và biểu đồ",
            "Tôi cần ảnh của một trang PDF có nền trong suốt hoặc thật sắc nét"
          ]
        },
        "outcome": {
          "id": "page-images-lossless",
          "summary": {
            "en": "PNG images of the pages you choose, with no compression loss, packed into a ZIP when there are several.",
            "vi": "Ảnh PNG của các trang bạn chọn, không mất chi tiết do nén, đóng gói thành ZIP khi có nhiều ảnh."
          }
        },
        "audience": {
          "en": "Anyone who needs the sharpest possible picture of a page — diagrams, screenshots, or text-heavy pages where JPG's compression would blur fine detail.",
          "vi": "Dành cho ai cần ảnh sắc nét nhất có thể của một trang — biểu đồ, ảnh chụp màn hình, hoặc trang nhiều chữ mà việc nén JPG có thể làm mờ chi tiết."
        }
      },
      "processingMode": {
        "location": "local",
        "environment": "browser",
        "uploadRequired": false
      },
      "limitations": [
        {
          "type": "encrypted-pdf-unsupported"
        },
        {
          "type": "max-file-bytes",
          "bytes": 104857600,
          "megabytes": 100,
          "status": "provisional"
        }
      ],
      "successCondition": "The output is verified against what PDF to PNG promises (structure and, for a PDF, its page count) before it is offered: valid PNG images (one per selected page) are produced and are available to download, individually or as a ZIP.",
      "useCase": {
        "en": "Anyone who needs the sharpest possible picture of a page — diagrams, screenshots, or text-heavy pages where JPG's compression would blur fine detail, for example when \"a JPG version of my PDF page has visible compression artifacts around text or diagrams\" — and needs: pNG images of the pages you choose, with no compression loss, packed into a ZIP when there are several.",
        "vi": "Dành cho ai cần ảnh sắc nét nhất có thể của một trang — biểu đồ, ảnh chụp màn hình, hoặc trang nhiều chữ mà việc nén JPG có thể làm mờ chi tiết — ví dụ khi \"ảnh JPG của trang PDF bị mờ hoặc lộ vết nén quanh chữ và biểu đồ\" — và cần: ảnh PNG của các trang bạn chọn, không mất chi tiết do nén, đóng gói thành ZIP khi có nhiều ảnh."
      },
      "semantics": {
        "contexts": [
          "presentation",
          "share"
        ],
        "expressions": {
          "en": {
            "canonical": [
              "PDF to PNG"
            ],
            "intent": [
              "save PDF pages as sharp PNG images",
              "convert a PDF page to PNG"
            ],
            "problem": [
              "my JPG of a PDF page looks blurry around the text",
              "a diagram needs to stay crisp as an image"
            ],
            "outcome": [
              "lossless PNG images of the pages I chose"
            ],
            "context": [
              "put a crisp chart from a PDF into a presentation"
            ]
          },
          "vi": {
            "canonical": [
              "PDF to PNG"
            ],
            "intent": [
              "lưu trang PDF thành ảnh PNG sắc nét",
              "chuyển trang PDF sang PNG"
            ],
            "problem": [
              "ảnh JPG của trang PDF bị mờ quanh chữ",
              "một sơ đồ cần giữ nét khi thành ảnh"
            ],
            "outcome": [
              "ảnh PNG không mất chi tiết của các trang tôi chọn"
            ],
            "context": [
              "đưa biểu đồ sắc nét từ PDF vào bài thuyết trình"
            ]
          }
        },
        "suitableWhen": [
          {
            "text": {
              "en": "Text, diagrams or screenshots must stay sharp in the image",
              "vi": "Chữ, sơ đồ hoặc ảnh chụp màn hình phải giữ sắc nét"
            },
            "evidence": {
              "kind": "output",
              "ref": "png"
            }
          }
        ],
        "notSuitableWhen": [
          {
            "text": {
              "en": "The pages are mostly photos and a small file matters more than perfect sharpness",
              "vi": "Các trang chủ yếu là ảnh chụp và file nhẹ quan trọng hơn độ nét tuyệt đối"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "PNG files are larger than JPG"
            },
            "useInstead": "pdf2jpg"
          },
          {
            "text": {
              "en": "The PDF is password-protected (encrypted)",
              "vi": "File PDF có mật khẩu (được mã hoá)"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Encrypted PDFs are not supported yet"
            }
          }
        ]
      }
    },
    {
      "id": "rotate",
      "canonicalName": "Rotate PDF",
      "intent": {
        "id": "rotate-pages",
        "summary": "Turn pages of a PDF to the right orientation"
      },
      "family": "organize",
      "input": {
        "types": [
          "pdf"
        ],
        "multiple": false,
        "min": 1
      },
      "output": {
        "type": "pdf",
        "count": "one"
      },
      "capabilities": [
        "rotate-pages",
        "per-page-rotation"
      ],
      "relatedTools": [
        "delete",
        "duplicate",
        "insert",
        "reorder",
        "extract",
        "compress",
        "watermark",
        "merge"
      ],
      "inverseTool": null,
      "aliases": {
        "en": [],
        "vi": []
      },
      "names": {
        "en": "Rotate PDF",
        "vi": "Xoay PDF"
      },
      "descriptions": {
        "en": "Rotate PDF pages the right way up.",
        "vi": "Xoay các trang PDF về đúng chiều."
      },
      "urls": {
        "en": "https://pdfvie.com/rotate-pdf",
        "vi": "https://pdfvie.com/vi/rotate-pdf"
      },
      "experience": {
        "intent": {
          "en": "Turn pages of a PDF to the right orientation",
          "vi": "Xoay các trang PDF về đúng hướng"
        },
        "problems": {
          "en": [
            "My scanned PDF is sideways or upside down",
            "Some pages of my PDF are turned the wrong way"
          ],
          "vi": [
            "File PDF scan của tôi bị nằm ngang hoặc bị ngược",
            "Một số trang trong file PDF của tôi bị xoay sai hướng"
          ]
        },
        "outcome": {
          "id": "rotated-pdf",
          "summary": {
            "en": "The same document with the pages you chose turned the right way up.",
            "vi": "Chính tài liệu đó với các trang bạn chọn đã được xoay đúng hướng."
          }
        },
        "audience": {
          "en": "Anyone who received a scan that is sideways or upside down and wants it to open the right way up.",
          "vi": "Dành cho ai nhận được bản scan bị nằm ngang hay ngược đầu và muốn mở ra đúng chiều."
        }
      },
      "processingMode": {
        "location": "local",
        "environment": "browser",
        "uploadRequired": false
      },
      "limitations": [
        {
          "type": "encrypted-pdf-unsupported"
        },
        {
          "type": "max-file-bytes",
          "bytes": 104857600,
          "megabytes": 100,
          "status": "provisional"
        }
      ],
      "successCondition": "The output is verified against what Rotate PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
      "useCase": {
        "en": "Anyone who received a scan that is sideways or upside down and wants it to open the right way up, for example when \"my scanned PDF is sideways or upside down\" — and needs: the same document with the pages you chose turned the right way up.",
        "vi": "Dành cho ai nhận được bản scan bị nằm ngang hay ngược đầu và muốn mở ra đúng chiều — ví dụ khi \"file PDF scan của tôi bị nằm ngang hoặc bị ngược\" — và cần: chính tài liệu đó với các trang bạn chọn đã được xoay đúng hướng."
      },
      "semantics": {
        "contexts": [
          "scan",
          "print"
        ],
        "expressions": {
          "en": {
            "canonical": [
              "Rotate PDF"
            ],
            "intent": [
              "turn PDF pages the right way up",
              "rotate some pages of a PDF"
            ],
            "problem": [
              "some scanned pages are sideways",
              "a page in my PDF is upside down"
            ],
            "outcome": [
              "the same PDF with every page the right way up"
            ],
            "context": [
              "fix sideways pages in a scan before printing"
            ]
          },
          "vi": {
            "canonical": [
              "Rotate PDF"
            ],
            "intent": [
              "xoay trang PDF cho đúng chiều",
              "xoay một số trang trong PDF"
            ],
            "problem": [
              "vài trang scan bị nằm ngang",
              "một trang trong PDF bị lộn ngược"
            ],
            "outcome": [
              "chính file PDF đó với mọi trang đúng chiều"
            ],
            "context": [
              "sửa trang scan bị xoay trước khi in"
            ]
          }
        },
        "suitableWhen": [
          {
            "text": {
              "en": "Some or all pages face the wrong way",
              "vi": "Một số hoặc tất cả các trang bị sai chiều"
            },
            "evidence": {
              "kind": "capability",
              "ref": "per-page-rotation"
            }
          },
          {
            "text": {
              "en": "Bookmarks and links must be kept",
              "vi": "Cần giữ nguyên dấu trang và liên kết"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "bookmarks and links are kept"
            }
          }
        ],
        "notSuitableWhen": [
          {
            "text": {
              "en": "The PDF is password-protected (encrypted)",
              "vi": "File PDF có mật khẩu (được mã hoá)"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Encrypted PDFs are not supported yet"
            }
          }
        ]
      }
    },
    {
      "id": "delete",
      "canonicalName": "Delete PDF pages",
      "intent": {
        "id": "remove-pages",
        "summary": "Remove unwanted pages from a PDF"
      },
      "family": "organize",
      "input": {
        "types": [
          "pdf"
        ],
        "multiple": false,
        "min": 1
      },
      "output": {
        "type": "pdf",
        "count": "one"
      },
      "capabilities": [
        "remove-pages",
        "select-pages"
      ],
      "relatedTools": [
        "rotate",
        "duplicate",
        "insert",
        "reorder",
        "extract",
        "compress",
        "watermark",
        "merge"
      ],
      "inverseTool": null,
      "aliases": {
        "en": [],
        "vi": []
      },
      "names": {
        "en": "Delete PDF pages",
        "vi": "Xoá trang PDF"
      },
      "descriptions": {
        "en": "Remove the pages you do not need.",
        "vi": "Bỏ những trang bạn không cần khỏi file PDF."
      },
      "urls": {
        "en": "https://pdfvie.com/delete-pdf-pages",
        "vi": "https://pdfvie.com/vi/delete-pdf-pages"
      },
      "experience": {
        "intent": {
          "en": "Remove unwanted pages from a PDF",
          "vi": "Bỏ những trang không cần khỏi file PDF"
        },
        "problems": {
          "en": [
            "I need to remove blank or unwanted pages from a PDF",
            "I want to remove pages with private information before sharing"
          ],
          "vi": [
            "Tôi cần bỏ các trang trắng hoặc không cần thiết khỏi file PDF",
            "Tôi muốn xoá những trang có thông tin riêng tư trước khi chia sẻ"
          ]
        },
        "outcome": {
          "id": "pdf-without-pages",
          "summary": {
            "en": "A new PDF without the pages you removed.",
            "vi": "File PDF mới không còn các trang bạn đã xoá."
          }
        },
        "audience": {
          "en": "Anyone cleaning up a document before sharing it — blank pages, cover sheets, pages with private information.",
          "vi": "Dành cho ai muốn dọn tài liệu trước khi chia sẻ — trang trắng, trang bìa, trang chứa thông tin riêng tư."
        }
      },
      "processingMode": {
        "location": "local",
        "environment": "browser",
        "uploadRequired": false
      },
      "limitations": [
        {
          "type": "encrypted-pdf-unsupported"
        },
        {
          "type": "max-file-bytes",
          "bytes": 104857600,
          "megabytes": 100,
          "status": "provisional"
        }
      ],
      "successCondition": "The output is verified against what Delete PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
      "useCase": {
        "en": "Anyone cleaning up a document before sharing it — blank pages, cover sheets, pages with private information, for example when \"i need to remove blank or unwanted pages from a PDF\" — and needs: a new PDF without the pages you removed.",
        "vi": "Dành cho ai muốn dọn tài liệu trước khi chia sẻ — trang trắng, trang bìa, trang chứa thông tin riêng tư — ví dụ khi \"tôi cần bỏ các trang trắng hoặc không cần thiết khỏi file PDF\" — và cần: file PDF mới không còn các trang bạn đã xoá."
      },
      "semantics": {
        "contexts": [
          "share",
          "scan"
        ],
        "expressions": {
          "en": {
            "canonical": [
              "Delete PDF pages"
            ],
            "intent": [
              "remove pages from a PDF",
              "delete blank or unwanted pages"
            ],
            "problem": [
              "my PDF has blank pages from the scanner",
              "there are pages I must not send"
            ],
            "outcome": [
              "the PDF without the pages I removed"
            ],
            "context": [
              "remove private pages before sharing a document"
            ]
          },
          "vi": {
            "canonical": [
              "Delete PDF pages"
            ],
            "intent": [
              "xoá trang khỏi file PDF",
              "xoá các trang trắng hoặc không cần"
            ],
            "problem": [
              "file PDF có trang trắng do máy scan",
              "có vài trang tôi không được gửi đi"
            ],
            "outcome": [
              "file PDF không còn các trang đã xoá"
            ],
            "context": [
              "xoá trang riêng tư trước khi chia sẻ tài liệu"
            ]
          }
        },
        "suitableWhen": [
          {
            "text": {
              "en": "You know which pages to take out, and want the rest kept in order",
              "vi": "Bạn biết cần bỏ trang nào và muốn giữ các trang còn lại theo thứ tự"
            },
            "evidence": {
              "kind": "capability",
              "ref": "remove-pages"
            }
          }
        ],
        "notSuitableWhen": [
          {
            "text": {
              "en": "You need bookmarks, form fields or internal links to survive in the result",
              "vi": "Bạn cần giữ lại dấu trang (bookmark), trường biểu mẫu hoặc liên kết nội bộ trong kết quả"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Bookmarks, form fields and internal links from the original"
            }
          },
          {
            "text": {
              "en": "The PDF is password-protected (encrypted)",
              "vi": "File PDF có mật khẩu (được mã hoá)"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Encrypted PDFs are not supported yet"
            }
          }
        ]
      }
    },
    {
      "id": "reorder",
      "canonicalName": "Reorder PDF pages",
      "intent": {
        "id": "reorder-pages",
        "summary": "Change the order of the pages in a PDF"
      },
      "family": "organize",
      "input": {
        "types": [
          "pdf"
        ],
        "multiple": false,
        "min": 1
      },
      "output": {
        "type": "pdf",
        "count": "one"
      },
      "capabilities": [
        "reorder-pages"
      ],
      "relatedTools": [
        "rotate",
        "delete",
        "duplicate",
        "insert",
        "extract",
        "compress",
        "watermark",
        "merge"
      ],
      "inverseTool": null,
      "aliases": {
        "en": [],
        "vi": []
      },
      "names": {
        "en": "Reorder PDF pages",
        "vi": "Sắp xếp trang PDF"
      },
      "descriptions": {
        "en": "Change the order of pages in a PDF.",
        "vi": "Đổi thứ tự các trang trong file PDF."
      },
      "urls": {
        "en": "https://pdfvie.com/reorder-pdf",
        "vi": "https://pdfvie.com/vi/reorder-pdf"
      },
      "experience": {
        "intent": {
          "en": "Change the order of the pages in a PDF",
          "vi": "Đổi thứ tự các trang trong file PDF"
        },
        "problems": {
          "en": [
            "The pages of my PDF are in the wrong order",
            "I need to rearrange the pages of a scanned document"
          ],
          "vi": [
            "Các trang trong file PDF của tôi bị sai thứ tự",
            "Tôi cần sắp xếp lại thứ tự các trang của tài liệu đã scan"
          ]
        },
        "outcome": {
          "id": "reordered-pdf",
          "summary": {
            "en": "A new PDF with its pages in the order you set.",
            "vi": "File PDF mới với các trang theo thứ tự bạn sắp xếp."
          }
        },
        "audience": {
          "en": "Anyone whose pages came out in the wrong order — scans done out of sequence, merged documents, presentations.",
          "vi": "Dành cho ai có các trang bị sai thứ tự — bản scan không theo trình tự, tài liệu đã gộp, bài thuyết trình."
        }
      },
      "processingMode": {
        "location": "local",
        "environment": "browser",
        "uploadRequired": false
      },
      "limitations": [
        {
          "type": "encrypted-pdf-unsupported"
        },
        {
          "type": "max-file-bytes",
          "bytes": 104857600,
          "megabytes": 100,
          "status": "provisional"
        }
      ],
      "successCondition": "The output is verified against what Reorder PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
      "useCase": {
        "en": "Anyone whose pages came out in the wrong order — scans done out of sequence, merged documents, presentations, for example when \"the pages of my PDF are in the wrong order\" — and needs: a new PDF with its pages in the order you set.",
        "vi": "Dành cho ai có các trang bị sai thứ tự — bản scan không theo trình tự, tài liệu đã gộp, bài thuyết trình — ví dụ khi \"các trang trong file PDF của tôi bị sai thứ tự\" — và cần: file PDF mới với các trang theo thứ tự bạn sắp xếp."
      },
      "semantics": {
        "contexts": [
          "scan",
          "submission"
        ],
        "expressions": {
          "en": {
            "canonical": [
              "Reorder PDF pages"
            ],
            "intent": [
              "change the order of pages in a PDF",
              "move pages around in a PDF"
            ],
            "problem": [
              "the pages of my scan are in the wrong order",
              "the appendix ended up in the middle"
            ],
            "outcome": [
              "the same pages in the order I set"
            ],
            "context": [
              "put scanned pages in order before submitting"
            ]
          },
          "vi": {
            "canonical": [
              "Reorder PDF pages"
            ],
            "intent": [
              "đổi thứ tự trang trong PDF",
              "di chuyển các trang trong file PDF"
            ],
            "problem": [
              "các trang scan bị sai thứ tự",
              "phần phụ lục bị nằm ở giữa"
            ],
            "outcome": [
              "các trang giữ nguyên, theo thứ tự tôi sắp"
            ],
            "context": [
              "sắp lại trang scan trước khi nộp"
            ]
          }
        },
        "suitableWhen": [
          {
            "text": {
              "en": "All the pages are already in one PDF and only their order is wrong",
              "vi": "Tất cả các trang đã ở trong một PDF, chỉ sai thứ tự"
            },
            "evidence": {
              "kind": "capability",
              "ref": "reorder-pages"
            }
          }
        ],
        "notSuitableWhen": [
          {
            "text": {
              "en": "Pages from another file must be added in",
              "vi": "Cần thêm trang từ một file khác vào"
            },
            "evidence": {
              "kind": "capability",
              "ref": "combine-pdf",
              "of": "merge"
            },
            "useInstead": "merge"
          },
          {
            "text": {
              "en": "You need bookmarks, form fields or internal links to survive in the result",
              "vi": "Bạn cần giữ lại dấu trang (bookmark), trường biểu mẫu hoặc liên kết nội bộ trong kết quả"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Bookmarks, form fields and internal links from the original"
            }
          },
          {
            "text": {
              "en": "The PDF is password-protected (encrypted)",
              "vi": "File PDF có mật khẩu (được mã hoá)"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Encrypted PDFs are not supported yet"
            }
          }
        ]
      }
    },
    {
      "id": "extract",
      "canonicalName": "Extract PDF pages",
      "intent": {
        "id": "select-pages",
        "summary": "Keep only the chosen pages of a PDF as a new PDF"
      },
      "family": "organize",
      "input": {
        "types": [
          "pdf"
        ],
        "multiple": false,
        "min": 1
      },
      "output": {
        "type": "pdf",
        "count": "one"
      },
      "capabilities": [
        "select-pages",
        "keep-pages"
      ],
      "relatedTools": [
        "rotate",
        "delete",
        "reorder",
        "compress",
        "watermark",
        "merge"
      ],
      "inverseTool": null,
      "aliases": {
        "en": [],
        "vi": []
      },
      "names": {
        "en": "Extract PDF pages",
        "vi": "Trích xuất trang PDF"
      },
      "descriptions": {
        "en": "Pull the pages you need into a new file.",
        "vi": "Lấy riêng những trang bạn cần thành file mới."
      },
      "urls": {
        "en": "https://pdfvie.com/extract-pdf-pages",
        "vi": "https://pdfvie.com/vi/extract-pdf-pages"
      },
      "experience": {
        "intent": {
          "en": "Keep only the chosen pages of a PDF as a new PDF",
          "vi": "Chỉ giữ các trang đã chọn thành một file PDF mới"
        },
        "problems": {
          "en": [
            "I only need a few pages from a PDF",
            "I want to save one chapter or one invoice from a large PDF as its own file"
          ],
          "vi": [
            "Tôi chỉ cần vài trang trong một file PDF",
            "Tôi muốn lưu riêng một chương hoặc một hoá đơn từ file PDF lớn"
          ]
        },
        "outcome": {
          "id": "extracted-pdf",
          "summary": {
            "en": "A new PDF containing only the pages you selected, in their original order.",
            "vi": "File PDF mới chỉ gồm các trang bạn đã chọn, giữ nguyên thứ tự gốc."
          }
        },
        "audience": {
          "en": "Anyone who needs only part of a document — one chapter, an invoice out of a bundle, a few signed pages.",
          "vi": "Dành cho ai chỉ cần một phần tài liệu — một chương, một hoá đơn trong cả tập, vài trang đã ký."
        }
      },
      "processingMode": {
        "location": "local",
        "environment": "browser",
        "uploadRequired": false
      },
      "limitations": [
        {
          "type": "encrypted-pdf-unsupported"
        },
        {
          "type": "max-file-bytes",
          "bytes": 104857600,
          "megabytes": 100,
          "status": "provisional"
        }
      ],
      "successCondition": "The output is verified against what Extract PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
      "useCase": {
        "en": "Anyone who needs only part of a document — one chapter, an invoice out of a bundle, a few signed pages, for example when \"i only need a few pages from a PDF\" — and needs: a new PDF containing only the pages you selected, in their original order.",
        "vi": "Dành cho ai chỉ cần một phần tài liệu — một chương, một hoá đơn trong cả tập, vài trang đã ký — ví dụ khi \"tôi chỉ cần vài trang trong một file PDF\" — và cần: file PDF mới chỉ gồm các trang bạn đã chọn, giữ nguyên thứ tự gốc."
      },
      "semantics": {
        "contexts": [
          "share",
          "email"
        ],
        "expressions": {
          "en": {
            "canonical": [
              "Extract PDF pages"
            ],
            "intent": [
              "keep only some pages of a PDF",
              "save chosen pages as a new PDF"
            ],
            "problem": [
              "I only need one chapter of a long PDF",
              "I need a single invoice out of a big statement"
            ],
            "outcome": [
              "a new PDF with only the pages I picked"
            ],
            "context": [
              "send only the relevant pages of a contract"
            ]
          },
          "vi": {
            "canonical": [
              "Extract PDF pages"
            ],
            "intent": [
              "chỉ giữ một số trang của PDF",
              "lưu các trang đã chọn thành PDF mới"
            ],
            "problem": [
              "tôi chỉ cần một chương trong file PDF dài",
              "tôi cần một hoá đơn trong bản sao kê lớn"
            ],
            "outcome": [
              "file PDF mới chỉ gồm các trang tôi chọn"
            ],
            "context": [
              "chỉ gửi các trang liên quan của hợp đồng"
            ]
          }
        },
        "suitableWhen": [
          {
            "text": {
              "en": "You want a handful of pages together in one new PDF",
              "vi": "Bạn muốn vài trang gộp chung trong một PDF mới"
            },
            "evidence": {
              "kind": "capability",
              "ref": "keep-pages"
            }
          }
        ],
        "notSuitableWhen": [
          {
            "text": {
              "en": "You want each page saved as a separate file",
              "vi": "Bạn muốn mỗi trang thành một file riêng"
            },
            "evidence": {
              "kind": "capability",
              "ref": "split-each-page",
              "of": "split"
            },
            "useInstead": "split"
          },
          {
            "text": {
              "en": "You need bookmarks, form fields or internal links to survive in the result",
              "vi": "Bạn cần giữ lại dấu trang (bookmark), trường biểu mẫu hoặc liên kết nội bộ trong kết quả"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Bookmarks, form fields and internal links from the original"
            }
          },
          {
            "text": {
              "en": "The PDF is password-protected (encrypted)",
              "vi": "File PDF có mật khẩu (được mã hoá)"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Encrypted PDFs are not supported yet"
            }
          }
        ]
      }
    },
    {
      "id": "duplicate",
      "canonicalName": "Duplicate PDF pages",
      "intent": {
        "id": "duplicate-pages",
        "summary": "Duplicate the chosen pages of a PDF, right after each one"
      },
      "family": "organize",
      "input": {
        "types": [
          "pdf"
        ],
        "multiple": false,
        "min": 1
      },
      "output": {
        "type": "pdf",
        "count": "one"
      },
      "capabilities": [
        "duplicate-pages",
        "select-pages"
      ],
      "relatedTools": [
        "insert",
        "reorder",
        "delete",
        "rotate",
        "watermark",
        "merge"
      ],
      "inverseTool": null,
      "aliases": {
        "en": [],
        "vi": []
      },
      "names": {
        "en": "Duplicate PDF pages",
        "vi": "Nhân bản trang PDF"
      },
      "descriptions": {
        "en": "Duplicate the pages you choose, right after each one.",
        "vi": "Nhân bản các trang bạn chọn, ngay sau mỗi trang gốc."
      },
      "urls": {
        "en": "https://pdfvie.com/duplicate-pdf-pages",
        "vi": "https://pdfvie.com/vi/duplicate-pdf-pages"
      },
      "experience": {
        "intent": {
          "en": "Duplicate the chosen pages of a PDF, right after each one",
          "vi": "Nhân bản các trang đã chọn của một file PDF, ngay sau mỗi trang gốc"
        },
        "problems": {
          "en": [
            "I need two copies of the same page next to each other, for example to fill in twice",
            "A scanned page needs to appear again right after itself before I split the document"
          ],
          "vi": [
            "Tôi cần hai bản của cùng một trang nằm cạnh nhau, ví dụ để điền hai lần",
            "Một trang scan cần xuất hiện lại ngay sau chính nó trước khi tôi tách tài liệu"
          ]
        },
        "outcome": {
          "id": "duplicated-pdf",
          "summary": {
            "en": "The same PDF with a copy of each page you chose placed right after it.",
            "vi": "Chính file PDF đó, có thêm một bản sao của mỗi trang bạn chọn ngay sau trang gốc."
          }
        },
        "audience": {
          "en": "Anyone who needs the same page to appear twice in a row — a form to fill in twice, a cover sheet repeated for two copies, a scanned page duplicated before splitting it out.",
          "vi": "Dành cho ai cần cùng một trang xuất hiện hai lần liên tiếp — một biểu mẫu cần điền hai lần, trang bìa lặp lại cho hai bản, hoặc một trang scan cần nhân đôi trước khi tách ra."
        }
      },
      "processingMode": {
        "location": "local",
        "environment": "browser",
        "uploadRequired": false
      },
      "limitations": [
        {
          "type": "encrypted-pdf-unsupported"
        },
        {
          "type": "max-file-bytes",
          "bytes": 104857600,
          "megabytes": 100,
          "status": "provisional"
        }
      ],
      "successCondition": "The output is verified against what Duplicate PDF pages promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
      "useCase": {
        "en": "Anyone who needs the same page to appear twice in a row — a form to fill in twice, a cover sheet repeated for two copies, a scanned page duplicated before splitting it out, for example when \"i need two copies of the same page next to each other, for example to fill in twice\" — and needs: the same PDF with a copy of each page you chose placed right after it.",
        "vi": "Dành cho ai cần cùng một trang xuất hiện hai lần liên tiếp — một biểu mẫu cần điền hai lần, trang bìa lặp lại cho hai bản, hoặc một trang scan cần nhân đôi trước khi tách ra — ví dụ khi \"tôi cần hai bản của cùng một trang nằm cạnh nhau, ví dụ để điền hai lần\" — và cần: chính file PDF đó, có thêm một bản sao của mỗi trang bạn chọn ngay sau trang gốc."
      },
      "semantics": {
        "contexts": [
          "print"
        ],
        "expressions": {
          "en": {
            "canonical": [
              "Duplicate PDF pages"
            ],
            "intent": [
              "make a copy of a page inside the same PDF",
              "repeat a page right after itself"
            ],
            "problem": [
              "I need the same form page twice",
              "a cover page must appear before each copy"
            ],
            "outcome": [
              "the PDF with the chosen pages doubled in place"
            ],
            "context": [
              "duplicate a form page so it can be filled in twice"
            ]
          },
          "vi": {
            "canonical": [
              "Duplicate PDF pages"
            ],
            "intent": [
              "tạo bản sao của một trang trong cùng file PDF",
              "lặp lại một trang ngay sau chính nó"
            ],
            "problem": [
              "tôi cần cùng một trang biểu mẫu hai lần",
              "trang bìa cần xuất hiện trước mỗi bản"
            ],
            "outcome": [
              "file PDF với các trang đã chọn được nhân đôi tại chỗ"
            ],
            "context": [
              "nhân bản trang biểu mẫu để điền hai lần"
            ]
          }
        },
        "suitableWhen": [
          {
            "text": {
              "en": "One copy of each chosen page, placed right after it, is enough",
              "vi": "Chỉ cần một bản sao của mỗi trang đã chọn, đặt ngay sau trang đó"
            },
            "evidence": {
              "kind": "capability",
              "ref": "duplicate-pages"
            }
          }
        ],
        "notSuitableWhen": [
          {
            "text": {
              "en": "You need several copies of a page in one step",
              "vi": "Bạn cần nhiều bản sao của một trang trong một lần"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Each selected page gets exactly one copy"
            }
          },
          {
            "text": {
              "en": "You need bookmarks, form fields or internal links to survive in the result",
              "vi": "Bạn cần giữ lại dấu trang (bookmark), trường biểu mẫu hoặc liên kết nội bộ trong kết quả"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Bookmarks, form fields and internal links from the original"
            }
          },
          {
            "text": {
              "en": "The PDF is password-protected (encrypted)",
              "vi": "File PDF có mật khẩu (được mã hoá)"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Encrypted PDFs are not supported yet"
            }
          }
        ]
      }
    },
    {
      "id": "insert",
      "canonicalName": "Insert blank PDF page",
      "intent": {
        "id": "insert-blank-page",
        "summary": "Insert a blank page into a PDF, right after a chosen page"
      },
      "family": "organize",
      "input": {
        "types": [
          "pdf"
        ],
        "multiple": false,
        "min": 1
      },
      "output": {
        "type": "pdf",
        "count": "one"
      },
      "capabilities": [
        "insert-blank-page",
        "select-pages"
      ],
      "relatedTools": [
        "duplicate",
        "reorder",
        "watermark",
        "rotate",
        "merge"
      ],
      "inverseTool": null,
      "aliases": {
        "en": [],
        "vi": []
      },
      "names": {
        "en": "Insert blank PDF page",
        "vi": "Chèn trang trống vào PDF"
      },
      "descriptions": {
        "en": "Insert a blank page right after a page you choose.",
        "vi": "Chèn một trang trống ngay sau trang bạn chọn."
      },
      "urls": {
        "en": "https://pdfvie.com/insert-blank-pdf-page",
        "vi": "https://pdfvie.com/vi/insert-blank-pdf-page"
      },
      "experience": {
        "intent": {
          "en": "Insert a blank page into a PDF, right after a chosen page",
          "vi": "Chèn một trang trống vào file PDF, ngay sau một trang bạn chọn"
        },
        "problems": {
          "en": [
            "I need an empty page to write or stamp on later, in a specific spot in the PDF",
            "I want to leave space between two sections of a document before printing it"
          ],
          "vi": [
            "Tôi cần một trang trống để viết hoặc đóng dấu sau này, ở đúng vị trí trong file PDF",
            "Tôi muốn chừa khoảng trống giữa hai phần của tài liệu trước khi in"
          ]
        },
        "outcome": {
          "id": "page-inserted-pdf",
          "summary": {
            "en": "The same PDF with a genuinely blank page added right after each page you chose.",
            "vi": "Chính file PDF đó, có thêm một trang trống thật sự ngay sau mỗi trang bạn chọn."
          }
        },
        "audience": {
          "en": "Anyone who needs empty space at a specific point in a PDF — room to write or stamp something in later, or a separator between two sections before printing.",
          "vi": "Dành cho ai cần khoảng trống ở một vị trí cụ thể trong file PDF — chỗ để viết hoặc đóng dấu sau này, hoặc một trang ngăn cách giữa hai phần trước khi in."
        }
      },
      "processingMode": {
        "location": "local",
        "environment": "browser",
        "uploadRequired": false
      },
      "limitations": [
        {
          "type": "encrypted-pdf-unsupported"
        },
        {
          "type": "max-file-bytes",
          "bytes": 104857600,
          "megabytes": 100,
          "status": "provisional"
        }
      ],
      "successCondition": "The output is verified against what Insert blank PDF page promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
      "useCase": {
        "en": "Anyone who needs empty space at a specific point in a PDF — room to write or stamp something in later, or a separator between two sections before printing, for example when \"i need an empty page to write or stamp on later, in a specific spot in the PDF\" — and needs: the same PDF with a genuinely blank page added right after each page you chose.",
        "vi": "Dành cho ai cần khoảng trống ở một vị trí cụ thể trong file PDF — chỗ để viết hoặc đóng dấu sau này, hoặc một trang ngăn cách giữa hai phần trước khi in — ví dụ khi \"tôi cần một trang trống để viết hoặc đóng dấu sau này, ở đúng vị trí trong file PDF\" — và cần: chính file PDF đó, có thêm một trang trống thật sự ngay sau mỗi trang bạn chọn."
      },
      "semantics": {
        "contexts": [
          "print"
        ],
        "expressions": {
          "en": {
            "canonical": [
              "Insert blank PDF page"
            ],
            "intent": [
              "add an empty page to a PDF",
              "put a blank page between two pages"
            ],
            "problem": [
              "I need space to write notes in the document",
              "two sections need a separator page for printing"
            ],
            "outcome": [
              "the PDF with blank pages where I asked"
            ],
            "context": [
              "add a blank page before printing double-sided"
            ]
          },
          "vi": {
            "canonical": [
              "Insert blank PDF page"
            ],
            "intent": [
              "thêm một trang trống vào PDF",
              "chèn trang trắng giữa hai trang"
            ],
            "problem": [
              "tôi cần chỗ trống để ghi chú trong tài liệu",
              "hai phần cần một trang ngăn cách khi in"
            ],
            "outcome": [
              "file PDF có trang trống ở đúng chỗ tôi muốn"
            ],
            "context": [
              "thêm trang trống trước khi in hai mặt"
            ]
          }
        },
        "suitableWhen": [
          {
            "text": {
              "en": "You need empty pages at specific positions",
              "vi": "Bạn cần trang trống ở những vị trí cụ thể"
            },
            "evidence": {
              "kind": "capability",
              "ref": "insert-blank-page"
            }
          }
        ],
        "notSuitableWhen": [
          {
            "text": {
              "en": "The pages to insert come from another PDF",
              "vi": "Các trang cần chèn đến từ một file PDF khác"
            },
            "evidence": {
              "kind": "capability",
              "ref": "combine-pdf",
              "of": "merge"
            },
            "useInstead": "merge"
          },
          {
            "text": {
              "en": "You need several blank pages in the same spot in one step",
              "vi": "Bạn cần nhiều trang trống ở cùng một chỗ trong một lần"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Each selected page gets exactly one blank page"
            }
          },
          {
            "text": {
              "en": "The PDF is password-protected (encrypted)",
              "vi": "File PDF có mật khẩu (được mã hoá)"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Encrypted PDFs are not supported yet"
            }
          }
        ]
      }
    },
    {
      "id": "watermark",
      "canonicalName": "Watermark PDF",
      "intent": {
        "id": "mark-pages",
        "summary": "Put a text or image watermark on the pages of a PDF"
      },
      "family": "edit",
      "input": {
        "types": [
          "pdf"
        ],
        "multiple": false,
        "min": 1
      },
      "output": {
        "type": "pdf",
        "count": "one"
      },
      "capabilities": [
        "text-watermark",
        "image-watermark",
        "set-opacity",
        "set-rotation",
        "set-position",
        "tile-watermark",
        "page-scope",
        "live-preview"
      ],
      "relatedTools": [
        "compress",
        "rotate",
        "delete",
        "reorder",
        "extract",
        "merge"
      ],
      "inverseTool": null,
      "aliases": {
        "en": [],
        "vi": []
      },
      "names": {
        "en": "Watermark PDF",
        "vi": "Chèn watermark PDF"
      },
      "descriptions": {
        "en": "Add a text or logo watermark to your PDF pages.",
        "vi": "Thêm chữ chìm hoặc logo lên các trang PDF."
      },
      "urls": {
        "en": "https://pdfvie.com/watermark-pdf",
        "vi": "https://pdfvie.com/vi/watermark-pdf"
      },
      "experience": {
        "intent": {
          "en": "Put a text or image watermark on the pages of a PDF",
          "vi": "Đặt watermark chữ hoặc ảnh lên các trang của file PDF"
        },
        "problems": {
          "en": [
            "I want to mark a document as draft or confidential before sharing it",
            "I need to add a logo or text to every page of a PDF"
          ],
          "vi": [
            "Tôi muốn đóng dấu bản nháp hoặc mật lên tài liệu trước khi chia sẻ",
            "Tôi cần thêm logo hoặc chữ chìm lên mọi trang của file PDF"
          ]
        },
        "outcome": {
          "id": "marked-pdf",
          "summary": {
            "en": "The PDF with your text or logo watermark on the pages you chose.",
            "vi": "File PDF có watermark chữ hoặc logo của bạn trên các trang đã chọn."
          }
        },
        "audience": {
          "en": "Anyone who wants to mark a document as a draft, a copy or confidential before sharing it.",
          "vi": "Dành cho ai muốn đánh dấu tài liệu là bản nháp, bản sao hoặc tài liệu mật trước khi chia sẻ."
        }
      },
      "processingMode": {
        "location": "local",
        "environment": "browser",
        "uploadRequired": false
      },
      "limitations": [
        {
          "type": "encrypted-pdf-unsupported"
        },
        {
          "type": "max-file-bytes",
          "bytes": 104857600,
          "megabytes": 100,
          "status": "provisional"
        }
      ],
      "successCondition": "The output is verified against what Watermark PDF promises (structure and, for a PDF, its page count) before it is offered: a valid PDF is produced and is available to download.",
      "useCase": {
        "en": "Anyone who wants to mark a document as a draft, a copy or confidential before sharing it, for example when \"i want to mark a document as draft or confidential before sharing it\" — and needs: the PDF with your text or logo watermark on the pages you chose.",
        "vi": "Dành cho ai muốn đánh dấu tài liệu là bản nháp, bản sao hoặc tài liệu mật trước khi chia sẻ — ví dụ khi \"tôi muốn đóng dấu bản nháp hoặc mật lên tài liệu trước khi chia sẻ\" — và cần: file PDF có watermark chữ hoặc logo của bạn trên các trang đã chọn."
      },
      "semantics": {
        "contexts": [
          "share",
          "email"
        ],
        "expressions": {
          "en": {
            "canonical": [
              "Watermark PDF"
            ],
            "intent": [
              "stamp a PDF as draft or confidential",
              "add a logo to every page of a PDF"
            ],
            "problem": [
              "I must mark a document before sharing it",
              "people keep reusing my documents without credit"
            ],
            "outcome": [
              "the PDF with my text or logo on the chosen pages"
            ],
            "context": [
              "mark a document as a draft before sending it for review"
            ]
          },
          "vi": {
            "canonical": [
              "Watermark PDF"
            ],
            "intent": [
              "đóng dấu bản nháp hoặc mật lên PDF",
              "thêm logo lên mọi trang PDF"
            ],
            "problem": [
              "tôi phải đánh dấu tài liệu trước khi chia sẻ",
              "tài liệu của tôi bị dùng lại mà không ghi nguồn"
            ],
            "outcome": [
              "file PDF có chữ hoặc logo của tôi trên các trang đã chọn"
            ],
            "context": [
              "đánh dấu bản nháp trước khi gửi duyệt"
            ]
          }
        },
        "suitableWhen": [
          {
            "text": {
              "en": "You want text such as DRAFT or CONFIDENTIAL on the pages, including Vietnamese text",
              "vi": "Bạn muốn chữ như BẢN NHÁP hoặc MẬT trên các trang, kể cả chữ tiếng Việt"
            },
            "evidence": {
              "kind": "capability",
              "ref": "text-watermark"
            }
          },
          {
            "text": {
              "en": "You want a PNG or JPG logo on the pages",
              "vi": "Bạn muốn đặt logo PNG hoặc JPG lên các trang"
            },
            "evidence": {
              "kind": "capability",
              "ref": "image-watermark"
            }
          }
        ],
        "notSuitableWhen": [
          {
            "text": {
              "en": "You want to REMOVE an existing watermark",
              "vi": "Bạn muốn XOÁ một watermark đã có"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "cannot remove a watermark afterwards"
            }
          },
          {
            "text": {
              "en": "The watermark text uses non-Latin scripts or emoji",
              "vi": "Chữ watermark dùng hệ chữ không phải Latin hoặc emoji"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "other scripts and emoji are not supported yet"
            }
          },
          {
            "text": {
              "en": "The PDF is password-protected (encrypted)",
              "vi": "File PDF có mật khẩu (được mã hoá)"
            },
            "evidence": {
              "kind": "limitation",
              "ref": "Encrypted PDFs are not supported yet"
            }
          }
        ]
      }
    }
  ],
  "links": [
    {
      "from": "merge",
      "to": "rotate",
      "type": "workflowNext"
    },
    {
      "from": "merge",
      "to": "delete",
      "type": "workflowNext"
    },
    {
      "from": "merge",
      "to": "reorder",
      "type": "workflowNext"
    },
    {
      "from": "merge",
      "to": "extract",
      "type": "workflowNext"
    },
    {
      "from": "merge",
      "to": "compress",
      "type": "workflowNext"
    },
    {
      "from": "merge",
      "to": "watermark",
      "type": "workflowNext"
    },
    {
      "from": "compress",
      "to": "watermark",
      "type": "workflowNext"
    },
    {
      "from": "compress",
      "to": "rotate",
      "type": "workflowNext"
    },
    {
      "from": "compress",
      "to": "delete",
      "type": "workflowNext"
    },
    {
      "from": "compress",
      "to": "reorder",
      "type": "workflowNext"
    },
    {
      "from": "compress",
      "to": "extract",
      "type": "workflowNext"
    },
    {
      "from": "compress",
      "to": "merge",
      "type": "workflowNext"
    },
    {
      "from": "split",
      "to": "compress",
      "type": "workflowNext"
    },
    {
      "from": "split",
      "to": "merge",
      "type": "workflowNext"
    },
    {
      "from": "jpg2pdf",
      "to": "reorder",
      "type": "workflowNext"
    },
    {
      "from": "jpg2pdf",
      "to": "rotate",
      "type": "workflowNext"
    },
    {
      "from": "jpg2pdf",
      "to": "compress",
      "type": "workflowNext"
    },
    {
      "from": "jpg2pdf",
      "to": "watermark",
      "type": "workflowNext"
    },
    {
      "from": "jpg2pdf",
      "to": "merge",
      "type": "workflowNext"
    },
    {
      "from": "rotate",
      "to": "delete",
      "type": "workflowNext"
    },
    {
      "from": "rotate",
      "to": "duplicate",
      "type": "workflowNext"
    },
    {
      "from": "rotate",
      "to": "insert",
      "type": "workflowNext"
    },
    {
      "from": "rotate",
      "to": "reorder",
      "type": "workflowNext"
    },
    {
      "from": "rotate",
      "to": "extract",
      "type": "workflowNext"
    },
    {
      "from": "rotate",
      "to": "compress",
      "type": "workflowNext"
    },
    {
      "from": "rotate",
      "to": "watermark",
      "type": "workflowNext"
    },
    {
      "from": "rotate",
      "to": "merge",
      "type": "workflowNext"
    },
    {
      "from": "delete",
      "to": "rotate",
      "type": "workflowNext"
    },
    {
      "from": "delete",
      "to": "duplicate",
      "type": "workflowNext"
    },
    {
      "from": "delete",
      "to": "insert",
      "type": "workflowNext"
    },
    {
      "from": "delete",
      "to": "reorder",
      "type": "workflowNext"
    },
    {
      "from": "delete",
      "to": "extract",
      "type": "workflowNext"
    },
    {
      "from": "delete",
      "to": "compress",
      "type": "workflowNext"
    },
    {
      "from": "delete",
      "to": "watermark",
      "type": "workflowNext"
    },
    {
      "from": "delete",
      "to": "merge",
      "type": "workflowNext"
    },
    {
      "from": "reorder",
      "to": "rotate",
      "type": "workflowNext"
    },
    {
      "from": "reorder",
      "to": "delete",
      "type": "workflowNext"
    },
    {
      "from": "reorder",
      "to": "duplicate",
      "type": "workflowNext"
    },
    {
      "from": "reorder",
      "to": "insert",
      "type": "workflowNext"
    },
    {
      "from": "reorder",
      "to": "extract",
      "type": "workflowNext"
    },
    {
      "from": "reorder",
      "to": "compress",
      "type": "workflowNext"
    },
    {
      "from": "reorder",
      "to": "watermark",
      "type": "workflowNext"
    },
    {
      "from": "reorder",
      "to": "merge",
      "type": "workflowNext"
    },
    {
      "from": "extract",
      "to": "rotate",
      "type": "workflowNext"
    },
    {
      "from": "extract",
      "to": "delete",
      "type": "workflowNext"
    },
    {
      "from": "extract",
      "to": "reorder",
      "type": "workflowNext"
    },
    {
      "from": "extract",
      "to": "compress",
      "type": "workflowNext"
    },
    {
      "from": "extract",
      "to": "watermark",
      "type": "workflowNext"
    },
    {
      "from": "extract",
      "to": "merge",
      "type": "workflowNext"
    },
    {
      "from": "duplicate",
      "to": "insert",
      "type": "workflowNext"
    },
    {
      "from": "duplicate",
      "to": "reorder",
      "type": "workflowNext"
    },
    {
      "from": "duplicate",
      "to": "delete",
      "type": "workflowNext"
    },
    {
      "from": "duplicate",
      "to": "rotate",
      "type": "workflowNext"
    },
    {
      "from": "duplicate",
      "to": "watermark",
      "type": "workflowNext"
    },
    {
      "from": "duplicate",
      "to": "merge",
      "type": "workflowNext"
    },
    {
      "from": "insert",
      "to": "duplicate",
      "type": "workflowNext"
    },
    {
      "from": "insert",
      "to": "reorder",
      "type": "workflowNext"
    },
    {
      "from": "insert",
      "to": "watermark",
      "type": "workflowNext"
    },
    {
      "from": "insert",
      "to": "rotate",
      "type": "workflowNext"
    },
    {
      "from": "insert",
      "to": "merge",
      "type": "workflowNext"
    },
    {
      "from": "watermark",
      "to": "compress",
      "type": "workflowNext"
    },
    {
      "from": "watermark",
      "to": "rotate",
      "type": "workflowNext"
    },
    {
      "from": "watermark",
      "to": "delete",
      "type": "workflowNext"
    },
    {
      "from": "watermark",
      "to": "reorder",
      "type": "workflowNext"
    },
    {
      "from": "watermark",
      "to": "extract",
      "type": "workflowNext"
    },
    {
      "from": "watermark",
      "to": "merge",
      "type": "workflowNext"
    },
    {
      "from": "jpg2pdf",
      "to": "pdf2jpg",
      "type": "complementary"
    },
    {
      "from": "merge",
      "to": "split",
      "type": "inverse"
    },
    {
      "from": "merge",
      "to": "split",
      "type": "sameFamily"
    },
    {
      "from": "merge",
      "to": "rotate",
      "type": "sameFamily"
    },
    {
      "from": "merge",
      "to": "delete",
      "type": "sameFamily"
    },
    {
      "from": "merge",
      "to": "reorder",
      "type": "sameFamily"
    },
    {
      "from": "merge",
      "to": "extract",
      "type": "sameFamily"
    },
    {
      "from": "merge",
      "to": "duplicate",
      "type": "sameFamily"
    },
    {
      "from": "merge",
      "to": "insert",
      "type": "sameFamily"
    },
    {
      "from": "split",
      "to": "rotate",
      "type": "sameFamily"
    },
    {
      "from": "split",
      "to": "delete",
      "type": "sameFamily"
    },
    {
      "from": "split",
      "to": "reorder",
      "type": "sameFamily"
    },
    {
      "from": "split",
      "to": "extract",
      "type": "sameFamily"
    },
    {
      "from": "split",
      "to": "duplicate",
      "type": "sameFamily"
    },
    {
      "from": "split",
      "to": "insert",
      "type": "sameFamily"
    },
    {
      "from": "jpg2pdf",
      "to": "pdf2jpg",
      "type": "sameFamily"
    },
    {
      "from": "jpg2pdf",
      "to": "pdf2png",
      "type": "sameFamily"
    },
    {
      "from": "pdf2jpg",
      "to": "pdf2png",
      "type": "sameFamily"
    },
    {
      "from": "rotate",
      "to": "delete",
      "type": "sameFamily"
    },
    {
      "from": "rotate",
      "to": "reorder",
      "type": "sameFamily"
    },
    {
      "from": "rotate",
      "to": "extract",
      "type": "sameFamily"
    },
    {
      "from": "rotate",
      "to": "duplicate",
      "type": "sameFamily"
    },
    {
      "from": "rotate",
      "to": "insert",
      "type": "sameFamily"
    },
    {
      "from": "delete",
      "to": "reorder",
      "type": "sameFamily"
    },
    {
      "from": "delete",
      "to": "extract",
      "type": "sameFamily"
    },
    {
      "from": "delete",
      "to": "duplicate",
      "type": "sameFamily"
    },
    {
      "from": "delete",
      "to": "insert",
      "type": "sameFamily"
    },
    {
      "from": "reorder",
      "to": "extract",
      "type": "sameFamily"
    },
    {
      "from": "reorder",
      "to": "duplicate",
      "type": "sameFamily"
    },
    {
      "from": "reorder",
      "to": "insert",
      "type": "sameFamily"
    },
    {
      "from": "extract",
      "to": "duplicate",
      "type": "sameFamily"
    },
    {
      "from": "extract",
      "to": "insert",
      "type": "sameFamily"
    },
    {
      "from": "duplicate",
      "to": "insert",
      "type": "sameFamily"
    }
  ]
}
