如何更改代码以使其与itext 7配合使用

如何更改代码以使其与itext 7配合使用,itext,itext7,Itext,Itext7,以下代码与iText 5配合得很好: LEVEL = PdfAConformanceLevel.PDF_A_3A writer = PdfAWriter.getInstance(document, baos, LEVEL) iText 7的正确语法是什么 在哪里可以找到有关iText 7的示例和文档?为什么如此负面?似乎你想给我额外的压力来写文档。这有点令人沮丧。我认为鼓励更有效。然而,你声称没有文件是错误的 见 您忽略了一个示例,在该示例中,我们将一个CSV文件转换为PDF/a-3文档,并将

以下代码与iText 5配合得很好:

LEVEL = PdfAConformanceLevel.PDF_A_3A
writer = PdfAWriter.getInstance(document, baos, LEVEL)
iText 7的正确语法是什么


在哪里可以找到有关iText 7的示例和文档?

为什么如此负面?似乎你想给我额外的压力来写文档。这有点令人沮丧。我认为鼓励更有效。然而,你声称没有文件是错误的

您忽略了一个示例,在该示例中,我们将一个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)));
        }
    }
}

事实上,我确实这样做了,对于那个版本来说仍然是这样,但这需要相当大的更改,而这些更改没有适当的文档记录(目前网站上可能有一个更改日志,但在我搜索了一个多小时后发现的任何地方都没有)。最近我收到了很多电子邮件,鼓励我在欧洲竞争中投票支持该公司,与开发者分享你所做的包更改以及如何使用新模型,这似乎不是一个好主意吗?我看到我的上升投票将负分变成了中性的0分。没有更改日志,因为iText 7是从头重写的。变更日志根本没有任何意义。关于文档,您是对的:我们需要更多文档。然而,我们决定使用精益方法,并以与iText 0.30相同的方式提供iText 7。我们本可以等到iText 7发布完成文档,但从本质上讲,我们仍然是开源开发人员,我们回到了我们的基层:让我们发布代码,这样操作系统开发人员就可以使用iText 7了。顺便说一下:每一个不必要的问题都会占用编写过程的时间。这本书还有第二个教程:当我有任务要做而阻碍写作时,不要低估我作为一名作家的挫败感。写作很难。我宁愿有人给我发建设性的批评(比如带有打字错误和错误的报告),也不愿有人通过发表负面批评来放慢写作速度。