展开全部
不行的话建议可以换一个,有免费版的Spire.PDF for Java来生成和加密PDF文件的效果也都不错62616964757a686964616fe4b893e5b19e31333431356133,测试过生成的结果文档没出现什么问题,你可以参考下面的代码,看能不能解决你的问题:import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.*;
import com.spire.pdf.security.PdfEncryptionKeySize;
import com.spire.pdf.security.PdfPermissionsFlags;
import java.awt.*;
import java.awt.geom.Point2D;
import java.util.EnumSet;
public class CreatePDF {
public static void main(String[] args){
//创建PdfDocument对象
PdfDocument doc = new PdfDocument();
//添加一页
PdfPageBase page = doc.getPages().add();
//绘入文字
String str = "Java基础语法\nJava保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用。\n" +
"byValue、cast、future、 generic、 inner、 operator、 outer、 rest";
//创建单色画刷对象
PdfSolidBrush brush1 = new PdfSolidBrush(new PdfRGBColor(Color.BLUE));
//创建TrueType字体对象
PdfTrueTypeFont font1= new PdfTrueTypeFont(new Font("Arial Unicode MS",Font.PLAIN,14),true);
PdfStringFormat format1 = new PdfStringFormat();//创建PDF字符串格式
format1.setAlignment(PdfTextAlignment.Center);//设置文本居中
format1.setLineSpacing(25f);//设置行距
//创建Rectangle2D对象
page.getCanvas().drawString(str, font1, brush1, new Point2D.Float((float) (page.getActualBounds(true).getWidth() / 2), 0),format1);
//加密PDF文档
PdfEncryptionKeySize keySize = PdfEncryptionKeySize.Key_128_Bit;
String openPassword = "open";
String permissionPassword = "permission";
EnumSet flags = EnumSet.of(PdfPermissionsFlags.Print, PdfPermissionsFlags.Fill_Fields);
doc.getSecurity().encrypt(openPassword, permissionPassword, flags, keySize);
//保存到PDF文档
doc.saveToFile("output.pdf");
}
}
生成效果如下: