Preguntas frecuentes

Preguntas frecuentes

¿Cuál es el modelo de licencia para Aspose.PDF FOSS for C++?

Aspose.PDF FOSS for C++ está bajo licencia MIT. Es gratuito para usar en productos comerciales y no comerciales, sin clave de activación, límites de llamadas API, ni se requiere un acuerdo comercial.

¿Cómo añado Aspose.PDF FOSS for C++ a un proyecto CMake?

Vendor o clona el repositorio en el árbol de tu proyecto, añádelo como subdirectorio y enlaza el objetivo de biblioteca estática:

add_subdirectory(aspose.pdf-foss-for-cpp)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)

¿Qué versiones del compilador y de CMake se requieren?

Un compilador C++20 — clang 16+, gcc 13+ o MSVC 2022 17.5+ — y CMake 3.22 o posterior. La compilación también requiere Python 3 solo en tiempo de compilación, para generar los contornos de fuente Standard-14 incluidos.

¿La biblioteca tiene alguna dependencia en tiempo de ejecución?

No. Aspose.PDF FOSS para C++ se enlaza únicamente con la biblioteca estándar de C++ — no se requiere ninguna dependencia de terceros para PDF, imágenes o compresión en tiempo de ejecución.

¿Qué formatos puede Aspose.PDF FOSS para C++ leer y exportar?

Abre y guarda documentos PDF nativos. Las páginas renderizadas pueden exportarse a Bmp, Jpeg y Tiff mediante BmpDevice, JpegDevice y TiffDevice, y a texto plano mediante TextDevice. El contenido SVG puede importarse en un documento mediante SvgLoadOptions.

¿Cómo puedo abrir un PDF existente y comprobar su número de páginas?

#include <aspose/pdf/document.hpp>

Aspose::Pdf::Document doc("input.pdf");
std::size_t pages = doc.Pages().Count();

¿Cómo extraigo texto de un documento PDF?

Utiliza TextAbsorber, visita el documento y luego lee el texto recopilado:

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_absorber.hpp>

Aspose::Pdf::Document doc("input.pdf");
Aspose::Pdf::Text::TextAbsorber absorber;
absorber.Visit(doc);
std::string text = absorber.Text();

¿Cómo renderizo una página PDF a una imagen?

Utiliza una clase de dispositivo como PngDevice con un Resolution de destino, luego procesa una única página a un flujo de salida:

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/png_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>

Aspose::Pdf::Document doc("input.pdf");
Aspose::Pdf::Devices::PngDevice png(Aspose::Pdf::Devices::Resolution(150));
std::ofstream out("page1.png", std::ios::binary);
png.Process(doc.Pages()[1], out);

¿Cómo encripto un documento PDF?

Llame a Document.Encrypt() con una contraseña de usuario, una contraseña de propietario, un valor Permissions y un CryptoAlgorithm:

#include <aspose/pdf/document.hpp>

Aspose::Pdf::Document doc("input.pdf");
doc.Encrypt("user-password", "owner-password",
            Aspose::Pdf::Permissions(), Aspose::Pdf::CryptoAlgorithm::AESx256);
doc.Save("encrypted.pdf");

RC4x40, RC4x128, AESx128 y AESx256 están todos disponibles a través del enumerado CryptoAlgorithm. Document.Decrypt() elimina el cifrado de un documento ya abierto.

¿Cómo leo o relleno los valores de campo AcroForm?

Itere Form.Fields() desde el documento y lea o establezca el valor de cada campo por su nombre parcial:

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/forms/form.hpp>

Aspose::Pdf::Document doc("application_form.pdf");
auto& form = doc.Form();
for (auto* field : form.Fields()) {
    if (field->PartialName() == "applicant_name") {
        field->Value("Jane Doe");
    }
}
doc.Save("application_filled.pdf");

¿Existen limitaciones conocidas en la versión actual?

Sí. XmpValue — el tipo de valor usado para las entradas de metadatos XMP devueltas por Document.Metadata() — expone ayudantes de comprobación de tipo IsDateTime(), IsField(), IsNamedValue(), IsRaw(), IsNamedValues() y IsStructure() que actualmente son stubs y siempre devuelven false. El código que ramifica en base a estas comprobaciones no puede distinguir esos tipos de valor XMP. Use las comprobaciones implementadas en su lugar — IsString(), IsInteger(), IsDouble(), IsArray() — o llame al accesor correspondiente (ToStringValue(), ToInteger(), ToDouble(), ToArray()) directamente cuando el tipo del valor ya se conozca desde el contexto. Un pequeño número de tipos internos de bajo nivel también contiene constructores stub que no son ejercidos por el código típico de procesamiento de documentos.

¿Dónde se encuentran el código fuente y el rastreador de incidencias?

El código fuente y el rastreador de incidencias están disponibles en https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Cpp.

Ver también

 Español