Ir al contenido
Otras versiones

Cargando…

PDFUtils

Métodos de utilidad para convertir ficheros PDF. Por ejemplo, para estampar imágenes o texto.

Descripción:

Método Valores de retorno Descripción
merge(List inputs, OutputStream output) void Combina varios PDF en uno nuevo.
  • inputs: Lista de flujos de entrada que se van a combinar.
  • output: Flujo de salida del fichero.

Ejemplo:

package com.openkm;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.IOUtils;
import com.openkm.api.OKMDocument;
import com.openkm.util.ContextWrapper;
import com.openkm.util.FileUtils;
import com.openkm.util.PDFUtils;
import com.openkm.util.PathUtils;
public class Test {
public static void main(String[] args) {
FileOutputStream fos = null;
FileInputStream fis = null;
File tmp = null;
try {
OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class);
PDFUtils pdfUtils = ContextWrapper.getContext().getBean(PDFUtils.class);
tmp = FileUtils.createTempFile("pdf");
fos = new FileOutputStream(tmp);
List<InputStream> inputs = new ArrayList<>();
inputs.add(okmDocument.getContent(null, "c0984ecf-8d9e-40f8-b5fb-2c83d202bd9d", false));
inputs.add(okmDocument.getContent(null, "b3d0af95-076c-4cc4-9b85-bd3e7eb2baa3", false));
// Merge document
pdfUtils.merge(inputs, fos);
// Create document in repository
String fldPath = PathUtils.getParent("/okm:root/test3.pdf"); // all documents are in same path
String docPath = fldPath + "/docMerge.pdf";
fis = new FileInputStream(tmp);
okmDocument.createSimple(null, docPath, fis);
} catch (Exception e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(fis);
IOUtils.closeQuietly(fos);
fileUtils.deleteQuietly(tmp);
}
}
}

Descripción:

Método Valores de retorno Descripción
stampImage(InputStream input, byte[] image, OutputStream output) void Estampa una marca de agua de imagen en un documento PDF.
  • input: El flujo de entrada del fichero.
  • image: El contenido del fichero de imagen.
  • output: Flujo de salida del fichero.

Ejemplo:

package com.openkm;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import com.openkm.util.ContextWrapper;
import com.openkm.util.PDFUtils;
public class Test {
public static void main(String[] args) {
try {
PDFUtils pdfUtils = ContextWrapper.getContext().getBean(PDFUtils.class);
String path = "/home/openkm/test.pdf";
File file = new File(path);
InputStream is = new FileInputStream(file);
OutputStream out = new FileOutputStream(file);
byte[] data = Files.readAllBytes(Paths.get("/home/luis/test.png"));
pdfUtils.stampImage(is, data, out);
is.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

Descripción:

Método Valores de retorno Descripción
stampText(InputStream input, String text, OutputStream output) void Estampa una marca de agua de texto en un documento PDF.
  • input: El flujo de entrada del fichero.
  • text: Texto del sello.
  • output: Flujo de salida del fichero.

Ejemplo:

package com.openkm;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import com.openkm.util.ContextWrapper;
import com.openkm.util.PDFUtils;
public class Test {
public static void main(String[] args) {
try {
PDFUtils pdfUtils = ContextWrapper.getContext().getBean(PDFUtils.class);
String path = "/home/openkm/test.pdf";
File file = new File(path);
InputStream is = new FileInputStream(file);
OutputStream out = new FileOutputStream(file);
pdfUtils.stampText(is, "This is the text", out);
is.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

Descripción:

Método Valores de retorno Descripción
getNumberOfPages(String token, String docId) int Devuelve el número de páginas de un PDF.
  • input: El flujo de entrada del fichero.
  • text: Texto del sello.
  • docId: Identificador único del PDF en OpenKM.

Ejemplo:

package com.openkm;
import com.openkm.util.ContextWrapper;
import com.openkm.util.PDFUtils;
public class Test {
public static void main(String[] args) {
try {
PDFUtils pdfUtils = ContextWrapper.getContext().getBean(PDFUtils.class);
String docId = "e6b61e8d-4bf1-4c37-828f-09ecc34261cc";
System.out.println(pdfUtils.getNumberOfPages(null, docId));
} catch (Exception e) {
e.printStackTrace();
}
}
}

Descripción:

Método Valores de retorno Descripción
fillForm(InputStream input, Map<String, Object> values, OutputStream output) void Rellena un formulario PDF con valores.
  • input: El flujo de entrada del fichero PDF con el formulario.
  • values: Un mapa con los valores que se utilizarán para rellenar el formulario.
  • output: El PDF generado con el formulario rellenado.

Ejemplo con este fichero FillForm.pdf:

package com.openkm;
import com.openkm.util.ContextWrapper;
import com.openkm.util.PDFUtils;
public class Test {
public static void main(String[] args) {
try {
PDFUtils pdfUtils = ContextWrapper.getContext().getBean(PDFUtils.class);
InputStream fis = new FileInputStream("/home/openkm/FillForm.pdf");
OutputStream fos = new FileOutputStream("/home/openkm/FillFormOutput.pdf");
Map<String, Object> values = new HashMap<>();
values.put("TextField_1", "Field #1 value");
values.put("TextField_2", "Field #2 value");
values.put("TextField_3", "Field #3 value");
pdfUtils.fillForm(fis, values, fos);
} catch (Exception e) {
e.printStackTrace();
}
}
}