Java 设置压缩级别(0),但是否使用PDFBox?

Java 设置压缩级别(0),但是否使用PDFBox?,java,pdf,itext,pdfbox,Java,Pdf,Itext,Pdfbox,我知道在iText中,我们有“setCompressionLevel(0)”命令,以便能够以更直观的方式显示文件结构。 但现在,我正在使用PDFBox。那么如何使用PDFBox压缩级别0? 我用PDFBox创建了一个PDF文档,其中包含“hello world”作为字符串。打开文件结构时,我注意到以下流: stream xœs áÒw3P04RIã24U0¶0UIáÒÈHÍÉÉW(Ï/ÊIÑTÉâr á endStream 我的问题是必须使用哪个命令才能显示以下流: stream <he

我知道在iText中,我们有“setCompressionLevel(0)”命令,以便能够以更直观的方式显示文件结构。 但现在,我正在使用PDFBox。那么如何使用PDFBox压缩级别0? 我用PDFBox创建了一个PDF文档,其中包含“hello world”作为字符串。打开文件结构时,我注意到以下流:

stream
xœs
áÒw3P04RIã24U0¶0UIáÒÈHÍÉÉW(Ï/ÊIÑTÉâr
á
endStream
我的问题是必须使用哪个命令才能显示以下流:

stream
<hello world>Tj
endStream

与iText相反,PDFBox不提供控制PDF压缩的全局设置。您可以基于每个流控制压缩,但是:

我假设您使用了一个
PDPageContentStream
实例来生成PDF的页面内容流(否则请提供代码),并使用2参数构造函数实例化了该类

public PDPageContentStream( PDDocument document, PDPage sourcePage )
    throws IOException
此构造函数替换页面的当前页面内容(如果有)并请求压缩

如果改用4参数构造函数,则可以控制以下行为:

public PDPageContentStream( PDDocument document, PDPage sourcePage,
    boolean appendContent, boolean compress ) throws IOException
PS:您在评论中说,禁用压缩后,您将获得

<4C61205374E967616E6F677261706869652064616E7320504446> Tj
你可以这样写

pageContentStream.appendRawCommands("(La Stéganographie dans PDF) Tj\n");

注意:这显然只适用于字符串仅包含ISO-8859-1范围内的字符(因为下面的
appendRawCommands
检索该编码的字节),并且字体编码与ISO-8859-1一致,至少在涉及的字符方面是如此。

非常感谢,我的问题解决了:)我非常感谢你的回答
pageContentStream.drawString("La Stéganographie dans PDF");
pageContentStream.appendRawCommands("(La Stéganographie dans PDF) Tj\n");