Преобразование XDP в PDF с использованием Live Cycle заменяет вопросительные знаки (?) Пробелом в нескольких местах. Как это можно исправить?

Я пытался конвертировать XDP в PDF с помощью Adobe Live Cycle. Большинство моих форм оказались хорошими. Но при конвертации некоторых из них я в порядке??? заменены вместо пустых мест в определенных местах. Любые предложения о том, как я могу исправить это?

Ниже приведен фрагмент кода, который я использую:

public byte [] generatePDF (TextDocument xdpDocument) {

    try {
        Assert.notNull(xdpDocument, "XDP Document must be passed.");
        Assert.hasLength(xdpDocument.getContent(), "XDPDocument content cannot be null");
        // Create a ServiceClientFactory object
        ServiceClientFactory myFactory = ServiceClientFactory.createInstance(createConnectionProperties());
        // Create an OutputClient object
        FormsServiceClient formsClient = new FormsServiceClient(myFactory);
        formsClient.resetCache();
        String text = xdpDocument.getContent();

        String charSet = xdpDocument.getCharsetName();
        if (charSet == null || charSet.trim().length() == 0) {
            charSet = StandardCharsets.UTF_8.name();
        }
        byte[] bytes = text.getBytes();

        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
        Document inTemplate = new Document(byteArrayInputStream);
        // Set PDF run-time options
        // Set rendering run-time options
        RenderOptionsSpec renderOptionsSpec = new RenderOptionsSpec();
        renderOptionsSpec.setLinearizedPDF(true);
        renderOptionsSpec.setAcrobatVersion(AcrobatVersion.Acrobat_9);

        PDFFormRenderSpec pdfFormRenderSpec = new PDFFormRenderSpec();
        pdfFormRenderSpec.setGenerateServerAppearance(true);
        pdfFormRenderSpec.setCharset("UTF8");
        FormsResult formOut = formsClient.renderPDFForm2(inTemplate, null, pdfFormRenderSpec, null, null);
        Document xfaPdfOutput = formOut.getOutputContent();
        //If the input file is already static PDF, then below method will throw an exception - handle it
        OutputClient outClient = new OutputClient(myFactory);
        outClient.resetCache();
        Document staticPdfOutput = outClient.transformPDF(xfaPdfOutput, TransformationFormat.PDF, null, null, null);
        byte[] data = StreamIO.toBytes(staticPdfOutput.getInputStream());

        return data;
    } catch(IllegalArgumentException ex) {
        logger.error("Input validation failed for generatePDF request " + ex.getMessage());
        throw new EformsException(ErrorExceptionCode.INPUT_REQUIRED  + " - " + ex.getMessage(), ErrorExceptionCode.INPUT_REQUIRED);
    } catch (Exception e) {
        logger.error("Exception occurred in Adobe Services while generating PDF from xdpDocument..", e);
        throw new EformsException(ErrorExceptionCode.PDF_XDP_CONVERSION_EXCEPTION, e);
    }
}

1 ответ

Я предлагаю попробовать 2 вещи:

  1. Проверьте шрифт. Переключитесь на что-то очень распространенное, например, Arial / Times New Roman и посмотрите, не потеряны ли персонажи
  2. Проверьте кодировку символов. Это может быть не простой символ вопросительного знака, который вы используете, и в этом случае кодировка символов будет иметь важное значение. Самый простой способ - убедиться, что ваш знак вопроса - ascii char 63 (десятичный).

Надеюсь, это поможет.

Другие вопросы по тегам