Cómo abrir un archivo pvf
El sistema de archivos virtual (PVF) de PDFLib permite a los clientes proporcionar datos directamente desde la memoria. Esto puede mejorar la eficiencia, especialmente al leer datos de la base de datos o cuando el cliente ya tiene los datos necesarios en la memoria. PVF se basa en archivos virtuales con nombre de solo lectura. Puede usarse como un archivo normal a través de funciones API, e incluso puede usarse en archivos de configuración UPR. El programa cliente puede generar nombres de archivos virtuales de cualquier forma. Obviamente, los nombres de los archivos virtuales deben evitar conflictos con los archivos de disco reales. Por este motivo, se recomienda utilizar la siguiente convención de nomenclatura jerárquica (el nombre de archivo se refiere al archivo único en el ámbito especificado por el programa cliente). Al mismo tiempo, se recomienda utilizar sufijos de nombres de archivos estándar. Archivo de imagen rasterizada: /pvf/image/filename Archivo de fuente: /pvf/font/filenamePerfiles ICC: /pvf/iccprofile/filename Codificación y página de códigos: /pvf/codepage/filenameDocumento PDF /pvf/pdf/filenamePDFLib buscar nombres al abrir; un archivo, primero verifica si el nombre del archivo apunta a un archivo virtual existente antes de intentar abrir el archivo en el disco duro. El ciclo de vida de los archivos virtuales. Algunas funciones utilizan todos los datos del archivo virtual, otras pueden leer sólo una parte del archivo y utilizar el resto en otros momentos. Por este motivo, se debe considerar el ciclo de vida de los archivos virtuales. PDFLib agrega un bloqueo interno a cada archivo virtual y no lo desbloquea hasta que el archivo ya no es necesario. A menos que el cliente solicite explícitamente que se copien los datos (utilizando la opción de copia de la función PDF_create_pvf()), el contenido del archivo virtual solo se puede modificar, eliminar o liberar (cuando ya no esté bloqueado por PDFLib). PDFLib elimina automáticamente todos los archivos virtuales cuando se llama a PDF_delete(). Sin embargo, el contenido real del archivo (los datos del archivo virtual) debe ser liberado por el programa cliente. Diferentes estrategias de gestión PVF admite diferentes métodos para gestionar archivos virtuales. Las reglas que lo rigen se basan en el hecho de que PDFLib puede necesitar acceder al contenido de un archivo virtual después de llamar a una función que toma un nombre de archivo virtual, pero nunca después de llamar a PDF_close(). Tenga en cuenta que llamar a PDF_delete_pvf() no libera el contenido real del archivo (a menos que se proporcione la opción de copiar), sino que libera la estructura de datos utilizada para administrar el nombre del archivo PVF. Esto lleva a las siguientes estrategias: Minimizar el consumo de memoria: se recomienda llamar a PDF_delete_pvf() inmediatamente después de llamar a una API que acepta un nombre de archivo virtual o inmediatamente después de llamar a PDF_close(). La segunda llamada es necesaria porque es posible que PDFLib aún necesite acceder a los datos, por lo que es posible que la primera llamada no pueda eliminar el bloqueo. Hay casos en los que la primera llamada ha liberado los datos, pero la segunda llamada no hará ningún daño. El programa cliente solo liberará los datos del archivo si PDF_delete_pvf() tiene éxito. Optimice el rendimiento reutilizando archivos virtuales: es posible que algunos programas cliente quieran reutilizar ciertos datos (por ejemplo: definiciones de fuentes) en una serie de salidas de documentos para evitar crear o eliminar el mismo contenido de archivo varias veces. En este caso, se recomienda no llamar a PDF_delete_pvf() hasta que se hayan generado todos los documentos PDF que utilizan archivos virtuales. Programación diferida: si el consumo de memoria tiene poco impacto, el programa cliente puede optar por no llamar a PDF_delete_pvf(). PDFLib elimina internamente todos los archivos virtuales inéditos en PDF_delete(). En todos los casos, el programa cliente solo puede liberar los datos correspondientes después de que la llamada a PDF_delete_pvf() sea exitosa o después de que se realice la llamada a PDF_delete()