Font tool finished

This commit is contained in:
Jakub Melka
2020-10-24 15:36:00 +02:00
parent 6142b263a0
commit acee5f2186
3 changed files with 73 additions and 1 deletions

View File

@@ -57,6 +57,7 @@ struct FontInfo
bool isSubset = false;
bool isToUnicodePresent = false;
pdf::PDFObjectReference reference;
QString substitutedFont;
};
int PDFToolInfoFonts::execute(const PDFToolOptions& options)
@@ -191,10 +192,11 @@ int PDFToolInfoFonts::execute(const PDFToolOptions& options)
info.fontName = fontName;
info.pages.addValue(pageIndex + 1);
info.fontTypeName = fontTypeName;
info.isEmbedded = fontDescriptor->isEmbedded();
info.isEmbedded = fontDescriptor->isEmbedded() || fontType == pdf::FontType::Type3;
info.isSubset = isSubset;
info.isToUnicodePresent = toUnicode && toUnicode->isValid();
info.reference = fontReference;
info.substitutedFont = realizedFont->getPostScriptName();
const pdf::PDFSimpleFont* simpleFont = dynamic_cast<const pdf::PDFSimpleFont*>(font.data());
if (simpleFont)
@@ -290,6 +292,7 @@ int PDFToolInfoFonts::execute(const PDFToolOptions& options)
QString noText = PDFToolTranslationContext::tr("No");
QString noRef = PDFToolTranslationContext::tr("--");
bool hasSubstitutions = false;
int ref = 1;
for (const FontInfo& info : directFonts)
{
@@ -315,12 +318,62 @@ int PDFToolInfoFonts::execute(const PDFToolOptions& options)
formatter.writeTableColumn("generation-no", noRef, Qt::AlignRight);
}
hasSubstitutions = hasSubstitutions || !info.isEmbedded;
formatter.endTableRow();
++ref;
}
formatter.endTable();
formatter.endl();
if (hasSubstitutions)
{
formatter.beginTable("fonts-substitutions", PDFToolTranslationContext::tr("Substitutions"));
formatter.beginTableHeaderRow("header");
formatter.writeTableHeaderColumn("no", PDFToolTranslationContext::tr("No."), Qt::AlignLeft);
formatter.writeTableHeaderColumn("font-name", PDFToolTranslationContext::tr("Font Name"), Qt::AlignLeft);
formatter.writeTableHeaderColumn("font-substitute", PDFToolTranslationContext::tr("Substituted by Font"), Qt::AlignLeft);
formatter.writeTableHeaderColumn("match", PDFToolTranslationContext::tr("Match"), Qt::AlignLeft);
formatter.writeTableHeaderColumn("object-no", PDFToolTranslationContext::tr("Object"), Qt::AlignLeft);
formatter.writeTableHeaderColumn("generation-no", PDFToolTranslationContext::tr("Gen."), Qt::AlignLeft);
formatter.endTableHeaderRow();
ref = 1;
for (const FontInfo& info : directFonts)
{
if (info.isEmbedded)
{
continue;
}
formatter.beginTableRow("substitution", ref);
formatter.writeTableColumn("no", locale.toString(ref), Qt::AlignRight);
formatter.writeTableColumn("font-name", info.fontName);
formatter.writeTableColumn("font-substitute", !info.substitutedFont.isEmpty() ? info.substitutedFont : PDFToolTranslationContext::tr("??"));
formatter.writeTableColumn("match", (info.fontName == info.substitutedFont) ? yesText : noText);
if (info.reference.isValid())
{
formatter.writeTableColumn("object-no", locale.toString(info.reference.objectNumber), Qt::AlignRight);
formatter.writeTableColumn("generation-no", locale.toString(info.reference.generation), Qt::AlignRight);
}
else
{
formatter.writeTableColumn("object-no", noRef, Qt::AlignRight);
formatter.writeTableColumn("generation-no", noRef, Qt::AlignRight);
}
formatter.endTableRow();
++ref;
}
formatter.endTable();
}
formatter.endDocument();
PDFConsole::writeText(formatter.getString(), options.outputCodec);