Perguntas Frequentes

Perguntas Frequentes

Qual é o modelo de licenciamento do Aspose.PDF FOSS for C++?

Aspose.PDF FOSS for C++ é licenciado sob MIT. É gratuito para uso em produtos comerciais e não comerciais, sem chave de ativação, limites de chamadas API, ou acordo comercial necessário.

Como adiciono Aspose.PDF FOSS for C++ a um projeto CMake?

Faça o vendor ou clone o repositório na árvore do seu projeto, adicione-o como um subdiretório e vincule o alvo da biblioteca estática:

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

Quais versões do compilador e do CMake são necessárias?

Um compilador C++20 — clang 16+, gcc 13+ ou MSVC 2022 17.5+ — e CMake 3.22 ou superior. A compilação também requer Python 3 apenas em tempo de construção, para gerar os contornos de fonte Standard-14 incluídos.

A biblioteca tem alguma dependência em tempo de execução?

Não. Aspose.PDF FOSS for C++ vincula apenas à biblioteca padrão C++ — nenhuma dependência de PDF, imagem ou compressão de terceiros é necessária em tempo de execução.

Quais formatos o Aspose.PDF FOSS for C++ pode ler e exportar?

Ele abre e salva documentos PDF nativos. Páginas renderizadas podem ser exportadas para Bmp, Jpeg e Tiff via BmpDevice, JpegDevice e TiffDevice, e para texto simples via TextDevice. Conteúdo SVG pode ser importado para um documento via SvgLoadOptions.

Como abrir um PDF existente e verificar a contagem de páginas?

#include <aspose/pdf/document.hpp>

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

Como extrair texto de um documento PDF?

Use TextAbsorber, acesse o documento e, em seguida, leia o texto coletado:

#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();

Como renderizar uma página PDF para uma imagem?

Use uma classe de dispositivo como PngDevice com um alvo Resolution, então processe uma única página para um fluxo de saída:

#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);

Como criptografar um documento PDF?

Chame Document.Encrypt() com uma senha de usuário, uma senha de proprietário, um valor Permissions e um 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 e AESx256 estão todos disponíveis através do enum CryptoAlgorithm. Document.Decrypt() remove a criptografia de um documento já aberto.

Como ler ou preencher valores de campo AcroForm?

Itere Form.Fields() a partir do documento e leia ou defina o valor de cada campo pelo seu nome 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");

Existem limitações conhecidas na versão atual?

Sim. XmpValue — o tipo de valor usado para entradas de metadados XMP retornadas por Document.Metadata() — expõe auxiliares de verificação de tipo IsDateTime(), IsField(), IsNamedValue(), IsRaw(), IsNamedValues() e IsStructure() que atualmente são stubs e sempre retornam false. Código que ramifica com base nessas verificações não pode distinguir esses tipos de valor XMP. Use as verificações implementadas em vez disso — IsString(), IsInteger(), IsDouble(), IsArray() — ou chame o acessador correspondente (ToStringValue(), ToInteger(), ToDouble(), ToArray()) diretamente quando o tipo do valor já for conhecido a partir do contexto. Um pequeno número de tipos internos de baixo nível também contém construtores stub que não são exercidos pelo código típico de processamento de documentos.

Onde está o código-fonte e o rastreador de issues?

O código-fonte e o rastreador de problemas estão disponíveis em https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Cpp.

Ver também

 Português