0

iTextSharp のPdfSmartCopyクラスを使用して、複数の小さな PDF ファイルを 1 つの大きな PDF ファイルに結合するコードがあります。

FileStream outStream = new FileStream(outputFilename, FileMode.Create, FileAccess.Write);
Document document = new Document();
PdfSmartCopy copy = new PdfSmartCopy(document, outStream);
document.Open();

foreach (string filename in fileList)
{
   PdfReader reader = new PdfReader(filename);

   for (int pageNum = 1; pageNum <= reader.NumberOfPages; ++pageNum)
   {
      copy.AddPage(copy.GetImportedPage(reader, pageNum));
   }
}

document.Close();

を使用して PDF のリソースを抽出すると、mutool extract使用する各フォントの同一のコピーが複数存在します。

C:\[...]>sha1sum *.cff *.ttf *.png | sort
0d150f99593d385764a1c7096b72448d09af8d72 *JPIOAD+Helvetica-0020.cff
0d150f99593d385764a1c7096b72448d09af8d72 *JPIOAD+Helvetica-0036.cff
0d150f99593d385764a1c7096b72448d09af8d72 *JPIOAD+Helvetica-0049.cff
0d150f99593d385764a1c7096b72448d09af8d72 *JPIOAD+Helvetica-0069.cff
0d150f99593d385764a1c7096b72448d09af8d72 *JPIOAD+Helvetica-0084.cff
0d150f99593d385764a1c7096b72448d09af8d72 *JPIOAD+Helvetica-0099.cff
17a99e597d3ec2cabf567cbfec032972f7e00962 *DXLQZY+LetterGothicW1Bold-0032.ttf
17a99e597d3ec2cabf567cbfec032972f7e00962 *GMYLDU+LetterGothicW1Bold-0014.ttf
17a99e597d3ec2cabf567cbfec032972f7e00962 *MNVLMO+LetterGothicW1Bold-0045.ttf
[etc.]

FontForge で *.cff および *.ttf ファイルを調べたところ、ドキュメントで実際に使用されている文字のサブセットのみが含まれているようです。

生成されたファイルにフォントのコピーを 1 つだけ含める方法はありますか?

4

1 に答える 1

2

iText も iTextSharp も、フォントのサブセットを 1 つのサブセットにマージできません。一部のフォントでは、このような大きなサブセットを作成することは可能ですが、場合によっては、異なるフォントを 1 つにマージすることは不可能です (理論的には、中国語などの非常に大きなフォント セットの場合)。 (これは、マージされたフォントで文字/グリフのマッピングが変更されたため、コンテンツ ストリーム全体を書き直す必要があることを意味する可能性があります)。

言い換えれば、あなたは些細なことを尋ねているのです。サポートされていません。これは、有償のコンサルティングのコンテキストでのみ検討する機能の種類です。

于 2013-05-14T05:50:32.760 に答える