小编mkl*_*mkl的帖子

如何使用 iText 列表将具有不同权重的文本添加到单个 ListItem

我使用 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)

java pdf-generation itext itext7

1
推荐指数
1
解决办法
1313
查看次数

如何为时间戳签名启用LTV并设置不允许更改pdf?

我正在使用数字证书签署 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文件。那么,我该怎么做才能达到最终的效果呢?

java certificate itext digital-signature

1
推荐指数
1
解决办法
3183
查看次数

即使 FormFlattening 属性为 false,Itextsharp 表单也会被展平

我有以下方法,该方法应该在给定坐标处的 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)

c# pdf itext

0
推荐指数
1
解决办法
1031
查看次数

PDFBOX 安全性不起作用

我正在使用 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)

pdf security pdf-generation pdfbox

0
推荐指数
1
解决办法
903
查看次数