我正在阅读一个将返回PdfFormXObject的方法,但我不理解CopyAsFormXObject。它在PdfPage方法中,但是CopyAsFormXObject接受一个PdfDocument。它可以直接从PdfPage中使用吗?
public static PdfFormXObject ReadAdobeIllustrator()
{
string mapPath = @"PathToAIFile.ai";
byte[] b = null;
var buffer = File.ReadAllBytes(mapPath);
MemoryStream stream = new MemoryStream(buffer);
PdfFormXObject pdfForm = null;
using (MemoryStream returnMemoryStream = new MemoryStream())
{
iText.Kernel.Pdf.PdfReader PdfReader = new iText.Kernel.Pdf.PdfReader(stream);
PdfDocument pdfDocument = new PdfDocument(PdfReader, new PdfWriter(returnMemoryStream));
PdfPage origPage = pdfDocument.GetFirstPage();
pdfForm = origPage.CopyAsFormXObject(pdfDocument);
pdfDocument.Close();
b = returnMemoryStream.ToArray();
}
return pdfForm;
}发布于 2022-04-07 06:50:40
请查看方法文档:
/// <summary>Copies page as FormXObject to the specified document.</summary>
/// <param name="toDocument">a document to copy to.</param>
/// <returns>
/// copied
/// <see cref="iText.Kernel.Pdf.Xobject.PdfFormXObject"/>
/// object.
/// </returns>
public virtual PdfFormXObject CopyAsFormXObject(PdfDocument toDocument)此外,该方法也没有其他过载。
因此,在调用此方法时,需要有最终将使用XObject形式的文档。
在您的代码中,您使用源文档作为目标。这显然是错误的,不能起作用。
你可能想试试这样的东西:
public static PdfFormXObject ReadAdobeIllustrator(PdfDocument targetDocument)
{
using (PdfReader PdfReader = new PdfReader(@"PathToAIFile.ai"))
using (PdfDocument pdfDocument = new PdfDocument(PdfReader))
{
PdfPage origPage = pdfDocument.GetFirstPage();
return origPage.CopyAsFormXObject(targetDocument);
}
}(我现在不确定在使用表单using之前关闭源文档是否可以--就像我在这里对XObject隐式地做的那样;我几乎不需要组装文档。)
https://stackoverflow.com/questions/71696933
复制相似问题