【问题标题】:PDF file generation. JavaPDF 文件生成。爪哇
【发布时间】:2021-01-15 11:47:21
【问题描述】:

我正在制作一个 pdf 文件。在 Idea 在本地生成文件时 - 正确生成了 pdf。如果您将此文件发送到 MiniO S3 - 将生成符号“#”而不是俄罗斯字母

我自己尝试通过 metadata.setContentType ("application / pdf; charset = utf-8"); 明确指定编码没有帮助:-(

现在我更倾向于添加字体。告诉我如何将其添加到现有代码中。

提前谢谢你!

@SneakyThrows
    public byte[] createDocument(PaymentInstructionModel model) {
        WordprocessingMLPackage word = Docx4J.load(new ClassPathResource("template.docx").getInputStream());
        MainDocumentPart mainDocumentPart = word.getMainDocumentPart();
        Map<String, String> variables = objectMapper.convertValue(model, new TypeReference<>() {});
        mainDocumentPart.variableReplace(variables);
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        Docx4J.toPDF(word, os);
        return os.toByteArray();
    }
        byte[] document = documentService.createDocument(model);
        String key = String.format("%s/%d-%d-%d_Платёж_№%s.pdf",
                event.getPaymentNumber(),
                event.getPaymentDate().getYear(),
                event.getPaymentDate().getMonthValue(),
                event.getPaymentDate().getDayOfMonth(),
                event.getPaymentNumber());

        ObjectMetadata metadata = new ObjectMetadata();
        metadata.setContentLength(document.length);

        amazonS3.putObject(S3Buckets.CLIENT_PAYMENT_PDF_BUCKET, key, new ByteArrayInputStream(document), metadata); 

【问题讨论】:

  • 可能正在使用库 IText? mvnrepository.com/artifact/com.itextpdf/itextpdf
  • 您的代码似乎没有使用 iText。
  • ''' byte[] docBytes = documentService.createDocument(model);文档文档 = 新文档(); BaseFont helvetica = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED);字体字体 = new Font(helvetica, 12, Font.NORMAL); PdfWriter.getInstance(document, new FileOutputStream("test.pdf"));文档.open(); document.add(new Chunk(Arrays.toString(docBytes), font)); // TODO document.close(); '''

标签: java pdf itext minio


【解决方案1】:

试试这个方法:

public String escapeHtml(String value) {
    if (value == null) {
        return "";
    } else {
        return value
                .replaceAll("\u001F", "")
                .replaceAll("&", "&amp;")
                .replaceAll("<", "&lt;")
                .replaceAll(">", "&gt;")
                .replaceAll("\"", "&quot;");
    }
}

【讨论】:

  • 非常感谢您的回答!我宁愿在生成 PDF 文件时添加字体
猜你喜欢
  • 2012-08-15
  • 2022-10-02
  • 2015-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-06
  • 2015-08-20
  • 1970-01-01
相关资源
最近更新 更多