我使用 iText 7 创建了一个问题和答案列表,其中问题和答案都显示在列表的同一行中。我试图将问题加粗,同时保留正常字体粗细的答案。当我运行类似于下面显示的代码时,我得到这个 (com.itextpdf.layout.element.Text@73df99a1) 代替粗体文本。是否可以在同一个 iText 7 ListItem 中获得各种粗细的字体?
String dest = "destination.pdf"
PdfWriter writer = new PdfWriter(dest);
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf);
List qaList = new List();
qaList.add(new ListItem(new Text("Question 1?").setBold() + "Answer 1"));
qaList.add(new ListItem(new Text("Question 2?").setBold() + "Answer 2"));
document.add(qaList);
document.close();
Run Code Online (Sandbox Code Playgroud) 我正在使用数字证书签署 pdf iText。现在我可以签名并添加 LTV,但证书级别可以是:
signatureAppearance.setCertificationLevel(PdfSignatureAppearance.CERTIFIED_FORM_FILLING_AND_ANNOTATIONS);
Run Code Online (Sandbox Code Playgroud)
我只想设置PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED. 最终结果应如下所示:
sap.setCertificationLevel(PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED);
MakeSignature.signDetached(signatureAppearance, privateKey, "SHA-512", chain, null, ocspClient, tsaClient, 0, MakeSignature.CryptoStandard.CADES);
Run Code Online (Sandbox Code Playgroud)
如果我使用上面的代码进行签名,那么使用AdobeLtvEnabling.java添加LTV在使用ACROBAT检查时会提示签名无效,因为添加LTV时该文件正在修改不可修改的PDF文件。那么,我该怎么做才能达到最终的效果呢?
我有以下方法,该方法应该在给定坐标处的 pdf 文件上标记图像,并在图层仍然分离(即未展平)的情况下返回它,我设置了 FormFlattening 属性,但它不起作用。
经过一番实验,我发现当我调用 getPdfLayers 方法时,文件不会被展平,为什么会这样呢?
public static byte[] StampLayer(System.Drawing.Image image, int x, int y, string layername)
{
var iImage = iTextSharp.text.Image.GetInstance(image, ImageFormat.Tiff);
var reader = new PdfReader(_pdfFile);
using (var ms = new MemoryStream())
{
using (var stamper = new PdfStamper(reader, ms))
{
//Don't delete otherwise the stamper flattens the layers
var layers = stamper.GetPdfLayers();
stamper.FormFlattening = false;
var logoLayer = new PdfLayer(layername, stamper.Writer);
PdfContentByte cb = stamper.GetUnderContent(1);
cb.BeginLayer(logoLayer);
//300dpi
iImage.ScalePercent(24f);
iImage.SetAbsolutePosition(x, y);
cb.AddImage(iImage);
cb.EndLayer();
stamper.Close();
return (ms.GetBuffer()); …Run Code Online (Sandbox Code Playgroud) 我正在使用 PDFBOX - 1.8.13,似乎 PDF Security 没有按预期工作。如果设置了所有者密码而未设置用户密码,如果我不提供所有者密码,PDFBOX 允许解密我的 PDF 文件。请帮助我做错的地方。
加密我的pdf文件的代码:
PDDocument document = PDDocument.load(new File("/home/dummy/dummy.pdf"),null);
AccessPermission perms = new AccessPermission();
perms.setCanAssembleDocument(false);;
perms.setCanExtractContent(false);
perms.setCanModify(false);
perms.setCanModifyAnnotations(false);
perms.setCanExtractForAccessibility(false);
perms.setCanFillInForm(false);
perms.setCanPrint(false);
perms.setReadOnly();
perms.setCanPrintDegraded(false);
perms.setCanExtractForAccessibility(false);
document.setAllSecurityToBeRemoved(false);
StandardProtectionPolicy policy = new StandardProtectionPolicy("AdminPasswordTest", "", perms);
policy.setPermissions(perms);
document.protect(policy);
document.save("/home/dummy/dummy_secured.pdf");
document.close();
Run Code Online (Sandbox Code Playgroud)
解密我的 PDF 的代码
PDDocument doc = PDDocument.load("/home/dummy/dummy_secured.pdf", true);
if (doc.isEncrypted()) { //remove the security before adding protections
doc.decrypt(""); //This should not be DECRYPTED because owner password is not provided
doc.setAllSecurityToBeRemoved(true); //This user is not provided this permissions …Run Code Online (Sandbox Code Playgroud)