【问题标题】:Concatenating PDFA documents using iTextSharp into valid PDFA document使用 iTextSharp 将 PDFA 文档连接到有效的 PDFA 文档中
【发布时间】:2012-01-03 12:04:54
【问题描述】:

我正在尝试使用 iTextSharp 5.1.3 使用以下代码将多个 PDFA 文档连接到一个文件中:

    Try
        Dim f As Integer = 0
        Dim outFile As String = destinationFile
        Dim document As iTextSharp.text.Document = Nothing
        Dim writer As PdfSmartCopy = Nothing
        While f < sourceFiles.Length
            ' Create a reader for a certain document
            Dim reader As New PdfReader(sourceFiles(f))

            ' Retrieve the total number of pages
            Dim n As Integer = reader.NumberOfPages
            If f = 0 Then
                document = New iTextSharp.text.Document(reader.GetPageSizeWithRotation(1))
                writer = New PdfSmartCopy(document, New FileStream(outFile, FileMode.Create))
                document.Open()
            End If

            Dim page As PdfImportedPage
            Dim i As Integer = 0
            While i < n
                i += 1
                page = writer.GetImportedPage(reader, i)
                writer.AddPage(page)
            End While
            Dim form As PRAcroForm = reader.AcroForm
            If form IsNot Nothing Then
                writer.CopyAcroForm(reader)
            End If
            f += 1
        End While
        document.Close()
    Catch generatedExceptionName As Exception
    End Try

如果我在 Acrobat Reader X 中打开任何输入文件,我会收到一条消息,指出它们确实是 PDFA,但如果我打开上面代码创建的输出文件,则不会。因此,我新创建的连接 PDF 文档似乎不符合 PDFA。

我尝试将 writer.PDFXConformance 属性设置为 PdfWriter.PDFA1A 但这没有帮助。

有谁知道是否有可能实现我想要做的事情?

【问题讨论】:

  • 我对 iTextSharp 没有太多经验,所以无法直接提供帮助。但也许通过尝试使用 PDF/A 验证器验证输出 PDF 来缩小问题范围会有所帮助;有一些免费提供,例如herehere(均在线)。

标签: .net itextsharp pdfa


【解决方案1】:

使用PDFXConformance 时,您还需要在writer 对象上调用CreateXmpMetadata。我通常在关闭文档之前就这样做,我不是 100% 确定它需要去那里,但这是其他人放它的地方。

End While
writer.CreateXmpMetadata()
document.Close()

然后,当您实例化您的编写器时,就像您一样设置一致性属性:

writer = New PdfSmartCopy(document, New FileStream(outFile, FileMode.Create))
writer.PDFXConformance = PdfWriter.PDFA1A

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 2013-03-24
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多