我正在尝试使用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,但没有帮助。
有没有人知道是否有可能实现我正在尝试做的事情?
发布于 2012-01-04 06:53:39
在使用PDFXConformance时,还需要在writer对象上调用CreateXmpMetadata。我通常在关闭文档之前这样做,我不是100%确定它是否需要放在那里,但其他人都是这么做的。
End While
writer.CreateXmpMetadata()
document.Close()然后,当您实例化您的写入器时,就像您所做的那样设置conformance属性:
writer = New PdfSmartCopy(document, New FileStream(outFile, FileMode.Create))
writer.PDFXConformance = PdfWriter.PDFA1Ahttps://stackoverflow.com/questions/8712028
复制相似问题