禁用 com.itextpdf.text.Paragraph 的链接
disable links of com.itextpdf.text.Paragraph
问题如下,我有一个创建 pdf 的方法,但是当我添加包含 link 的文本并创建 pdf 文件时,它允许我单击 link , 为了安全起见,它不能有 links.
PdfReader reader = new PdfReader(new FileInputStream(new File("D:\ruta\\basepdf.pdf")));
Document document = new Document(reader.getPageSize(1),0,0,0,0);
BaseFont base =BaseFont.createFont("D:\ruta\fuente.ttf", BaseFont.CP1250, BaseFont.EMBEDDED);
Font fonts = new Font(base, Float.parseFloat("40"),Font.BOLD, new BaseColor(255,0,0));
Paragraph parrafo= new Paragraph("https://www.youtube.com/", fonts);
Image imagen = Image.getInstance("D:\ruta\usuariosfondo.jpg");
String base64Data = base64.substring(base64.indexOf(',') + 1);
byte[] decoded = Base64.decodeBase64(base64Data.getBytes());
Image imgQr = Image.getInstance(decoded);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter writer=PdfWriter.getInstance(document, baos);
document.open();
document.newPage();
parrafo.setAlignment(Element.ALIGN_RIGHT);
parrafo.setFont(fonts);
ColumnText ct = new ColumnText(writer.getDirectContent());
ct.setSimpleColumn(0,0,550,780);
ct.setAlignment(Element.ALIGN_RIGHT);
ct.addElement(parrafo);
ct.go();
Float width = document.getPageSize().getWidth();
Float height = document.getPageSize().getHeight();
imagen.scaleToFit(width, height);
imagen.setAbsolutePosition(0f, 0f);
imgQr.setAbsolutePosition(149f, 209f);
imgQr.scaleToFit(178.2992f, 178.2992f);
document.add(imagen);
document.add(imgQr);
//document.add(parrafo);
document.close();
String p=java.util.Base64.getEncoder().encodeToString(baos.toByteArray());
文本应仅与 link 一起显示,因为文本未启用以启动 url
您的代码创建的 pdf 不包含 link 注释。所以你不要让它可点击。
但它包含网址!某些 pdf 查看器,尤其是 Adobe Reader,会自动将他们识别的任何 url 设置为可点击。
如果是 Adobe Reader,您可以在设置中禁用此 "feature"。
如果您无法控制查看器的设置,请不要将 URL 放入您的 pdf 中。或者防止它们被观众轻易识别,例如通过将 URL 呈现为位图图像并使用这些图像而不是相应的 url 文本。
问题如下,我有一个创建 pdf 的方法,但是当我添加包含 link 的文本并创建 pdf 文件时,它允许我单击 link , 为了安全起见,它不能有 links.
PdfReader reader = new PdfReader(new FileInputStream(new File("D:\ruta\\basepdf.pdf")));
Document document = new Document(reader.getPageSize(1),0,0,0,0);
BaseFont base =BaseFont.createFont("D:\ruta\fuente.ttf", BaseFont.CP1250, BaseFont.EMBEDDED);
Font fonts = new Font(base, Float.parseFloat("40"),Font.BOLD, new BaseColor(255,0,0));
Paragraph parrafo= new Paragraph("https://www.youtube.com/", fonts);
Image imagen = Image.getInstance("D:\ruta\usuariosfondo.jpg");
String base64Data = base64.substring(base64.indexOf(',') + 1);
byte[] decoded = Base64.decodeBase64(base64Data.getBytes());
Image imgQr = Image.getInstance(decoded);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter writer=PdfWriter.getInstance(document, baos);
document.open();
document.newPage();
parrafo.setAlignment(Element.ALIGN_RIGHT);
parrafo.setFont(fonts);
ColumnText ct = new ColumnText(writer.getDirectContent());
ct.setSimpleColumn(0,0,550,780);
ct.setAlignment(Element.ALIGN_RIGHT);
ct.addElement(parrafo);
ct.go();
Float width = document.getPageSize().getWidth();
Float height = document.getPageSize().getHeight();
imagen.scaleToFit(width, height);
imagen.setAbsolutePosition(0f, 0f);
imgQr.setAbsolutePosition(149f, 209f);
imgQr.scaleToFit(178.2992f, 178.2992f);
document.add(imagen);
document.add(imgQr);
//document.add(parrafo);
document.close();
String p=java.util.Base64.getEncoder().encodeToString(baos.toByteArray());
文本应仅与 link 一起显示,因为文本未启用以启动 url
您的代码创建的 pdf 不包含 link 注释。所以你不要让它可点击。
但它包含网址!某些 pdf 查看器,尤其是 Adobe Reader,会自动将他们识别的任何 url 设置为可点击。
如果是 Adobe Reader,您可以在设置中禁用此 "feature"。
如果您无法控制查看器的设置,请不要将 URL 放入您的 pdf 中。或者防止它们被观众轻易识别,例如通过将 URL 呈现为位图图像并使用这些图像而不是相应的 url 文本。