我正在尝试将PDF1.7文档转换为PDFA / 3B文档,目前,我需要获取源文档中的所有字体并将其复制到目标中(如果这实际上是这样做的方式)。所以目前我有以下内容:
for (int i = 1; i < source.GetNumberOfPdfObjects(); i++)
{
var obj = source.GetPdfObject(i);
if (!obj?.IsDictionary() ?? true)
continue;
var dict = obj as PdfDictionary;
if (dict == null)
continue;
if (PdfName.Font.Equals(dict.GetAsName(PdfName.Type)))
{
var fontDescriptor = dict.GetAsDictionary(PdfName.FontDescriptor);
if (fontDescriptor == null)
continue;
//What else?
}
}
但是我在尝试获取字体时遇到了麻烦。
这是从一个文档中获取字体的方法吗?还是有一种更简单的方法?以及如何将它们复制到新文档中?
答案 0 :(得分:0)
要获取文档中的所有字体并将其复制到目标文档中,您需要以下代码:
for (int i = 1; i <= pdfDocument.getNumberOfPdfObjects(); i++) {
PdfObject object = pdfDocument.getPdfObject(i);
if (object.isDictionary() && PdfName.Font.equals(((PdfDictionary)object).getAsName(PdfName.Type))) {
object.copyTo(targetDocument);
}
}
但是,请不要指望所有内容都将保留在页面等上。此代码仅能满足您的要求-将字体复制到新文档中。与仅复制字体相比,保存内容和对字体的引用要很多。
此外,不要期望通过将对象从任意PDF文档复制到您声称自己符合PDF / A-3B规范的文档中来获得这种规范。这是不正确的。 PDF / A标准有很多要求,其中有一些字体要求在原始文档中不一定能满足。