Birkaç seçeneğiniz var. Tüm bu yöntemler Linux'ta olduğu kadar Windows veya Mac OS X'te de çalışır. Ancak, çoğu PDF'nin gömülü bir yazı tipi olduğunda tam, tam yazı tipini içermediğini unutmayın. Çoğunlukla belgede kullanılan gliflerin alt kümesini içerirler .
kullanma pdftops
* Nix sistemlerinde bunu yapmak için en sık kullanılan yöntemlerden biri aşağıdaki adımlardan oluşur:
- PDF'yi PostScript'e dönüştürün, örneğin XPDF'leri kullanarak
pdftops
(Windows'ta: pdftops.exe
yardımcı program).
- Artık fontlar
.pfa
(PostScript) biçiminde gömülecek + bir metin düzenleyici kullanarak bunları çıkarabilirsiniz .
- Sen dönüştürmek gerekebilir
.pfa
a (ASCII) .pfb
kullanılarak (ikili) dosyası t1utils
ve pfa2pfb
.
- PDF'lerde hiçbir zaman
.pfm
veya .afm
dosyalar (font metrik dosyaları) gömülü değildir (çünkü PDF görüntüleyici bunlar hakkında dahili bilgiye sahiptir). Bunlar olmadan, yazı tipi dosyaları görsel olarak hoş bir şekilde kullanılamaz.
kullanma fontforge
Başka bir yöntem, FontForge Ücretsiz yazı tipi düzenleyicisini kullanmaktır :
- Dosyaları açarken kullanılan "Yazı Tipini Aç" iletişim kutusunu kullanın .
- Ardından iletişim kutusunun filtre bölümünde "PDF'den çıkart" ı seçin .
- Çıkarılacak yazı tipini içeren PDF dosyasını seçin.
- Bir "Yazı tipi seç" iletişim kutusu açılır - burada açılacak yazı tipini seçin.
FontForge kılavuzuna bakın. Çıkarılan yazı tipi verilerini yeniden kullanılabilir bir dosya olarak kaydetmek için mutlaka basit olmayan birkaç özel adımı izlemeniz gerekebilir.
kullanma mupdf
Sonra, MuPDF . Bu uygulama , PDF'lerden yazı tiplerini ve görüntüleri ayıklayabilen pdfextract
(Windows'ta :) adlı bir yardımcı programla birlikte gelir pdfextract.exe
. (Hala nispeten bilinmeyen ve yeni olan MuPDF hakkında bilgi sahibi değilseniz: "MuPDF, bize Ghostscript'i veren aynı şirket olan Artifex Software geliştiricileri tarafından yazılan, ücretsiz hafif bir PDF görüntüleyici ve araç takımıdır." )
( Güncelleme: MuPDF'nin daha yeni sürümleri 'pdfextract'ın eski işlevlerini ' mutool özü ' komutuna taşıdı . Buradan indirin: mupdf.com/downloads )
Not: pdfextract.exe
bir komut satırı programıdır. Kullanmak için aşağıdakileri yapın:
c:\> pdfextract.exe c:\path\to\filename.pdf # (on Windows)
$> pdfextract /path/tofilename.pdf # (on Linux, Unix, Mac OS X)
Bu komut, geçerli dizine başvurulan pdf dosyasından tüm çıkarılabilir dosyaları döker. Genellikle çeşitli dosyalar görürsünüz: resimler ve yazı tipleri. Bunlar PNG, TTF, CFF, CID içerir vb görüntü adları gibi olacak img-0412.png görüntünün PDF nesne sayısı 412 fontnames gibi olacak olsaydı FGETYK + LinLibertineI-0966.ttf , yazı tipi yıllardan eğer PDF nesne numarası 966 idi.
CFF ( Kompakt Yazı Tipi Biçimi ) dosyaları, farklı işletim sistemlerinde kullanılmak üzere çeşitli dönüştürücüler aracılığıyla diğer biçimlere dönüştürülebilen tanınmış bir biçimdir.
Tekrar: bu yazı tipi dosyalarının çoğunun yalnızca bir karakter alt kümesine sahip olabileceğini ve tam yazı tipini temsil etmeyebileceğini unutmayın.
Güncelleme: (Tem 2013) Son sürümleri, mupdf
ikili dosyalarının yalnızca bir kez değil birkaç kez dahili olarak yeniden adlandırılmasını ve yeniden adlandırılmasını gördü. Ana yardımcı program mubusy
, daha önce yeniden adlandırılan 'isviçre bıçağı' benzeri bir ikili (ad meşgul kutusundan esinlenildi mi?) İdi mutool
. Bunlar alt komutları destekleyen info
, clean
, extract
, poster
ve show
. Ne yazık ki, bu araçlar için resmi belgeler güncel değil (henüz). 'MacPorts' kullanan bir Mac kullanıyorsanız: aynı adları kullanan diğer yardımcı programlarla ad çakışmasını önlemek için yardımcı program yeniden adlandırılmıştır ve kullanmanız gerekebilir mupdfextract
.
mutool
Önceki aracın pdfextract
yaptığı gibi (kabaca) eşdeğer sonuçları elde etmek için , çalıştırın mubusy extract ...
. *
Bu nedenle, yazı tiplerini ve resimleri çıkarmak için aşağıdaki komut satırlarından birini çalıştırmanız gerekebilir:
c:\> mutool.exe extract filename.pdf # (on Windows)
$> mutool extract filename.pdf # (on Linux, Unix, Mac OS X)
İndirmeler burada: mupdf.com/downloads
gs
(Ghostscript) kullanma
Ardından, Ghostscript yazı tiplerini doğrudan PDF'lerden de çıkarabilir. Ancak, Ghostscript kaynak kodu deposundaextractFonts.ps
bulunan PostScript dilinde yazılmış özel bir yardımcı programın yardımına ihtiyacı vardır .
Şimdi kullanın, hem bu dosyayı hem de extractFonts.ps
PDF dosyanızı çalıştırmanız gerekir . Ghostscript daha sonra yazı tiplerini PDF'den çıkarmak için PostScript programındaki talimatları kullanır. Windows'da şöyle görünür (evet, Ghostscript 'eğik çizgi' / /, Windows'ta da bir yol ayırıcı olarak anlar!):
gswin32c.exe ^
-q -dNODISPLAY ^
c:/path/to/extractFonts.ps ^
-c "(c:/path/to/your/PDFFile.pdf) extractFonts quit"
veya Linux, Unix veya Mac OS X'te:
gs \
-q -dNODISPLAY \
/path/to/extractFonts.ps \
-c "(/path/to/your/PDFFile.pdf) extractFonts quit"
Birkaç yıl önce Ghostscript yöntemini test ettim. O zaman * .ttf (TrueType) gayet iyi ayıkladı. Diğer yazı tiplerinin de çıkarılıp çıkarılamayacağını bilmiyordum ve eğer öyleyse, yeniden kullanılabilir bir şekilde. Yardımcı program korumalı olarak işaretlenmiş yazı tiplerini ayıklama engel olup olmadığını bilmiyorum.
kullanma pdf-parser.py
Son olarak, Didier Stevens'ın pdf-parser.py : bu muhtemelen kullanımı o kadar kolay değildir, çünkü dahili PDF yapıları hakkında bilgi sahibi olmanız gerekir. pdf-parser.py
bir çok şeyi yapabilen bir Python betiğidir. Ayrıca nesnelerden rastgele akışları açabilir ve ayıklayabilir ve bu nedenle gömülü font dosyalarını da ayıklayabilir.
Ama ne arayacağınızı bilmeniz gerekiyor. Bir örnekle görelim. Big.pdf adında bir dosyam var . İlk adım olarak -s
, PDF'yi FontFile anahtar kelimesinin herhangi bir oluşumu için aramak için parametreyi kullanıyorum (büyük / pdf-parser.py
küçük harfe duyarlı bir arama gerektirmez):
pdf-parser.py -s fontfile big.pdf
Benim durumumda, big1.pdf'im için bu sonucu alıyorum:
obj 9 0
Type: /FontDescriptor
Referencing: 15 0 R
<<
/Ascent 728
/CapHeight 716
/Descent -210
/Flags 32
/FontBBox [ -665 -325 2000 1006 ]
/FontFile2 15 0 R
/FontName /ArialMT
/ItalicAngle 0
/StemV 87
/Type /FontDescriptor
/XHeight 519
>>
obj 11 0
Type: /FontDescriptor
Referencing: 16 0 R
<<
/Ascent 728
/CapHeight 716
/Descent -210
/Flags 262176
/FontBBox [ -628 -376 2000 1018 ]
/FontFile2 16 0 R
/FontName /Arial-BoldMT
/ItalicAngle 0
/StemV 165
/Type /FontDescriptor
/XHeight 519
>>
Bana FontFile2
PDF'nin içinde iki örnek olduğunu ve bunların PDF nesnelerinde olduğunu söyler . 15 ve hayır. 16. Nesne no. Şekil 15, /FontFile2
for font / ArialMT , nesne no. 16, /FontFile2
for font / Arial-BoldMT'yi tutar .
Bunu daha net göstermek için:
pdf-parser.py -s fontfile big1.pdf | grep -i fontfile
/FontFile2 15 0 R
/FontFile2 16 0 R
PDF özellikleri içine hızlı bir Bakma anahtar ortaya /FontFile2
bir ilişkindir 'TrueType yazı tipi programı içeren akımı' ( /FontFile
bir ilişki olur 'bir tür 1 yazı programı içeren akımı' ve /FontFile3
bir ilgili olacaktır biçiminde bir yazı tipi programı içeren 'akışında akış sözlüğündeki Alt tür girişi tarafından belirtildi ' {dolayısıyla bir Type1C veya bir CIDFontType0C alt türü}.)
Özellikle PDF nesnesine bakmak için no. 15 (font / ArialMT'yi tutar ), -o 15
parametre şu şekilde kullanılabilir :
pdf-parser.py -o 15 big1.pdf
obj 15 0
Type:
Referencing:
Contains stream
<<
/Length1 778552
/Length 1581435
/Filter /ASCIIHexDecode
>>
Bu pdf-parser.py
çıktı bize bu nesnenin 1.581.435 Bayt uzunluğunda ve ASCIIHexEncode ile kodlanmış (== "sıkıştırılmış") bir akış içerdiğini (kod çözülmediği (== ") sıkıştırılmış "veya" filtrelenmiş ") standart /ASCIIHexDecode
filtre yardımıyla .
Bir nesneden herhangi bir akışı boşaltmak pdf-parser.py
için -d dumpname
parametre ile çağrılabilir . Haydi Yapalım şunu:
pdf-parser.py -o 15 -d dumped-data.ext big1.pdf
Çıkarılan veri dökümümüz, dumped-data.ext adlı dosyada olacaktır . Bakalım ne kadar büyük:
ls -l dumped-data.ext
-rw-r--r-- 1 kurtpfeifle staff 1581435 Apr 11 00:29 dumped-data.ext
Oh bak, 1.581.435 Bayt. Bu rakamı önceki komutun çıktısında gördük. Bu dosyayı bir metin düzenleyicisiyle açmak, içeriğinin ASCII onaltılı kodlanmış veri olduğunu doğrular.
Dosyayı bir yazı tipi okuma aracıyla açmak otfinfo
(bu lcdf-typetools
paketin bir parçasıdır ) ilk başta hayal kırıklığına neden olur:
otfinfo -i dumped-data.ext
otfinfo: dumped-data.ext: not an OpenType font (bad magic number)
Tamam, çünkü pdf-parser.py
tam sihrini (henüz) kullanmamıza izin vermedik : filtrelenmiş, kodu çözülmüş bir akışı dökmek. Bunun için -f
parametreyi eklemeliyiz :
pdf-parser.py -o 15 -f -d dumped-data-decoded.ext big1.pdf
Bu yeni dosyanın boyutu nedir?
ls -l dumped-data-decoded.ext
-rw-r--r-- 1 kurtpfeifle staff 778552 Apr 11 00:39 dumped-data-decoded.ext
Oh, bak: bu tam sayı zaten PDF nesnesine de kaydedilmişti. 15 anahtarın değeri olarak sözlük /Length1
...
Ne olduğunu file
düşünüyor?
file dumped-data-decoded.ext
dumped-data-decoded.ext: TrueType font data
otfinfo
Bize bu konuda ne anlatıyor?
otfinfo -i dumped-data-decoded.ext
Family: Arial
Subfamily: Regular
Full name: Arial
PostScript name: ArialMT
Version: Version 5.10
Unique ID: Monotype:Arial Regular:Version 5.10 (Microsoft)
Designer: Monotype Type Drawing Office - Robin Nicholas, Patricia Saunders 1982
Manufacturer: The Monotype Corporation
Trademark: Arial is a trademark of The Monotype Corporation.
Copyright: © 2011 The Monotype Corporation. All Rights Reserved.
License Description: You may use this font to display and print content as permitted by
the license terms for the product in which this font is included.
You may only (i) embed this font in content as permitted by the
embedding restrictions included in this font; and (ii) temporarily
download this font to a printer or other output device to help
print content.
Vendor ID: TMC
Bingo !, bir kazananımız var: pdf-parser.py
gerçekten bizim için geçerli bir yazı tipi dosyası çıkardı. Bu dosyanın boyutu (778.552 Byte) göz önüne alındığında, bu yazı tipinin PDF'ye bile tamamen gömülmüş gibi görünüyor ...
Arial-regular.ttf olarak yeniden adlandırabilir ve bu şekilde yükleyebilir ve mutlu bir şekilde kullanabiliriz.
Uyarılar:
Her durumda, yazı tipi için geçerli olan lisansı izlemeniz gerekir. Bazı font lisansları ücretsiz kullanıma ve / veya dağıtıma izin vermez. Korsan yazı tipleri, herhangi bir yazılımı veya diğer telif hakkıyla korunan materyalleri korsanlaştırmaya benzer.
Orada vahşi olan çoğu PDF zaten tam yazı tipi katmak değil, sadece alt kümeleri. Bir yazı tipinin alt kümesini çıkarmak, yalnızca çok sınırlı bir kapsamda yararlıdır.
Ayrıca, yazı tipi çıkarma çabalarıyla ilgili Artıları ve (daha fazla) Eksileri hakkında aşağıdakileri de okuyun: