es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo realizar un caché del archivo cargado por el usuario en mi sitio web sin utilizar una base de datos?

Estoy creando un sitio web para leer archivos PDF utilizando la biblioteca pdfjs, y quería hacer algo similar a este sitio web https://pdfviewer.softgateon.net/, que también utiliza pdfjs, aunque es demasiado antiguo. Una característica interesante de ese sitio web es que cuando subo mi archivo PDF y termino de leerlo, cierro mi navegador y al día siguiente, cuando abro ese sitio web, el PDF ya se encuentra en la última página que estaba leyendo. Quería agregar la misma capacidad a mi sitio web, pero no tengo idea de cómo se hace. Mi sitio web está hecho completamente en Javascript y lo he subido en las páginas de Github, https://smh6.github.io/PDFWIZ/.

Y esto es lo que sucede: carga tu archivo y luego elimino el HTML de la página de inicio y agrego el HTML de la página de modo de lectura. ¿Puedo tener esa función en mi sitio web? No tiene ningún backend, es completamente Javascript.

¿Está relacionado con el servidor que estoy utilizando o se puede hacer con Javascript?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr esta función en tu sitio web utilizando solo JavaScript sin ningún backend, puedes hacer uso de la caché del navegador. Cuando un usuario cierra su navegador, la caché del navegador guarda su última ubicación en el archivo PDF. Entonces, cuando el usuario regrese a tu sitio web al día siguiente, la caché del navegador recuperará la ubicación almacenada y cargará el archivo PDF desde ese punto.

    Para implementar esto, puedes utilizar el objeto sessionStorage para guardar la ubicación de la última página que el usuario estaba leyendo en el archivo PDF. Cada vez que el usuario cambie de página, puedes actualizar este valor almacenado. Luego, al cargar la página, puedes verificar si hay una ubicación almacenada en el objeto sessionStorage y utilizarla para cargar el archivo PDF en la ubicación correcta.

    Aquí tienes un ejemplo de código para empezar:

    // Cuando el PDF se ha cargado
    const PDF = await pdfjsLib.getDocument({ url: pdfUrl }).promise;
    const totalPages = PDF.numPages;
    
    // Verificar si la ubicación está almacenada en sessionStorage
    const storedPage = sessionStorage.getItem('lastPage');
    
    if (storedPage) {
      // Si la página almacenada es válida, cargar el PDF en esa página
      const pageNum = parseInt(storedPage);
      if (pageNum >= 0 && pageNum <= totalPages) {
        loadPdf(pdfUrl, pageNum);
      }
    }
    
    // Cuando el usuario cambie de página, actualizar sessionStorage con el número de página actual
    PDFDocumentProxy.getPage(pageNum).then(function(page) {
      page.getTextContent().then(function(text) {
        const lastPageNum = pageNum.toString(); // Almacenar como cadena de texto
        sessionStorage.setItem('lastPage', lastPageNum);
      });
    });
    

    Este código asume que tienes una función loadPdf que carga el PDF y lo muestra en el número de página correcto. Puedes reemplazar esto con tu código existente.

    Ten en cuenta que esta característica depende de la caché del navegador del usuario, por lo que puede no funcionar si el usuario borra su caché o utiliza un navegador/dispositivo diferente.

Comments are closed.