Foros de discusión
Crear un fichero en mi portlet
Inma Moram, modificado hace 8 años.
Crear un fichero en mi portlet
New Member Mensajes: 5 Fecha de incorporación: 16/12/15 Mensajes recientes
Buenas tardes,
necesito crear un fichero pdf en mi portlet para posteriormente abrirlo con un href de html.
Hago lo siguiente:
En el action creo un fichero con una ruta absoluta a una carpeta que yo he creado en mi portlet que se llama pdf:
File file = new File ("C:\\liferay-developer-studio\\liferay-portal-6.2-ee-sp9\\tomcat-7.0.42\\webapps\\Formulario-portlet\\pdf\\ejemplo.pdf");
posteriormente añado información al pdf con la librería itextpdf
Luego en el html:
<a href="<%= request.getContextPath() %>/pdf/ejemplo.pdf" target="_blank">abrir</a>
Y me abre el pdf.
El problema es que es una ruta absoluta y necesitaría una ruta relativa. ¿cómo podría hacerlo?
Muchas gracias de antemano.
Saludos.
necesito crear un fichero pdf en mi portlet para posteriormente abrirlo con un href de html.
Hago lo siguiente:
En el action creo un fichero con una ruta absoluta a una carpeta que yo he creado en mi portlet que se llama pdf:
File file = new File ("C:\\liferay-developer-studio\\liferay-portal-6.2-ee-sp9\\tomcat-7.0.42\\webapps\\Formulario-portlet\\pdf\\ejemplo.pdf");
posteriormente añado información al pdf con la librería itextpdf
Luego en el html:
<a href="<%= request.getContextPath() %>/pdf/ejemplo.pdf" target="_blank">abrir</a>
Y me abre el pdf.
El problema es que es una ruta absoluta y necesitaría una ruta relativa. ¿cómo podría hacerlo?
Muchas gracias de antemano.
Saludos.
Juan Gonzalez, modificado hace 8 años.
RE: Crear un fichero en mi portlet
Liferay Legend Mensajes: 3089 Fecha de incorporación: 28/10/08 Mensajes recientesInma Moram:
Buenas tardes,
necesito crear un fichero pdf en mi portlet para posteriormente abrirlo con un href de html.
Hago lo siguiente:
En el action creo un fichero con una ruta absoluta a una carpeta que yo he creado en mi portlet que se llama pdf:
File file = new File ("C:\\liferay-developer-studio\\liferay-portal-6.2-ee-sp9\\tomcat-7.0.42\\webapps\\Formulario-portlet\\pdf\\ejemplo.pdf");
posteriormente añado información al pdf con la librería itextpdf
Luego en el html:
<a href="<%= request.getContextPath() %>/pdf/ejemplo.pdf" target="_blank">abrir</a>
Y me abre el pdf.
El problema es que es una ruta absoluta y necesitaría una ruta relativa. ¿cómo podría hacerlo?
Muchas gracias de antemano.
Saludos.
Simplemente hacerlo de otra forma. ¿Por qué no usas la DL y así despues obtener la URL mediante la API (DLUtil)?
En caso contrario tendrías que hacer un portlet implementando el metodo serveResource para obtener ese fichero y enviarlo al cliente.
Inma Moram, modificado hace 8 años.
RE: Crear un fichero en mi portlet
New Member Mensajes: 5 Fecha de incorporación: 16/12/15 Mensajes recientes
Gracias Juan por la pronta respuesta. Al leerla me puse con ello pero no lo he conseguido, hago lo siguiente:
public void anadirAlaDL (RenderRequest renderRequest, RenderResponse renderResponse, ActionRequest actionRequest){
ThemeDisplay themeDisplay = (ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
Document documento = new Document();
File file = new File ("nuevo.pdf");
FileOutputStream ficheroPdf = new FileOutputStream(file);
try {
PdfWriter.getInstance(documento,ficheroPdf).setInitialLeading(20);
} catch (DocumentException e1) {
e1.printStackTrace();
}
documento.open();
Paragraph parrafo = new Paragraph("hola este es mi pdf nuevo");
parrafo.setIndentationLeft(150);
documento.close();
//Aquí está mi duda: tengo que, de alguna manera, leer mi pdf y volcarlo pero en mi caso no tengo un file sino un FileOutputStream y no encuentro la forma de hacerlo, sería algo así...
byte[] pdf = FileUtil.getBytes(ficheroPdf);
InputStream is = new ByteArrayInputStream(pdf);
Después sólo tendría que añadirlo:
DLFolder dlFolder = DLFolderLocalServiceUtil.getFolder(themeDisplay.getScopeGroupId(), 0, "CarpetaPdf");
ServiceContext serviceContext = ServiceContextFactory.getInstance(DLFileEntry.class.getName(), renderRequest);
String title= "pdf nuevo";
DLFileEntry fileEntry = DLFileEntryLocalServiceUtil.addFileEntry(themeDisplay.getUserId(),
themeDisplay.getScopeGroupId(),
themeDisplay.getScopeGroupId(),
dlFolder.getFolderId(),
file.getName(),
MimeTypesUtil.getContentType(file),
title,
renderRequest.getParameter("name"),
"",
0,
null,
file,
is,
file.getTotalSpace(),
serviceContext);
}
No sé si estoy en buena dirección.
Muchas gracias de antemano.
Saludos!
public void anadirAlaDL (RenderRequest renderRequest, RenderResponse renderResponse, ActionRequest actionRequest){
ThemeDisplay themeDisplay = (ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
Document documento = new Document();
File file = new File ("nuevo.pdf");
FileOutputStream ficheroPdf = new FileOutputStream(file);
try {
PdfWriter.getInstance(documento,ficheroPdf).setInitialLeading(20);
} catch (DocumentException e1) {
e1.printStackTrace();
}
documento.open();
Paragraph parrafo = new Paragraph("hola este es mi pdf nuevo");
parrafo.setIndentationLeft(150);
documento.close();
//Aquí está mi duda: tengo que, de alguna manera, leer mi pdf y volcarlo pero en mi caso no tengo un file sino un FileOutputStream y no encuentro la forma de hacerlo, sería algo así...
byte[] pdf = FileUtil.getBytes(ficheroPdf);
InputStream is = new ByteArrayInputStream(pdf);
Después sólo tendría que añadirlo:
DLFolder dlFolder = DLFolderLocalServiceUtil.getFolder(themeDisplay.getScopeGroupId(), 0, "CarpetaPdf");
ServiceContext serviceContext = ServiceContextFactory.getInstance(DLFileEntry.class.getName(), renderRequest);
String title= "pdf nuevo";
DLFileEntry fileEntry = DLFileEntryLocalServiceUtil.addFileEntry(themeDisplay.getUserId(),
themeDisplay.getScopeGroupId(),
themeDisplay.getScopeGroupId(),
dlFolder.getFolderId(),
file.getName(),
MimeTypesUtil.getContentType(file),
title,
renderRequest.getParameter("name"),
"",
0,
null,
file,
is,
file.getTotalSpace(),
serviceContext);
}
No sé si estoy en buena dirección.
Muchas gracias de antemano.
Saludos!
Inma Moram, modificado hace 8 años.
RE: Crear un fichero en mi portlet
New Member Mensajes: 5 Fecha de incorporación: 16/12/15 Mensajes recientes
Al final lo he hecho de esa forma:
ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
// creo el pdf.
Document documento = new Document();
File file = new File("mipdf.pdf");
FileOutputStream ficheroPdf = new FileOutputStream(file);
try {
PdfWriter.getInstance(documento,ficheroPdf).setInitialLeading(20);
} catch (DocumentException e1) {
e1.printStackTrace();
}
documento.open();
Paragraph parrafo = new Paragraph("este es mi pdf");
documento.add(parrafo);
documento.close();
File file2 = new File (file.getAbsolutePath());
byte[] imageBytes = FileUtil.getBytes(file2);
InputStream is = new ByteArrayInputStream(imageBytes);
// creo el pdf en la dl
DLFolder dlFolder = DLFolderLocalServiceUtil.getFolder(themeDisplay.getScopeGroupId(), 0, "carpetaPdf");
ServiceContext serviceContext = ServiceContextFactory.getInstance(DLFileEntry.class.getName(), actionRequest);
String title= "mipdf.pdf";
DLFileEntry fileEntry = DLFileEntryLocalServiceUtil.addFileEntry(themeDisplay.getUserId(),
themeDisplay.getScopeGroupId(),
themeDisplay.getScopeGroupId(),
dlFolder.getFolderId(),
file.getName(),
MimeTypesUtil.getContentType(file),
title,
"",
"",
0,
null,
file2,
is,
file.length(),
serviceContext);
DLFileEntry pdf = DLFileEntryLocalServiceUtil.getDLFileEntry(fileEntry.getFileEntryId());
String url = ("/"+"documents"+ "/" + pdf.getRepositoryId() + "/" + pdf.getFolderId() + "/" + pdf.getTitle() + "/" + pdf.getUuid() ); //genero la url.
Lo genero correctamente.
Muchas gracias.
Saludos.
ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
// creo el pdf.
Document documento = new Document();
File file = new File("mipdf.pdf");
FileOutputStream ficheroPdf = new FileOutputStream(file);
try {
PdfWriter.getInstance(documento,ficheroPdf).setInitialLeading(20);
} catch (DocumentException e1) {
e1.printStackTrace();
}
documento.open();
Paragraph parrafo = new Paragraph("este es mi pdf");
documento.add(parrafo);
documento.close();
File file2 = new File (file.getAbsolutePath());
byte[] imageBytes = FileUtil.getBytes(file2);
InputStream is = new ByteArrayInputStream(imageBytes);
// creo el pdf en la dl
DLFolder dlFolder = DLFolderLocalServiceUtil.getFolder(themeDisplay.getScopeGroupId(), 0, "carpetaPdf");
ServiceContext serviceContext = ServiceContextFactory.getInstance(DLFileEntry.class.getName(), actionRequest);
String title= "mipdf.pdf";
DLFileEntry fileEntry = DLFileEntryLocalServiceUtil.addFileEntry(themeDisplay.getUserId(),
themeDisplay.getScopeGroupId(),
themeDisplay.getScopeGroupId(),
dlFolder.getFolderId(),
file.getName(),
MimeTypesUtil.getContentType(file),
title,
"",
"",
0,
null,
file2,
is,
file.length(),
serviceContext);
DLFileEntry pdf = DLFileEntryLocalServiceUtil.getDLFileEntry(fileEntry.getFileEntryId());
String url = ("/"+"documents"+ "/" + pdf.getRepositoryId() + "/" + pdf.getFolderId() + "/" + pdf.getTitle() + "/" + pdf.getUuid() ); //genero la url.
Lo genero correctamente.
Muchas gracias.
Saludos.