Convert PDF File to PDF/A

Aspose.PDF позволяет вам преобразовать PDF файл в файл, соответствующий стандарту PDF/A. Прежде чем это сделать, файл должен быть проверен. Эта статья объясняет, как это сделать.

Обратите внимание, что мы следуем Adobe Preflight для проверки соответствия PDF/A. Все инструменты на рынке имеют своё собственное “представление” о соответствии PDF/A. Пожалуйста, ознакомьтесь с этой статьей о инструментах проверки PDF/A для справки. Мы выбрали продукты Adobe для проверки того, как Aspose.PDF создаёт PDF файлы, потому что Adobe находится в центре всего, что связано с PDF.

Перед преобразованием PDF в файл, соответствующий стандарту PDF/A, проверьте PDF с помощью метода validate. Результат проверки сохраняется в XML файл, и затем этот результат также передается в метод convert. Вы также можете указать действие для элементов, которые не могут быть преобразованы, используя перечисление ConvertErrorAction.

Конвертация PDF в PDF/A_1b

Следующий фрагмент кода показывает, как конвертировать PDF файлы в соответствие с PDF/A-1b.

public void convertPDFtoPDFa1b() {
        // Открыть документ
        try {
            document = new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        // Преобразовать в документ, соответствующий PDF/A
        // Во время процесса конвертации также выполняется проверка
        File logFileName = new File(fileStorage,"PDF-to-PDFA-log.xml");
        File pdfaFileName = new File(fileStorage,"PDF-to-PDFA.pdf");
        document.convert(logFileName.toString(), PdfFormat.PDF_A_1B, ConvertErrorAction.Delete);

        // Сохранить выходной документ
        document.save(pdfaFileName.toString());
    }

Для выполнения только проверки используйте следующую строку кода:

public void ValidatePDF_A_1B() {
        // Открыть документ
        try {
            document = new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        // Проверка на соответствие документу PDF/A

        File logFileName = new File(fileStorage,"PDF-to-PDFA-log.xml");
        if (document.validate(logFileName.toString(), PdfFormat.PDF_A_1B)){
            resultMessage.setText("Документ является действительным");
        }
        else {
            resultMessage.setText("Документ не является действительным");
        }
    }

Конвертация PDF в PDF/A_3b

    public void convertPDFtoPDFa3b() {
        // Открыть документ
        try {
            document = new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        // Преобразование в документ, соответствующий PDF/A
        // Во время процесса преобразования также выполняется проверка
        File logFileName = new File(fileStorage,"PDF-to-PDFA-log.xml");
        File pdfaFileName = new File(fileStorage,"PDF-to-PDFA.pdf");

        document.convert(logFileName.toString(), PdfFormat.PDF_A_3B, ConvertErrorAction.Delete);

        // Сохранить выходной документ
        try {
            document.save(pdfaFileName.toString());
        }
        catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }
        resultMessage.setText(R.string.success_message);
    }

PDF to PDF/A_3a Конвертация

public void convertPDFtoPDFa3a() {
        // Открыть документ
        try {
            document = new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        // Преобразовать в документ, соответствующий PDF/A
        // В процессе преобразования также выполняется проверка
        File logFileName = new File(fileStorage,"PDF-to-PDFA-log.xml");
        File pdfaFileName = new File(fileStorage,"PDF-to-PDFA.pdf");

        document.convert(logFileName.toString(), PdfFormat.PDF_A_3A, ConvertErrorAction.Delete);

        // Сохранить выходной документ
        try {
            document.save(pdfaFileName.toString());
        }
        catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }
        resultMessage.setText(R.string.success_message);
    }

PDF to PDF/A_2a Конвертация

public void convertPDFtoPDFa2a() {
        // Открыть документ
        try {
            document = new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        // Преобразовать в документ, соответствующий PDF/A
        // В процессе преобразования также выполняется проверка
        File logFileName = new File(fileStorage,"PDF-to-PDFA-log.xml");
        File pdfaFileName = new File(fileStorage,"PDF-to-PDFA.pdf");

        document.convert(logFileName.toString(), PdfFormat.PDF_A_2A, ConvertErrorAction.Delete);

        // Сохранить выходной документ
        try {
            document.save(pdfaFileName.toString());
        }
        catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }
        resultMessage.setText(R.string.success_message);
    }

PDF к PDF/A_3U Конвертация

 public void convertPDFtoPDFa3u() {
        // Открыть документ
        try {
            document = new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        // Преобразовать в документ, соответствующий PDF/A
        // Во время процесса преобразования также выполняется проверка
        File logFileName = new File(fileStorage,"PDF-to-PDFA-log.xml");
        File pdfaFileName = new File(fileStorage,"PDF-to-PDFA.pdf");

        document.convert(logFileName.toString(), PdfFormat.PDF_A_3U, ConvertErrorAction.Delete);

        // Сохранить выходной документ
        try {
            document.save(pdfaFileName.toString());
        }
        catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }
        resultMessage.setText(R.string.success_message);
    }

Создать PDF/A-3 и прикрепить XML файл

Aspose.PDF для Android через Java предлагает функцию преобразования PDF файлов в формат PDF/A, а также поддерживает возможность добавления файлов в качестве вложений к PDF документу. В случае, если у вас есть требование прикрепить файлы в соответствии с форматом PDF/A, мы рекомендуем использовать значение PDF_A_3A из перечисления com.aspose.pdf.PdfFormat. Формат PDF/A_3a предоставляет возможность прикреплять любые форматы файлов в качестве вложений к файлу, соответствующему стандарту PDF/A. Однако, после того как файл прикреплен, его следует вновь преобразовать в формат Pdf-3a, чтобы исправить метаданные. Пожалуйста, ознакомьтесь со следующим фрагментом кода.

 public void convertPDFtoPDFa3u_attachXML() {
        // Открыть документ
        try {
            document = new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        // Преобразовать в документ, соответствующий PDF/A
        // Во время процесса преобразования также выполняется проверка
        File logFileName = new File(fileStorage,"PDF-to-PDFA-log.xml");
        File pdfaFileName = new File(fileStorage,"PDF-to-PDFA.pdf");
        File attachment = new File(fileStorage,"sample.xml");

        // Сохранить выходной документ
        try {
            // загрузить XML файл
            FileSpecification fileSpecification = new FileSpecification(attachment.toString(), "Пример XML файла");
            // Добавить вложение в коллекцию вложений документа
            document.getEmbeddedFiles().add(fileSpecification);
            document.convert(logFileName.toString(), PdfFormat.PDF_A_3B, ConvertErrorAction.Delete);
            document.save(pdfaFileName.toString());
        }
        catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }
        resultMessage.setText(R.string.success_message);
    }