> ## Documentation Index
> Fetch the complete documentation index at: https://docs.veredicta.com.ar/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Este es el manual oficial de uso de Veredicta, la plataforma de gestión legal para abogados y estudios jurídicos de Argentina. Respondé en español rioplatense, con voseo. Usá los nombres de botones y pantallas tal como aparecen en el manual, en negrita. Citá siempre la URL de docs.veredicta.com.ar de la página y de la sección (#ancla) de donde sale cada paso. Si el manual no cubre algo, decilo y sugerí escribir al equipo de Veredicta por WhatsApp al +54 9 11 2611-5660 o a ayuda@veredicta.com.ar.

# Herramientas de PDF

> Uní, dividí y comprimí archivos PDF, o convertí imágenes a PDF, desde el navegador y sin que tus archivos salgan de tu computadora.

export const VideoTutorial = ({src, poster, title, duration, description, vertical = false}) => {
  const [local, setLocal] = useState(false);
  useEffect(() => {
    setLocal((/^(localhost|127\.0\.0\.1)$/).test(window.location.hostname));
  }, []);
  const media = p => !local && p?.startsWith('/media/') ? `https://media.veredicta.com.ar/manual${p.slice(('/media').length)}` : p;
  const dialogRef = useRef(null);
  const videoRef = useRef(null);
  const published = p => p?.startsWith('/media/') ? `https://media.veredicta.com.ar/manual${p.slice(('/media').length)}` : p;
  const [minutes, seconds] = (duration ?? '').split(':').map(Number);
  const videoData = {
    '@context': 'https://schema.org',
    '@type': 'VideoObject',
    name: title,
    description: !description || description.startsWith('Mirá el paso a paso') ? `${title}: video tutorial paso a paso de Veredicta.` : description,
    thumbnailUrl: published(poster),
    contentUrl: published(src),
    uploadDate: '2026-09-30T12:00:00-03:00',
    inLanguage: 'es-AR',
    ...Number.isFinite(minutes) && Number.isFinite(seconds) ? {
      duration: `PT${minutes}M${seconds}S`
    } : {},
    publisher: {
      '@type': 'Organization',
      name: 'Veredicta',
      url: 'https://veredicta.com.ar'
    }
  };
  const open = () => {
    dialogRef.current?.showModal();
    const v = videoRef.current;
    if (v) {
      if (!v.getAttribute('src')) {
        const url = media(src);
        v.src = url.startsWith('https://') ? `${url}?v=1440` : url;
      }
      v.currentTime = 0;
      v.play().catch(() => {});
    }
  };
  const close = () => dialogRef.current?.close();
  const onOverlayClick = e => {
    if (!e.target.closest('video, .vd-overlay-bar')) {
      close();
    }
  };
  const onClose = () => videoRef.current?.pause();
  const onKeyDown = e => {
    if (e.key === 'f') {
      fullscreen();
    }
  };
  const fullscreen = () => {
    const v = videoRef.current;
    if (!v) {
      return;
    }
    if (v.requestFullscreen) {
      v.requestFullscreen();
    } else if (v.webkitEnterFullscreen) {
      v.webkitEnterFullscreen();
    }
  };
  return <figure className={`vd-video not-prose${vertical ? 'vd-video-vertical' : ''}`}>
      <button aria-label={`Ver el video: ${title}`} className="vd-video-card" onClick={open} type="button">
        <img alt={title} decoding="async" height={vertical ? 1920 : 1080} loading="lazy" src={media(poster)} width={vertical ? 1080 : 1920} />
        <span className="vd-video-shade" />
        <span className="vd-video-badge">
          <svg aria-hidden="true" fill="currentColor" height="14" viewBox="0 0 24 24" width="14">
            <path d="M8 5v14l11-7z" />
          </svg>
          Video tutorial
        </span>
        <span aria-hidden="true" className="vd-video-play">
          {}
          <svg aria-hidden="true" fill="currentColor" height="30" stroke="currentColor" strokeLinejoin="round" strokeWidth="2" viewBox="0 0 24 24" width="30">
            <path d="M8.5 5.5v13l11-6.5z" />
          </svg>
        </span>
        {duration ? <span className="vd-video-duration">{duration}</span> : null}
      </button>
      <script dangerouslySetInnerHTML={{
    __html: JSON.stringify(videoData).replaceAll('<', '\\u003c')
  }} type="application/ld+json" />
      <figcaption className="vd-caption">
        {description ?? 'Mirá el paso a paso y seguilo en Veredicta.'}
      </figcaption>

      {}
      <dialog aria-label={title} className="vd-overlay vd-overlay-video" onClick={onOverlayClick} onClose={onClose} onKeyDown={onKeyDown} ref={dialogRef}>
        <div className="vd-overlay-bar">
          <span className="vd-overlay-title">{title}</span>
          <div className="vd-overlay-tools">
            <button className="vd-tool-text" onClick={fullscreen} type="button">
              <svg aria-hidden="true" fill="none" height="18" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" viewBox="0 0 24 24" width="18">
                <path d="M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3" />
              </svg>
              <span>Pantalla completa</span>
            </button>
            <button aria-label="Cerrar" onClick={close} type="button">
              <svg aria-hidden="true" fill="none" height="18" stroke="currentColor" strokeLinecap="round" strokeWidth="2" viewBox="0 0 24 24" width="18">
                <path d="M18 6 6 18M6 6l12 12" />
              </svg>
            </button>
          </div>
        </div>
        <div className="vd-overlay-player">
          {}
          <video controls playsInline poster={media(poster)} preload="none" ref={videoRef} />
        </div>
      </dialog>
    </figure>;
};

export const GuideImage = ({src, preview, alt, title, width, height, caption, tall = false}) => {
  const [local, setLocal] = useState(false);
  useEffect(() => {
    setLocal((/^(localhost|127\.0\.0\.1)$/).test(window.location.hostname));
  }, []);
  const media = p => !local && p?.startsWith('/media/') ? `https://media.veredicta.com.ar/manual${p.slice(('/media').length)}` : p;
  const dialogRef = useRef(null);
  const scrollRef = useRef(null);
  const [zoom, setZoom] = useState(1);
  const levels = [1, 1.5, 2, 3];
  const open = () => {
    setZoom(1);
    dialogRef.current?.showModal();
  };
  const close = () => dialogRef.current?.close();
  const onOverlayClick = e => {
    if (!e.target.closest('.vd-overlay-img, .vd-overlay-bar')) {
      close();
    }
  };
  const zoomTo = next => {
    const el = scrollRef.current;
    if (!el) {
      setZoom(next);
      return;
    }
    const cx = (el.scrollLeft + el.clientWidth / 2) / el.scrollWidth;
    const cy = (el.scrollTop + el.clientHeight / 2) / el.scrollHeight;
    setZoom(next);
    requestAnimationFrame(() => {
      el.scrollLeft = cx * el.scrollWidth - el.clientWidth / 2;
      el.scrollTop = cy * el.scrollHeight - el.clientHeight / 2;
    });
  };
  const zoomIn = () => zoomTo(levels.find(l => l > zoom) ?? levels.at(-1));
  const zoomOut = () => zoomTo([...levels].reverse().find(l => l < zoom) ?? 1);
  useEffect(() => {
    const el = scrollRef.current;
    if (!el) {
      return;
    }
    const onWheel = e => {
      if (!(e.ctrlKey || e.metaKey)) {
        return;
      }
      e.preventDefault();
      if (e.deltaY < 0) {
        zoomIn();
      } else {
        zoomOut();
      }
    };
    el.addEventListener('wheel', onWheel, {
      passive: false
    });
    return () => el.removeEventListener('wheel', onWheel);
  });
  const onKeyDown = e => {
    if (e.key === '+' || e.key === '=') {
      zoomIn();
    } else if (e.key === '-') {
      zoomOut();
    } else if (e.key === '0') {
      zoomTo(1);
    }
  };
  const magnifier = <svg aria-hidden="true" fill="none" height="16" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" viewBox="0 0 24 24" width="16">
      <circle cx="11" cy="11" r="7" />
      <path d="m20 20-3.5-3.5M11 8v6M8 11h6" />
    </svg>;
  return <figure className={tall ? 'vd-guide not-prose' : `vd-shot not-prose${height > width ? 'vd-shot-portrait' : ''}`}>
      {tall ? <button aria-label={`Ampliar la guía: ${title}`} className="vd-guide-preview" onClick={open} type="button">
          <img alt={alt} decoding="async" height={height} loading="lazy" src={media(preview ?? src)} width={width} />
          <span className="vd-guide-fade" />
          <span className="vd-guide-cta">
            {magnifier}
            Ver la guía completa
          </span>
        </button> : <button aria-label={`Ampliar: ${title}`} className="vd-shot-button" onClick={open} type="button">
          <img alt={alt} decoding="async" height={height} loading="lazy" src={media(preview ?? src)} width={width} />
          <span aria-hidden="true" className="vd-shot-zoom">
            {magnifier}
            Ampliar
          </span>
        </button>}
      {tall || caption ? <figcaption className="vd-caption">
          {caption ?? 'Guía paso a paso · hacé clic para ampliarla y acercarte a cada paso.'}
        </figcaption> : null}

      {}
      <dialog aria-label={title} className="vd-overlay" onClick={onOverlayClick} onKeyDown={onKeyDown} ref={dialogRef}>
        <div className="vd-overlay-bar">
          <span className="vd-overlay-title">{title}</span>
          <div className="vd-overlay-tools">
            <button aria-label="Alejar" disabled={zoom <= 1} onClick={zoomOut} type="button">
              <svg aria-hidden="true" fill="none" height="18" stroke="currentColor" strokeLinecap="round" strokeWidth="2" viewBox="0 0 24 24" width="18">
                <path d="M5 12h14" />
              </svg>
            </button>
            <button aria-label="Ajustar al ancho" className="vd-zoom-value" onClick={() => zoomTo(1)} type="button">
              {Math.round(zoom * 100)}%
            </button>
            <button aria-label="Acercar" disabled={zoom >= levels.at(-1)} onClick={zoomIn} type="button">
              <svg aria-hidden="true" fill="none" height="18" stroke="currentColor" strokeLinecap="round" strokeWidth="2" viewBox="0 0 24 24" width="18">
                <path d="M5 12h14M12 5v14" />
              </svg>
            </button>
            {tall ? <a className="vd-tool-link" download href={media(src)}>
                <span className="vd-sr-only">Descargar la guía</span>
                <svg aria-hidden="true" fill="none" height="18" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" viewBox="0 0 24 24" width="18">
                  <path d="M12 15V3M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5" />
                </svg>
              </a> : null}
            <button aria-label="Cerrar" onClick={close} type="button">
              <svg aria-hidden="true" fill="none" height="18" stroke="currentColor" strokeLinecap="round" strokeWidth="2" viewBox="0 0 24 24" width="18">
                <path d="M18 6 6 18M6 6l12 12" />
              </svg>
            </button>
          </div>
        </div>
        <div className="vd-overlay-scroll" ref={scrollRef}>
          <img alt={alt} className="vd-overlay-img" decoding="async" height={height} loading="lazy" src={media(src)} style={{
    width: tall ? `calc(min(100%, 74rem) * ${zoom})` : `calc(min(100%, 90rem, (100dvh - 7rem) * ${width / height}) * ${zoom})`
  }} width={width} />
        </div>
      </dialog>
    </figure>;
};

Las cuatro herramientas son gratis y sin límite de uso, para cualquier plan y también durante la prueba gratuita.

## Mirá cómo se hace

<VideoTutorial src="/media/biblioteca-herramientas-pdf/video.mp4" poster="/media/biblioteca-herramientas-pdf/poster.webp" title="Cómo unir archivos PDF" duration="0:40" description="Mirá el paso a paso y seguilo en Veredicta." />

Resumen del video «Cómo unir archivos PDF» (0:40):

1. Abrí Unir PDFs: en Herramientas, buscá «Unir PDFs» y hacé clic en «Usar herramienta».
2. Sumá los archivos: arrastralos a la zona marcada o hacé clic para buscarlos.
3. Ordenalos: arrastrá cada archivo por el ícono de la izquierda hasta el orden que va a quedar en el PDF final.
4. Unilos: hacé clic en «Unir PDFs».
5. Descargá el resultado: aparece «PDF unido correctamente», con el nombre y la cantidad de páginas. Hacé clic en «Descargar».

El video cierra con «Ya sabés unir archivos PDF», un resumen de los cinco pasos y cómo pedir ayuda: WhatsApp +54 9 11 2611-5660 o [ayuda@veredicta.com.ar](mailto:ayuda@veredicta.com.ar). Más guías en docs.veredicta.com.ar.

## Dónde está en la app

* En el menú de la izquierda: **Biblioteca** > **Herramientas**, y buscá la herramienta que necesites.
* Deep links directos: [Unir PDFs](https://app.veredicta.com.ar/tool/merge-pdf), [Dividir PDF](https://app.veredicta.com.ar/tool/split-pdf), [Comprimir PDF](https://app.veredicta.com.ar/tool/compress-pdf), [Convertir imágenes a PDF](https://app.veredicta.com.ar/tool/images-to-pdf).

## Antes de empezar

* No hace falta ningún plan activo ni la prueba gratuita: las herramientas de PDF son gratis para cualquier cuenta.
* Tenés los archivos PDF, o las imágenes, que querés combinar, dividir, comprimir o convertir.

## Paso a paso

<Steps titleSize="h3">
  <Step title="Abrí Unir PDFs" id="paso-1">
    <GuideImage src="/media/biblioteca-herramientas-pdf/paso-1.webp" width={1200} height={796} title="Paso 1: Abrí Unir PDFs" alt="La tarjeta «Unir PDFs» en Herramientas, con «Usar herramienta» marcado." />

    En **Herramientas**, buscá **Unir PDFs** y hacé clic en **Usar herramienta**.
  </Step>

  <Step title="Sumá los archivos" id="paso-2">
    <GuideImage src="/media/biblioteca-herramientas-pdf/paso-2.webp" width={1200} height={796} title="Paso 2: Sumá los archivos" alt="Tres archivos PDF ya agregados a la lista «Archivos seleccionados»." />

    Arrastrá tus archivos PDF a la zona marcada, o hacé clic para buscarlos en tu computadora. Podés seleccionar varios a la vez.
  </Step>

  <Step title="Ordenalos" id="paso-3">
    <GuideImage src="/media/biblioteca-herramientas-pdf/paso-3.webp" width={1200} height={796} title="Paso 3: Ordenalos" alt="La lista de archivos reordenada, arrastrada por el ícono de la izquierda." />

    Arrastrá cada archivo por el ícono de la izquierda hasta el orden en el que van a quedar en el PDF final.
  </Step>

  <Step title="Unilos" id="paso-4">
    <GuideImage src="/media/biblioteca-herramientas-pdf/paso-4.webp" width={1200} height={796} title="Paso 4: Unilos" alt="El botón «Unir PDFs» marcado, con los tres archivos ya ordenados." />

    Hacé clic en **Unir PDFs**.
  </Step>

  <Step title="Descargá el resultado" id="paso-5">
    <GuideImage src="/media/biblioteca-herramientas-pdf/paso-5.webp" width={1200} height={796} title="Paso 5: Descargá el resultado" alt="El diálogo «PDF unido correctamente» con el botón «Descargar» marcado." />

    Aparece «PDF unido correctamente», con el nombre del archivo y la cantidad de páginas. Hacé clic en **Descargar** para guardarlo en tu computadora.
  </Step>
</Steps>

### Dividir un PDF

<Steps>
  <Step title="Elegí el archivo">
    Seleccioná el PDF que querés dividir.
  </Step>

  <Step title="Elegí el tamaño máximo">
    En **Tamaño máximo por archivo**, elegí **5 MB**, **9 MB (sugerido)**, **19 MB (recomendado)** o **Personalizado** (hasta 200 MB), y el **Nombre de archivos** con el que se van a guardar las partes.
  </Step>

  <Step title="Dividí el PDF">
    Hacé clic en **Dividir PDF**.
  </Step>

  <Step title="Descargá las partes">
    Descargá cada parte por separado o hacé clic en **Descargar todos**.
  </Step>
</Steps>

<Note>
  Si el archivo ya pesa menos que el tamaño máximo elegido, el botón **Dividir PDF** queda deshabilitado: no hace falta dividirlo.
</Note>

### Comprimir un PDF

<Steps>
  <Step title="Elegí el archivo">
    Seleccioná el PDF que querés comprimir.
  </Step>

  <Step title="Comprimí el PDF">
    Hacé clic en **Comprimir PDF**.
  </Step>

  <Step title="Descargá el resultado">
    Veredicta muestra el tamaño original, el tamaño comprimido y el porcentaje de reducción. Hacé clic en **Descargar**.
  </Step>
</Steps>

### Convertir imágenes a PDF

<Steps>
  <Step title="Elegí las imágenes">
    Seleccioná una o más imágenes JPEG, PNG, GIF, WebP o BMP.
  </Step>

  <Step title="Ordenalas">
    Cada imagen ocupa una página del PDF, en el orden de la lista. Arrastralas para cambiar el orden.
  </Step>

  <Step title="Creá el PDF">
    Hacé clic en **Crear PDF**.
  </Step>

  <Step title="Descargá el resultado">
    Hacé clic en **Descargar**.
  </Step>
</Steps>

## Las herramientas de PDF

| Herramienta | Qué hace | Qué te pide | Límite |
| - | - | - | - |
| Unir PDFs | Combina varios PDF en uno solo, en el orden que elegiste | Dos o más archivos PDF | Con más de 200 MB en total, avisa que el proceso puede tardar varios minutos |
| Dividir PDF | Parte un PDF en varias partes de hasta el tamaño que elijas | Un archivo PDF, el tamaño máximo por parte y el nombre de los archivos | Tamaño máximo por parte: 5 MB, 9 MB, 19 MB o personalizado, hasta 200 MB |
| Comprimir PDF | Reduce el tamaño de un PDF quitando metadatos y optimizando su estructura | Un archivo PDF | Reducción típica del 5% al 15% |
| Convertir imágenes a PDF | Convierte imágenes en un PDF, con una imagen por página | Una o más imágenes JPEG, PNG, GIF, WebP o BMP | Sin límite fijo de cantidad |

## Qué pasa después

* El archivo descargado queda en la carpeta de descargas de tu navegador. Veredicta no lo guarda en Documentos ni en ningún expediente.
* Si necesitás el resultado dentro de un expediente, subilo vos: mirá [Subir archivos](/documentos/subir-archivos).

## Verificá que quedó bien

Abrí el archivo descargado. Unir PDFs y Convertir imágenes a PDF muestran cuántas páginas tiene el resultado antes de descargarlo; Dividir PDF muestra cuántas partes se generaron, con sus páginas y su tamaño; Comprimir PDF muestra el tamaño original, el nuevo tamaño y el porcentaje de reducción.

## Qué tener en cuenta

* **Los archivos no salen de tu computadora.** Unir, dividir, comprimir y convertir se procesan en tu navegador. Veredicta nunca los sube a un servidor.
* **Cada herramienta tiene su propio «¿Cómo funciona?».** Es un panel plegable arriba del formulario, con el paso a paso o el detalle de esa herramienta.
* **Comprimir PDF no siempre reduce mucho.** La reducción típica es del 5% al 15%: Veredicta quita metadatos y reordena la estructura del archivo, no las imágenes que contiene.
* **Con archivos muy grandes, el proceso tarda más.** Por encima de 200 MB en total, Veredicta avisa que puede tardar varios minutos y ser más lento en computadoras con pocos recursos.

## Errores comunes

### «Archivo no válido»

El archivo que intentaste sumar no es un PDF o, en Convertir imágenes a PDF, no es una imagen en un formato soportado (JPEG, PNG, GIF, WebP o BMP). Elegí el archivo correcto y sumalo de nuevo.

### «Error al unir PDFs»

Algo falló al procesar los archivos. Volvé a intentarlo. Dividir PDF, Comprimir PDF y Convertir imágenes a PDF muestran el mismo aviso con su propio nombre («Error al dividir el PDF», «Error al comprimir», «Error al crear PDF») si la operación falla. Si el mensaje se repite, escribile al equipo de Veredicta con el nombre del archivo.

## Guía en una imagen

Todos los pasos en una sola imagen, para tenerla a mano o compartirla con tu equipo.

<GuideImage tall src="/media/biblioteca-herramientas-pdf/guia.webp" preview="/media/biblioteca-herramientas-pdf/guia-preview.webp" width={1760} height={3000} title="Cómo unir archivos PDF" alt="Guía en cinco pasos. 1. Abrí Unir PDFs: en Herramientas, buscá «Unir PDFs» y hacé clic en «Usar herramienta». 2. Sumá los archivos: arrastralos a la zona marcada o hacé clic para buscarlos. 3. Ordenalos: arrastrá cada archivo por el ícono de la izquierda hasta el orden que va a quedar en el PDF final. 4. Unilos: hacé clic en «Unir PDFs». 5. Descargá el resultado: hacé clic en «Descargar»." caption="Todos los pasos en una sola imagen. Ampliala para acercarte a cada paso o descargala." />

## Guías relacionadas

<Columns cols={2}>
  <Card title="Herramientas legales" icon="wrench" href="/biblioteca/herramientas">
    Todo el catálogo: calculadoras, PDF y texto.
  </Card>

  <Card title="Herramientas de texto y fechas" icon="text-cursor-input" href="/biblioteca/herramientas-de-texto">
    Convertí texto, compará versiones, contá palabras y extraé fechas o emails.
  </Card>

  <Card title="Subir archivos" icon="upload" href="/documentos/subir-archivos">
    Subí el resultado a un expediente arrastrándolo a la pantalla.
  </Card>

  <Card title="Calcular montos" icon="calculator" href="/biblioteca/calcular-montos">
    Honorarios, tasa de justicia, mediador, incapacidad y más.
  </Card>
</Columns>

## ¿Necesitás ayuda?

El equipo de Veredicta te responde por WhatsApp o por correo.

<Columns cols={2}>
  <Card title="WhatsApp" icon="https://mintcdn.com/zest-labs/6i6sx-v6hNAjw3Vp/images/icons/whatsapp.svg?fit=max&auto=format&n=6i6sx-v6hNAjw3Vp&q=85&s=d2cbae11d2915e173949e4c75d2bb625" href="https://wa.me/5491126115660" width="24" height="24" data-path="images/icons/whatsapp.svg">
    +54 9 11 2611-5660
  </Card>

  <Card title="Correo" icon="mail" href="mailto:ayuda@veredicta.com.ar">
    [ayuda@veredicta.com.ar](mailto:ayuda@veredicta.com.ar)
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.