【发布时间】:2020-04-18 09:08:29
【问题描述】:
我正在使用 itextpdf 处理 HTML 到 PDF,但我遇到了问题。 HTML 有一些参数需要在转换后设置。当我操作 pdf 文件以设置具有垂直水印的图像时,生成 pdf 的 byte[] 具有以下内容:
[(C)-7(ódi)8(g)-3(o)16(:)-7(${)15(C)-7(O)4(D)3(_)5(D)3(O)4(C)-7(} )20(R)-3(e)-3(v)-4(i)7(s)-3(i)7(ón)15(:)-7(${)15(R)-3(E)10(V)9(_)5(D)3(O)4(C)-7(} )5(F)-3(e)-3(ch)15(a:)-5(${)15(F)-3(E)10(C)-7(H)19(A)-5(_)5(D)3(O)4(C)-7(})] TJ
这有一些参数,如${COD_DOC},但是当我设置它们时,问题是 图像链接
我的问题是:这些数字是什么意思?因为当我尝试设置字母 P 时它不起作用。
代码:
public Image manipulatePdfTemplate(File pdfTemplate, PdfDocument pdfDoc, Map<String, Object> fileVariables)
throws Exception
{
log.info("Iniciando el procesamiento del la plantilla pdf");
PdfPage firstPage = pdfDoc.getFirstPage();
// Sustituimos las variables por los valores de los parametros
PdfObject object = firstPage.getPdfObject().get(PdfName.Contents);
if (object instanceof PdfStream) {
PdfStream stream = (PdfStream) object;
byte[] data = stream.getBytes();
// Método para escribir los bytes del contenido del pdf en un txt
// writePdfContent(data);
// Falla el caracter "5" y "X"
if (fileVariables != null) {
if (fileVariables.get("COD_DOC") != null && fileVariables.get("REV_DOC") != null
&& fileVariables.get("FECHA_DOC") != null) {
String replacedData = new String(data, StandardCharsets.ISO_8859_1)
.replace(AppConstant.COD_DOC, " (" + fileVariables.get("COD_DOC") + " )")
.replace(AppConstant.REV_DOC, " (" + fileVariables.get("REV_DOC") + " )")
.replace(AppConstant.FECHA_DOC, " (" + fileVariables.get("FECHA_DOC") + ")");
stream.setData(replacedData.getBytes(StandardCharsets.ISO_8859_1));
}
else if(fileVariables.get("VERTICAL_TEXT") != null) {
String replacedData = new String(data, StandardCharsets.ISO_8859_1)
.replace(AppConstant.VERTICAL_TEXT, "(" + fileVariables.get("VERTICAL_TEXT") + ")");
stream.setData(replacedData.getBytes(StandardCharsets.ISO_8859_1));
}
}
}
// Convertimos el resultado a imagen que añadiremos de fondo en cada página del pdf resultante
PdfFormXObject pageCopy = firstPage.copyAsFormXObject(pdfDoc);
Image image = new Image(pageCopy);
return image;
}
【问题讨论】:
-
首先,帮自己一个忙,在转换为 PDF 之前替换您的
${COD_DOC}和类似变量。 PDF 不是用于编辑的格式。在您的情况下,您会看到一些原因,请阅读 this answer 了解更多信息。 -
请不要发布您的帖子的屏幕截图,而是发布实际代码本身。为什么?因为想要给你答案的人,首先想在他们的电脑上运行你的代码。如果我们必须重新输入,那么我们甚至不会费心给您答案。太费劲了。如果我们可以只复制/粘贴,那么您可以让人们更轻松地为您提供答案。