gpt4 book ai didi

java - 拆分后 PDDocument 中的页面为空白

转载 作者:行者123 更新时间:2023-11-30 07:58:35 25 4
gpt4 key购买 nike

我正在尝试创建一个PDDocument,然后向其中添加两个页面。第一个包含文本“第一页”,第二个为空白。然后,我拆分 PDDocument 并将其放入列表中。当我尝试访问第一页(通过使用 get 方法)时,我将其保存,希望看到带有“第一页”文本的 pdf,但我得到的只是一个空白页。有什么建议吗?

package split;

import java.io.File;
import java.util.List;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.util.Splitter;

public class pdfSplit {


public static void main(String[] args) throws Exception {

PDPage page1, page2;

page1 = new PDPage();
page2 = new PDPage();

Splitter splitter = new Splitter();
PDDocument document = new PDDocument();

document.addPage(page1);
document.addPage(page2);

List<PDDocument> splittedPDF = splitter.split(document);

PDFont font = PDType1Font.HELVETICA_BOLD;

PDPageContentStream contentStream = new PDPageContentStream(document, page1);

contentStream.beginText();
contentStream.setFont( font, 50 );
contentStream.moveTextPositionByAmount( 100, 700 );
contentStream.drawString( "First page" );
contentStream.endText();

contentStream.close();



document = splittedPDF.get(0); //No effect
document.save("Random.pdf");
}

}

最佳答案

您的页面是空白的,因为您在写入页面内容流之前进行了拆分。解决方案:将拆分代码移至关闭内容流后。正确的代码如下所示:

    PDPage page1, page2;

page1 = new PDPage();
page2 = new PDPage();

Splitter splitter = new Splitter();
PDDocument document = new PDDocument();

document.addPage(page1);
document.addPage(page2);

PDFont font = PDType1Font.HELVETICA_BOLD;

PDPageContentStream contentStream = new PDPageContentStream(document, page1);

contentStream.beginText();
contentStream.setFont(font, 50);
contentStream.moveTextPositionByAmount(100, 700);
contentStream.drawString("First page");
contentStream.endText();

contentStream.close();
// now the page is filled!


List<PDDocument> splittedPDF = splitter.split(document);

document = splittedPDF.get(0);
document.save("Random.pdf");

(此答案是在1.8.10版本中完成的)

关于java - 拆分后 PDDocument 中的页面为空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32276872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com