标签: itext7

使用 iText 7 获取 PDF 文件的创建日期

我必须创建一个工具,将其创建日期添加到几个 .pdf 文件名中。我想使用内部存储在 pdf 中的创建日期,为此我下载了 iText Community Edition。

现在,我的代码是这样开始的(VB)

Module Module1

    Sub Main()

        Dim filename As String = My.Application.CommandLineArgs(0)

        Dim PDFReader = New Pdf.PdfReader(filename)
        Dim PDFDocument = New Pdf.PdfDocument(PDFReader)

        Dim documentinfo As Pdf.PdfDocumentInfo = PDFDocument.GetDocumentInfo

        Dim author As String = documentinfo.GetAuthor
        Dim creator As String = documentinfo.GetCreator
        Dim mypdfobject = documentinfo.GetPdfObject

    End Sub

End Module
Run Code Online (Sandbox Code Playgroud)

我得到了 GetAuthor 和 GetCreator 以及其他几个 Get 方法,但我找不到像 GetCreationDate 这样的东西,只有 AddCreationDate。

如果我进一步深入 mypdfobject,我会发现映射一个 /Creationdate 标签,所以我想使用它,但是,虽然它通常采用 D:20160704132234+02'00' 格式,但有时我会发现一些看起来像是二进制数据的东西,我不知道如何解码。

有没有更好的方法来获取创建日期?

谢谢

斯特凡诺

vb.net pdf date itext7

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

如何在 iText 中为 FormFields 设置行距?

iText 7 表单字段中的默认行距似乎是 2 或 1.5,但我真的很想删除行距。通常情况下,我组线通过调用间隔setMultipliedLeading(..)一个上Paragraph对象,但也PdfAcroForm也不的亚类中,PdfTextFormField有这样的方法,只有字符串可以被设置为表单字段值。如何设置行距的值?提前致谢。

pdf-generation itext7

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

在android gradle中导入itext-7

我想在gradle中添加以下内容后将itext-7添加到android

编译'com.itextpdf:root:7.0.0'

我仍然无法找到itext的类,例如PDFWriter等.

如果有针对Android的itext-7的单独版本,请告诉我如何添加它.

PS:我已成功添加了itext-5,但我现在想使用itext-7.

pdf android itext gradle itext7

5
推荐指数
3
解决办法
7143
查看次数

iText 7 无法设置边距

我有一个 HTML 字符串,我需要将其转换为 pdf,但我需要的 pdf 必须具有特定的大小和边距。我按照示例显示,现在我有宽度和高度设置的 pdf,但我无法更改或删除边距,所以请帮助我。

 using (FileStream fs = new FileStream(somePDFFile, FileMode.OpenOrCreate, FileAccess.Write))
            {

                iText.Kernel.Pdf.PdfWriter pdfWriter = new iText.Kernel.Pdf.PdfWriter(fs);

                iText.Kernel.Pdf.PdfDocument pdfDoc = new iText.Kernel.Pdf.PdfDocument(pdfWriter);

                var v = pdfDoc.GetDefaultPageSize().ApplyMargins<iText.Kernel.Geom.Rectangle>(1, 1, 1, 1, true);
                pdfDoc.GetDefaultPageSize().SetWidth(250f);
                pdfDoc.GetDefaultPageSize().SetHeight(200f);
                pdfDoc.GetCatalog().SetLang(new iText.Kernel.Pdf.PdfString("en-US"));
                //Set the document to be tagged
                pdfDoc.SetTagged();



                iText.Html2pdf.ConverterProperties props = new iText.Html2pdf.ConverterProperties();

                iText.Html2pdf.HtmlConverter.ConvertToPdf(htmlString, pdfDoc, props);

                pdfDoc.Close();



            }
Run Code Online (Sandbox Code Playgroud)

java itext7

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

在 .NET C# 中使用 iText 7 和 GlobalSign DSS 签署文档

我们正在尝试使用 iText (v7) 和 GlobalSign DSS 创建文档签名解决方案。有没有人有这方面的经验?我在这方面找不到很多(如果有的话)例子。应该如何将 API 请求(“identity”、“certificate_path”、“timestamp”、“identity/.../sign”、...)与 iText 结合起来?

我找到了一些示例代码,但它是用 Java 编写的,并且使用了旧版本的 iText(带有 PdfStamper)。目标是创建支持 LTV 的签名(包括可见印章),服务器证书存储在 GlobalSign 的 HSM 中。

非常感谢您的帮助和/或同情!

.net c# pdf itext7

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

iText7:使用 iText 从 TIFF 多页图像创建 PDF

我正在尝试使用 iText 7.1.1 将 TIFF 图像转换为多页 PDF 文件。感谢那些让我开始阅读这篇文章使用 iText 从 TIFF 图像创建 PDF 的人。但是,它是 iText 5.5.x,我很难在 iText 7 中复制它。

我确实找到了TiffImageData.getNumberOfPages(raf)替换int pages = TiffImage.getNumberOfPages(rafa)

但是,我无法TiffImage.getTiffImage(rafa, i)在 iText7 中进行替换。我需要使用new Image(ImageDataFactory.createTiff(...)). 感谢任何建议。

iText 5.5.x 代码

import java.io.FileOutputStream;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.io.FileChannelRandomAccessSource;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.RandomAccessFileOrArray;
import com.itextpdf.text.pdf.codec.TiffImage;

public class Test1 {
    public static void main(String[] args) throws Exception {
    RandomAccessFile aFile = new RandomAccessFile("/myfolder/origin.tif", "r"); …
Run Code Online (Sandbox Code Playgroud)

tiff multipage itext7

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

将 pdf 文件中的页面复制到新文档

我正在尝试从现有.pdf文件复制一页并将其粘贴到新文档中,如下所示:

     using (var writer = new PdfWriter(OutputFile))
        {
          var reader = new PdfReader("Templates//PDF_Template_Empty.pdf");
          PdfDocument template = new PdfDocument(reader);
          var titlepage = template.GetPage(1);
          using (var pdf = new PdfDocument(writer))
            {
                pdf.AddPage(titlepage); // exception
Run Code Online (Sandbox Code Playgroud)

.AddPage()它会抛出这个异常:

iText.Kernel.PdfException:“页面 iText.Kernel.Pdf.PdfPage 无法添加到文档 iText.Kernel.Pdf.PdfDocument,因为它属于文档 iText.Kernel.Pdf.PdfDocument。”

我怎样才能解决这个问题 ?

c# pdf itext itext7

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

Itext Java 11:com.itextpdf.io.source.ByteBufferRandomAccessSource$1 的非法反射访问

最近升级到 Java 11 并开始执行回归检查。当前在尝试调用 时收到非法反射访问错误com.itextpdf.text.pdf.PdfReader.close。目前在 Itext 5.5.13 版上,但也在 itext 7.0.0 上尝试过并且遇到了同样的问题。

有没有人对如何解决 Java-11 和 Itext 之间的兼容性问题有任何建议?

警告:发生非法反射访问操作警告:com.itextpdf.io.source.ByteBufferRandomAccessSource$1 非法反射访问(文件:...repository/com/itextpdf/io/7.0.0/io-7.0.0.jar ) 方法 java.nio.DirectByteBuffer.cleaner() 警告:请考虑将此报告给 com.itextpdf.io.source.ByteBufferRandomAccessSource$1 的维护者 警告:使用 --illegal-access=warn 启用进一步非法反射访问的警告操作警告:在未来的版本中将拒绝所有非法访问操作

java itext itext7 java-11

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

Visual Studio 更新是否会破坏 iText7?

我在使用 iText7 7.1.6 和 Visual Studio 2019 时遇到问题。我的程序已经运行一年了,但刚刚将 Visual Studio(社区)从 16.6.1 更新到版本 16.6.2,我进行了重建,但没有更改任何内容。现在,当我运行该程序时,我得到一个 System,NullReferenceException 对象引用未设置为对象异常的实例,复制PdfFont font = PdfFontFactory.CreateFont(iText.IO.Font.Constants.StandardFonts.HELVETICA);到我的笔记本电脑仍然运行 16.6.1 的完全相同的解决方案运行得很好。难道是VS版本的问题?知道我可以从哪里开始寻找吗?

        using (PdfDocument pdf = new PdfDocument(new PdfWriter(saveFileDialog1.FileName, new WriterProperties().AddXmpMetadata().SetPdfVersion(PdfVersion.PDF_2_0))))
        {
            PdfDocumentInfo info = pdf.GetDocumentInfo();
            info.SetTitle("Old Info");
            info.SetAuthor("G.F. Whitmarsh");
            using (Document document = new Document(pdf, PageSize.A4, false)) // Don't flush immediately
            {
                try
                {
                    document.SetTopMargin(120f);
                    document.SetBottomMargin(50f);
                    document.SetLeftMargin(50f);

                    MyEventHandler meh = new MyEventHandler();
                    pdf.AddEventHandler(PdfDocumentEvent.END_PAGE, meh);
                    meh.Boat = s;
                    meh.ToWeb = ToWeb.Text;
                    meh.DateToInternet = DateToInternet.Text;

                    PdfFont font = PdfFontFactory.CreateFont(iText.IO.Font.Constants.StandardFonts.HELVETICA); //>>> Here …
Run Code Online (Sandbox Code Playgroud)

itext7 visual-studio-2019

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

如何更改在 Adob​​e Acrobat 中创建的密文注释的密文文本

更新:2021-01-15 - 添加了赏金

我正在尝试更改编校注释以更改在您应用编校时刻录到 PDF 中的基础文本。在 Acrobat 中,您可以设置一组“编辑代码”,这些代码可用于识别您为什么将某些内容标记为已编辑。我的目标是用系统定义的值覆盖用户选择的内容。代码将在应用修订之前运行。

在我的尝试中,我发现将光标悬停在编辑框上时 Acrobat 产品中可用的“预览”是 Acrobat 独有的,大多数其他查看器不会显示预览。似乎预览与应用的实际编辑分开维护。我不需要更改预览中显示的文本,只需更改应用编辑后显示的内容。

我增加了 150 点声望的赏金,因为我认为我自己无法找到解决方案。我最初的问题指定了 iText7,因为这是我自己尝试中最接近的库。虽然我更喜欢使用 iText7,但我也会考虑使用我可以合理访问的其他库的解决方案(如果需要,我的预算很小,可以用来购买另一个库)。

我保留了我最初的问题以及我在下面亲自尝试过的后续问题。我感谢提供的任何帮助。

如果您需要一个样本进行测试,此 DropBox文件夹中有一个名为的文件01 - Original.pdf,您可以将其用作源文档。期望的结果是能够将“原始覆盖文本”中的编辑应用到任何其他值(例如“新文本”)时出现的文本更改。

原问题:

我正在尝试更改 PDF 中每个修订注释中包含的文本,使用iText7. 该PdfRedactAnnotation对象有一个被调用的方法SetOverlayText(),看起来它应该做我想做的事。所以,我写了一个方法来打开一个 PDF,遍历页面,然后遍历每个页面上的注释,并检查注释是否是PdfRedactAnnotation. 如果是,则调用SetOverlayText()

在调试和查看注释属性时,我可以看到OverlayText确实发生了变化。但是,当我打开文件并通过将光标悬停在修订标记上来检查覆盖文本时,原始覆盖文本仍然存在。

在此处输入图片说明

此外,如果我应用了修订,原始覆盖文本将被刻录到页面中。

但是,当我右键单击注释(在应用编辑之前)时,覆盖文本会立即更新为新文本:

在此处输入图片说明

此时,当我应用修订时,新文本会被刻录到 PDF 中。

有什么方法可以以编程方式触发编辑注释更新,而无需打开并右键单击每个注释?我在下面包含了我的代码。感谢您提供任何人可能提供的建议。

PdfDocument pdfDoc = new PdfDocument(new PdfReader(@"C:\temp\Test - Original.pdf"), new PdfWriter(@"C:\temp\Test - Output.pdf"));
Document doc = new Document(pdfDoc);
int pageCount = pdfDoc.GetNumberOfPages();
for (int i = 1; i …
Run Code Online (Sandbox Code Playgroud)

c# redaction itext7

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