Python üzerinden Java ile PPT ve PPTX'i PDF'ye dönüştürün [Gelişmiş Özellikler Dahildir]

Genel Bakış

PowerPoint sunumlarını (PPT, PPTX, ODP vb.) Python üzerinden Java ile PDF formatına dönüştürmek, çeşitli avantajlar sunar; farklı cihazlar arasında uyumluluk ve sunumunuzun düzeni ile biçimlendirmesinin korunması gibi. Bu kılavuz, sunumları PDF belgelerine nasıl dönüştüreceğinizi, görüntü kalitesini kontrol etmek için çeşitli seçenekleri nasıl kullanacağınızı, gizli slaytları eklemeyi, PDF dosalarını parola ile korumayı, yazı tipi ikamelerini tespit etmeyi, dönüştürme için belirli slaytları seçmeyi ve çıktı belgelerine uyumluluk standartlarını uygulamayı gösterir.

PowerPoint’ten PDF’ye Dönüştürmeler

Aspose.Slides’ı kullanarak, aşağıdaki formatlardaki sunumları PDF’ye dönüştürebilirsiniz:

  • PPT
  • PPTX
  • ODP

Bir sunumu PDF’ye dönüştürmek için, dosya adını Presentation sınıfına bir argüman olarak geçirip, sonrasında sunumu save yöntemi ile PDF olarak kaydedin. Presentation sınıfı, tipik olarak bir sunumu PDF’ye dönüştürmek için kullanılan save yöntemini sunar.

Aspose.Slides size şunları dönüştürme imkanı verir:

  • Tüm sunumları PDF’ye
  • Bir sunumdan belirli slaytları PDF’ye

Aspose.Slides, sunumları PDF’ye dışa aktarır ve ortaya çıkan PDF’lerin orijinal sunumlara yakın olmasını sağlar. Dönüşüm sırasında öğeler ve öznitelikler doğru bir şekilde işlenir, şunlar dahil:

  • Görüntüler
  • Metin kutuları ve şekiller
  • Metin biçimlendirme
  • Paragraf biçimlendirme
  • Köprüler
  • Üstbilgi ve altbilgi
  • Madde işaretleri
  • Tablolar

PowerPoint’i PDF’ye Dönüştür

Standart dönüşüm,varsayılan PDF dışa aktarma ayarlarını kullanır. Görüntü kalitesini, sayfa içeriğini veya PDF uyumluluğunu kontrol etmeniz gerektiğinde özel seçenekler kullanın.

Aşağıdaki örnek, bir sunumu yükler ve tüm görünen slaytları varsayılan dışa aktarma ayarlarıyla PDF’ye kaydeder.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("presentation.pptx")
try:
    presentation.save("presentation.pdf", SaveFormat.Pdf)
finally:
    presentation.dispose()

Seçeneklerle PowerPoint’i PDF’ye Dönüştür

Aspose.Slides, sonuç PDF’yi özelleştirmenize, PDF’yi bir parola ile kilitlemenize veya dönüşüm sürecinin nasıl ilerleyeceğini belirlemenize olanak tanıyan, PdfOptions sınıfı altındaki özel seçenekler—özellikler—sağlar.

Özel Seçeneklerle PowerPoint’i PDF’ye Dönüştür

Özel dönüşüm seçeneklerini kullanarak, raster görüntüler için tercih ettiğiniz kalite ayarını belirleyebilir, metafile’ların nasıl işleneceğini belirtebilir, metin için sıkıştırma seviyesini ayarlayabilir, görüntüler için DPI’yi yapılandırabilir ve daha fazlasını yapabilirsiniz.

İşte aşağıdaki örnek, bir sunumu PDF 1.5 olarak dışa aktarır; JPEG kalitesi 90, görüntü çözünürlüğü 300 DPI, metafile’lar PNG olarak kaydedilir ve Flate metin sıkıştırması kullanılır.

import jpade
import asposeslides

if not jpade.isJVMStarted():
    jpade.startJVM()

from asposeslides.api import PdfCompliance, PdfOptions, PdfTextCompression, Presentation, SaveFormat

pdf_options = PdfOptions()
pdf_options.setJpegQuality(jpade.JByte(90))
pdf_options.setSufficientResolution(300)
pdf_options.setSaveMetafilesAsPng(True)
pdf_options.setTextCompression(PdfTextCompression.Flate)
pdf_options.setCompliance(PdfCompliance.Pdf15)

presentation = Presentation("presentation.pptx")
try:
    presentation.save("presentation-custom.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

Görüntü Sıkıştırmasını Otomatik Olarak Seç

Bir sunumda birçok fotoğraf veya ekran görüntüsü bulunduğunda, dışa aktarılan PDF’nin boyutunu azaltmak e-posta göndermeyi veya indirmeyi kolaylaştırabilir. PDF dışa aktarımı sırasında her görüntü için en uygun sıkıştırma algoritmasını otomatik olarak seçmek için PdfOptions.setBestImagesCompressionRatio yöntemini True ile çağırın.

Aşağıdaki örnek, mevcut bir sunumu yükler, otomatik görüntü sıkıştırma seçimini etkinleştirir ve bir PDF belgesi olarak kaydeder. Diğer tüm PDF dışa aktarma ayarları varsayılan değerlerini korur.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PdfOptions, Presentation, SaveFormat

pdf_options = PdfOptions()
pdf_options.setBestImagesCompressionRatio(True)

presentation = Presentation("image-heavy.pptx")
try:
    presentation.save("image-heavy.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

Bu seçenek her görüntü için bir sıkıştırma algoritması seçer. setJpegQuality yöntemine geçirilen değeri azaltmak JPEG görüntü kalitesini düşürür, setSufficientResolution yöntemine geçirilen değeri azaltmak ise görüntülerin daha düşük çözünürlüğe düşürülmesini sağlar ve detay kaybına yol açabilir. Otomatik sıkıştırma seçimini etkinleştirmek, bu ayarların kendisini düşürmez.

Görüntü sıkıştırma algoritmalarını seçmek ek işlem süresi ve bellek gerektirir. Boyut azalması, sunumun görüntülerine ve dışa aktarma ayarlarına bağlıdır; her sunum için sabit bir azalma garantilenmez.

Gömülü OLE Dosyalarını PDF Ekleri Olarak Koru

Biri gömülü bir Excel çalışma kitabı içeriyorsa, PDF alıcılarının çalışma kitabının verilerine erişmesini ve aynı zamanda slaytları görüntülemesini isteyebilirsiniz. Gömülü OLE dosyalarını sonuç PDF’de ek olarak korumak için setIncludeOleData yöntemini True ile çağırın.

Varsayılan değer False‘tır: OLE nesnesinin ön izleme görüntüsü veya simgesi PDF sayfasına işlenir, ancak gömülü dosya ek olarak eklenmez. Seçeneği True olarak ayarlamak, dosya verilerini ek olarak ekler. Ön izleme görsel bir temsil olarak kalır; ek, alıcıların gömülü dosyayı ayrı olarak açmasına veya kaydetmesine olanak tanır. OLE nesnesi PDF sayfasında etkileşimli bir Excel çalışma sayfasına dönüşmez.

Aşağıdaki örnek, gömülü bir Excel çalışma kitabı zaten içeren bir sunumu yükler ve çalışma kitabı ekli olarak PDF’ye dışa aktarır.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PdfOptions, Presentation, SaveFormat

pdf_options = PdfOptions()
pdf_options.setIncludeOleData(True)

presentation = Presentation("presentation.pptx")
try:
    presentation.save("presentation.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

Sonucu kontrol etmek için:

  1. Adobe Acrobat Reader gibi dosya eklerini destekleyen bir görüntüleyicide dışa aktarılan PDF’yi açın.
  2. Görüntüleyicinin Attachments panelini açın ve gömülü çalışma kitabını bulun.
  3. Ek’i kaydedin ve verilerini incelemek için Excel’de açın, ya da görüntüleyici izin veriyorsa doğrudan açın. PDF sayfasındaki ön izleme, eklentiyle ayrı bir öğedir.

Gizli Slaytlarla PowerPoint’i PDF’ye Dönüştür

Bir sunum gizli slaytlar içeriyorsa, gizli slaytları sonuç PDF’de sayfalar olarak eklemek için PdfOptions sınıfından setShowHiddenSlides yöntemini kullanabilirsiniz.

Aşağıdaki örnek, bir sunumu PDF’ye dışa aktarır ve gizli slaytları da içerir.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PdfOptions, Presentation, SaveFormat

pdf_options = PdfOptions()
pdf_options.setShowHiddenSlides(True)

presentation = Presentation("presentation.pptx")
try:
    presentation.save("presentation-hidden-slides.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

Şifre Korumalı PDF Olarak PowerPoint’i Dönüştür

İşte aşağıdaki örnek, bir sunumu açmak için password şifresi gereken bir PDF’ye dışa aktarır. Erişim izinleri, yüksek kaliteli baskı da dahil olmak üzere yazdırmaya izin verir.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PdfAccessPermissions, PdfOptions, Presentation, SaveFormat

pdf_options = PdfOptions()
pdf_options.setPassword("password")
pdf_options.setAccessPermissions(PdfAccessPermissions.PrintDocument | PdfAccessPermissions.HighQualityPrint)

presentation = Presentation("presentation.pptx")
try:
    presentation.save("presentation-protected.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

Yazı Tipi İkame Tespiti

Aspose.Slides, sunumdan PDF’ye dönüşüm sürecinde yazı tipi ikamelerini tespit etmenizi sağlayan PdfOptions sınıfı altındaki setWarningCallback yöntemini sunar.

İşte aşağıdaki örnek, bir sunumu PDF’ye dışa aktarır ve konsola yazı tipi ikame uyarılarını yazdırır. Uyarı yalnızca kullanılabilir olmayan bir yazı tipi dışa aktarma sırasında ikame edildiğinde yazdırılır. Java API’sinden uyarı geri aramalarını almak için bir JPype proxy’si kullanın. Başlığını kontrol etmeden önce Java açıklama dizesini Python dizesine dönüştürün:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PdfOptions, Presentation, ReturnAction, SaveFormat, WarningType

class FontSubstitutionHandler:
    def warning(self, warning):
        description = str(warning.getDescription())
        if warning.getWarningType() == WarningType.DataLoss and description.startswith("Font will be substituted"):
            print(f"Font substitution warning: {description}")
        return ReturnAction.Continue


handler = FontSubstitutionHandler()
callback = jpype.JProxy("com.aspose.slides.IWarningCallback", inst=handler)

pdf_options = PdfOptions()
pdf_options.setWarningCallback(callback)

presentation = Presentation("presentation.pptx")
try:
    presentation.save("presentation-font-warnings.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

Ayrı Bir Kalın Yazı Tipi Olmayan Yazı Tiplerini İşleme

Bir sunum, yazı tipinin ayrı bir kalın tipine sahip olmaması durumunda da metne kalın biçimlendirme uygulayabilir. Metin, düzenli glifleri yapay olarak kalınlaştıran sentetik kalınlaştırma ile hâlâ kalın görünebilir. Bu metin PDF’de çok ağır göründüğünde veya istenen görünümden farklı olduğunda, PdfOptions.setRasterizeUnsupportedFontStyles yöntemini True ile çağırmayı deneyin. Bu seçenek, etkilenen metni PDF dışa aktarımı sırasında bir bitmap olarak işler ve belirli yazı tiplerinin görünümünü iyileştirebilir. Varsayılan değeri False‘tır.

Örnek sunum iki metin kutusu içerir: biri normal metin, diğeri aynı yazı tipine uygulanan kalın biçimlendirmeye sahiptir ancak ayrı bir kalın tipine sahip değildir. Aşağıdaki örnek, sunumu yükler, desteklenmeyen yazı tipi stillerinin rasterleştirilmesini etkinleştirir ve PDF’ye dışa aktarır:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PdfOptions, Presentation, SaveFormat

pdf_options = PdfOptions()
pdf_options.setRasterizeUnsupportedFontStyles(True)

presentation = Presentation("unsupported-bold.pptx")
try:
    presentation.save("rasterized.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

İşte aşağıdaki önizlemeler, devre dışı bırakılmış ve etkinleştirilmiş çıktıyı gösterir. Bu örnekte, seçenek devre dışı bırakıldığında kalın metnin çizgileri daha kalın olur. Seçenek etkinleştirildiğinde, çizgileri daha hafif olur; normal metin değişmez. Sunumunuz için ayarı seçmeden önce sonuçları karşılaştırın.

Seçenek devre dışı (False, varsayılan) Seçenek etkin (True)
Desteklenmeyen font stili rasterleştirme devre dışı Desteklenmeyen font stili rasterleştirme etkin

Bu örnekte, seçeneği etkinleştirmek yalnızca kalın metni bir bitmap’e dönüştürür: OCR olmadan seçilemez, kopyalanamaz veya metin olarak aranamaz ve kenarları %800 yakınlaştırmada daha yumuşak görünür. Normal metin aranabilir kalır. Seçenek devre dışı bırakıldığında, her iki dize de metin olarak kalır.

Bu seçenek, yazı tipinin ayrı bir kalın tipine sahip olmadığı durumlarda kalın olarak biçimlendirilmiş metni rasterleştirir. Yazı Tipi İkamesi ise orijinal mevcut olmadığında başka bir yazı tipi seçer.

PowerPoint’ten Seçili Slaytları PDF’ye Dönüştür

Presentation.save metoduna iletilen slayt numaraları 1 tabanlıdır. Bu örnek, hem mevcut olduğunda 1 ve 3 numaralı slaytları dışa aktarır:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("presentation.pptx")
try:
    slide_numbers = jpype.JArray(jpype.JInt)([1, 3])
    presentation.save("presentation-selected-slides.pdf", slide_numbers, SaveFormat.Pdf)
finally:
    presentation.dispose()

Özel Slayt Boyutuyla PowerPoint’i PDF’ye Dönüştür

Bu örnek, ilk slaytı 612x792 puan ölçüsünde (US Letter) bir sayfaya dışa aktarır. Slaytı belirtilen boyuta sahip yeni bir sunuma klonlar ve slayt içeriğini sığacak şekilde ölçeklendirir.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, SlideSizeScaleType

presentation = Presentation("presentation.pptx")
resized_presentation = Presentation()
try:
    resized_presentation.getSlideSize().setSize(612, 792, SlideSizeScaleType.EnsureFit)
    slide = presentation.getSlides().get_Item(0)
    resized_presentation.getSlides().insertClone(0, slide)

    # Yeni sunum oluşturulurken eklenen boş slaytı kaldır.
    resized_presentation.getSlides().removeAt(1)

    resized_presentation.save("presentation-custom-size.pdf", SaveFormat.Pdf)
finally:
    presentation.dispose()
    resized_presentation.dispose()

Not Slaytı Görünümünde PowerPoint’i PDF’ye Dönüştür

Aşağıdaki örnek, bir sunumu PDF’ye dışa aktarır ve her slaytın konuşmacı notlarını slaytın altına yerleştirir. Sonucu görmek için konuşmacı notları içeren bir sunum kullanın.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import NotesCommentsLayoutingOptions, NotesPositions, PdfOptions, Presentation, SaveFormat

notes_options = NotesCommentsLayoutingOptions()
notes_options.setNotesPosition(NotesPositions.BottomFull)

pdf_options = PdfOptions()
pdf_options.setSlidesLayoutOptions(notes_options)

presentation = Presentation("presentation.pptx")
try:
    presentation.save("presentation-with-notes.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

PDF için Erişilebilirlik ve Uyumluluk Standartları

Yararlı PDF’ler hazırlarken, Web Content Accessibility Guidelines (WCAG) adresine bakın. Çıktı standardını seçmek için PdfOptions.setCompliance yöntemini kullanın: PDF/A1a, PDF/A1b, ve PDF/UA.

Bu kod, farklı uyumluluk standartlarına göre birden fazla PDF üreten PowerPoint’ten PDF’ye dönüşüm sürecini gösterir:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PdfCompliance, PdfOptions, Presentation, SaveFormat

presentation = Presentation("presentation.pptx")
try:
    pdf_options = PdfOptions()

    pdf_options.setCompliance(PdfCompliance.PdfA1a)
    presentation.save("presentation-a1a.pdf", SaveFormat.Pdf, pdf_options)

    pdf_options.setCompliance(PdfCompliance.PdfA1b)
    presentation.save("presentation-a1b.pdf", SaveFormat.Pdf, pdf_options)
    
    pdf_options.setCompliance(PdfCompliance.PdfUa)
    presentation.save("presentation-ua.pdf", SaveFormat.Pdf, pdf_options)
finally:
    presentation.dispose()

Not: PDF/UA’ya dışa aktarırken, Aspose.Slides SmartArt, grafikler ve formüller gibi karmaşık grafikleri tek bir şekil olarak işler. Tek tek yol öğeleri ayrı içerik olarak korunmaz ve artefakt olarak işaretlenebilir; alternatif metin yalnızca bütün şekil için sağlanır.

SSS

Birden fazla PowerPoint dosyasını toplu olarak PDF’ye dönüştürebilir miyim?

Evet, Aspose.Slides, birden fazla PPT veya PPTX dosyasını toplu olarak PDF’ye dönüştürmeyi destekler. Dosyalarınızı döngü içinde işleyebilir ve dönüşüm sürecini programlı olarak uygulayabilirsiniz.

Dönüştürülen PDF’yi şifreyle korumak mümkün mü?

Evet. Dönüşüm sırasında bir şifre belirlemek ve erişim izinlerini tanımlamak için PdfOptions sınıfını kullanın.

Gizli slaytları PDF’ye nasıl ekleyebilirim?

Sonuç PDF’ye gizli slaytları eklemek için PdfOptions sınıfında setShowHiddenSlides yöntemini True ile çağırın.

Aspose.Slides PDF’de yüksek görüntü kalitesini koruyabilir mi?

Evet, PDF’nizde yüksek kaliteli görüntüler sağlamak için PdfOptions sınıfındaki setJpegQuality ve setSufficientResolution gibi yöntemleri kullanarak görüntü kalitesini kontrol edebilirsiniz.

Aspose.Slides PDF/A uyumluluk standartlarını destekliyor mu?

Evet, Aspose.Slides, erişilebilirlik veya arşivleme için PDF/A1a, PDF/A1b ve PDF/UA dahil olmak üzere various standards ile uyumlu PDF’ler dışa aktarmanıza olanak tanır. İhtiyacınıza uygun standardı seçin ve çıktıyı gereksinimlerinize göre gözden geçirin.

Ek Kaynaklar