Mümkün olan en küçük GIF gibi, mümkün olan en küçük boş sayfa PDF'nin de elle işlenmesi gerekir, çünkü gereksiz fakat zararsız meta veri parçalarının dosya boyutunun önemli bir parçası haline gelmesi ve sıkıştırma aslında işleri daha büyük hale getirir . Ayrıca, dosya yapısının hangi bitlerinin gerekip gerekmediğine ilişkin PDF spesifikasyonundaki kurallara dikkat edilmesini gerektirir. (O sayfa nesneleri içermelidir biliyor muydunuz /Resources
boş olsa bile, sözlüğü, ancak değil bir eklemesi gerekmektedir /Contents
akışı?)
PDF 1.5 nesnesini ve çapraz referans akışlarını kullanmıyorsanız (dosyanın ASCII'nin tamamen yazdırılabilir olması avantajına sahiptir) Yapabileceğiniz en iyi şeyin 317 bayt olduğuna inanıyorum. Kopyalama ve yapıştırma ise çapraz referans tablosu girdilerinin dördünün üzerinde sonunda bir boşluk (arasındaki çizgiler olması gerekir kötüye doğru olduğunu 0 4
ve trailer<<...
) ve orada olduğunu değil sonra nihai satır olması gerekiyordu %%EOF
.
%PDF-1.4
1 0 obj<</Type/Catalog/Pages 2 0 R>>endobj
2 0 obj<</Type/Pages/Count 1/Kids[3 0 R]>>endobj
3 0 obj<</Type/Page/MediaBox[0 0 612 792]/Parent 2 0 R/Resources<<>>>>endobj
xref
0 4
0000000000 65535 f
0000000009 00000 n
0000000052 00000 n
0000000101 00000 n
trailer<</Size 4/Root 1 0 R>>
startxref
178
%%EOF
Çapraz referans tablosunu elle hazırlanmış bir v1.5 çapraz referans akışıyla değiştirmek, artık ASCII: 294 bayt yazdırılamaz durumda olmak üzere dosyayı biraz daha küçük yapar. (Okunabilirliği uğruna, değil, aşağıda xref akışı hexdumped edilmiştir hiç de yazın edememek söz, ancak bu bir değil kendi akışı sözlükte yansıttı. Ortamınızda ya da geçerli bir PDF kurtarmak için birlikte HexDump yerine ham ikili bayt karşılık gelen veya değiştirmek /Length 15
için /Length 30/Filter/ASCIIHexDecode
328 bayt uzunluğunda bir dosya ve kabul edin.)
%PDF-1.5
1 0 obj<</Type/Catalog/Pages 2 0 R>>endobj
2 0 obj<</Type/Pages/Count 1/Kids[3 0 R]>>endobj
3 0 obj<</Type/Page/MediaBox[0 0 612 792]/Parent 2 0 R/Resources<<>>>>endobj
4 0 obj<</Type/XRef/Size 5/W[1 1 1]/Root 1 0 R/Length 15>>stream
0000ff01090001340001650001b200endstream endobj
startxref
178
%%EOF
Ayrıca 1'den 3'e kadar olan nesneleri bir nesne akışına sarmayı da denedim, ancak bu, akış sıkıştırıldığında bile, tasarrufundan daha fazla ek yük getiriyor.
Xref akışının olası bir alternatif formülasyonu,
4 0 obj<</Type/XRef/Size 4/W[0 1 0]/Index[1 4]/Root 1 0 R/Length 4>>stream
091365b2endstream endobj
Maalesef, gerçek akış verilerinin uzunluğundaki önemli tasarruflara rağmen, ek /Index[1 4]
tasarrufların bir baytını tüketmektedir. Ayrıca, 0 nesnesini dosyadan tamamen çıkarmanıza izin verilip verilmediği bana net değil. (Bu nesne 0 nesil numarası olmalıdır olup olmadığını -1 bana da belirsiz. Eğer o oluyor gerekmez, aslında daha bayt kaydetmek
4 0 obj<</Type/XRef/Size 5/W[1 1 0]/Root 1 0 R/Length 10>>stream
000001090134016501b2endstream endobj
.)
Kağıt boyutunu değiştirmek 612 792
için, PostScript noktalarında (72 PostScript noktaları = 1 ABD inç veya 25,4 milimetre) ifade edilen uygun genişlik ve yükseklikle değiştirin . Mesela 595 842
A4 için. Bunu, istenen kağıt boyutunda boş bir PDF içeren bir kabuk betiğine gömebilirsiniz; Tek zor kısım startxref
, nesne 3'ün büyüklüğü değişse bile ofsetin doğru kaldığından emin olmak olacaktır .