1

次のコードは、iText 5 で適切に動作します。

LEVEL = PdfAConformanceLevel.PDF_A_3A
writer = PdfAWriter.getInstance(document, baos, LEVEL)

iText 7 の正しい構文は何ですか?

iText 7 に関する例とドキュメントはどこにありますか?

4

1 に答える 1

1

なぜそんなに否定的なのですか?ドキュメントを書くように私に余分な圧力をかけたいようですね。それはちょっとイライラします。励ましの方が効果的だと思います。それにもかかわらず、ドキュメントがないというあなたの主張は間違っています。

iText 7: Jump-Start チュートリアルの第 7 章: PDF/UA および PDF/A ドキュメントの作成を参照してください。

UnitedStates_PDFA_3a のでは、CSV ファイルを PDF/A-3 ドキュメントに変換し、その CSV ファイルを添付ファイルとして追加しています。

public void createPdf(String dest) throws IOException, XMPException {
    PdfADocument pdf = new PdfADocument(new PdfWriter(dest),
        PdfAConformanceLevel.PDF_A_3A,
        new PdfOutputIntent("Custom", "", "http://www.color.org",
                "sRGB IEC61966-2.1", new FileInputStream(INTENT)));
    Document document = new Document(pdf, PageSize.A4.rotate());
    document.setMargins(20, 20, 20, 20);

    //Setting some required parameters
    pdf.setTagged();
    pdf.getCatalog().setLang(new PdfString("en-US"));
    pdf.getCatalog().setViewerPreferences(
            new PdfViewerPreferences().setDisplayDocTitle(true));
    PdfDocumentInfo info = pdf.getDocumentInfo();
    info.setTitle("iText7 PDF/A-3 example");

    //Add attachment
    PdfDictionary parameters = new PdfDictionary();
    parameters.put(PdfName.ModDate, new PdfDate().getPdfObject());
    PdfFileSpec fileSpec = PdfFileSpec.createEmbeddedFileSpec(
        pdf, Files.readAllBytes(Paths.get(DATA)), "united_states.csv",
        "united_states.csv", new PdfName("text/csv"), parameters,
        PdfName.Data, false);
    fileSpec.put(new PdfName("AFRelationship"), new PdfName("Data"));
    pdf.addFileAttachment("united_states.csv", fileSpec);
    PdfArray array = new PdfArray();
    array.add(fileSpec.getPdfObject().getIndirectReference());
    pdf.getCatalog().put(new PdfName("AF"), array);

    //Embed fonts
    PdfFont font = PdfFontFactory.createFont(FONT, true);
    PdfFont bold = PdfFontFactory.createFont(BOLD_FONT, true);

    // Create content
    Table table = new Table(new float[]{4, 1, 3, 4, 3, 3, 3, 3, 1});
    table.setWidthPercent(100);
    BufferedReader br = new BufferedReader(new FileReader(DATA));
    String line = br.readLine();
    process(table, line, bold, true);
    while ((line = br.readLine()) != null) {
        process(table, line, font, false);
    }
    br.close();
    document.add(table);

    //Close document
    document.close();
}

public void process(Table table, String line, PdfFont font, boolean isHeader) {
    StringTokenizer tokenizer = new StringTokenizer(line, ";");
    while (tokenizer.hasMoreTokens()) {
        if (isHeader) {
            table.addHeaderCell(new Cell().setHorizontalAlignment(HorizontalAlignment.CENTER).add(new Paragraph(tokenizer.nextToken()).setHorizontalAlignment(HorizontalAlignment.CENTER).setFont(font)));
        } else {
            table.addCell(new Cell().setHorizontalAlignment(HorizontalAlignment.CENTER).add(new Paragraph(tokenizer.nextToken()).setHorizontalAlignment(HorizontalAlignment.CENTER).setFont(font)));
        }
    }
}
于 2016-06-11T09:21:23.470 に答える