PDF'yi Excel ve Markdown'a Dönüştür
PDF’yi Excel ve Markdown’a Dönüştür
Bu kılavuz, bir PDF’yi Excel (.xlsx) çalışma kitabına veya Markdown’a nasıl dönüştüreceğinizi ve her iki formattan da bir PDF’yi nasıl geri yükleyeceğinizi gösterir. Document dönüşümü her iki yönde gerçekleştirir; ExcelSaveOptions ve MarkdownSaveOptions dışa aktarmayı ayarlar, ExcelLoadOptions ve MarkdownLoadOptions ise içe aktarmayı ayarlar. 26.9.0’dan beri.
PDF’den XLSX’e
PDF’de algılanan tablolar, tiplenmiş hücreli çalışma sayfası ızgaralarına dönüşür — sayılar, tarih, boolean, para birimi ve yüzde değerleri metin yerine gerçek Excel değerleri olarak yazılır — ve kaynak stil (yazı tipi ailesi/boyutu, metin rengi, hücre doldurması, kenarlıklar, satır yüksekliği, sütun genişliği, hizalama, birleştirilmiş hücreler) aktarılır. Tablo hücreleri içindeki görüntüler çizim olarak gömülür.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelSaveOptions;
try (Document doc = new Document("report.pdf")) {
ExcelSaveOptions options = new ExcelSaveOptions();
options.setFormat(ExcelSaveOptions.ExcelFormat.XLSX); // default
options.setMinimizeTheNumberOfWorksheets(true); // merge pages onto fewer sheets
options.setInsertBlankColumnAtFirst(false); // no leading spacer column
options.setUniformWorksheets(false); // allow per-sheet column widths
options.setStructuralHeuristics(true); // recover tables on untagged PDFs
options.setSuppressRunningHeadersFooters(true); // drop repeated page furniture
doc.save("report.xlsx", options);
}SaveFormat.Xlsx (bir takma ad, SaveFormat.Excel, da kabul edilir) aynı sonucu varsayılan seçeneklerle verir: doc.save("report.xlsx", SaveFormat.Xlsx). ExcelSaveOptions‘un kendi ExcelFormat enum’u ayrıca XmlSpreadSheet2003, CSV ve ODS‘yi Aspose.PDF API uyumluluğu için kabul eder, ancak bu kütüphane hangi değer ayarlanırsa ayarlansın her zaman bir .xlsx paketi yazar. Ayrıca doc.save(OutputStream, ExcelSaveOptions) ile bir akışa da yazabilirsiniz.
XLSX’den PDF’e, canlı formlar dahil
.xlsx çalışma kitabını Document yapıcı üzerinden, ExcelLoadOptions alan bir yapıcı ile yükleyin. Her sayfa, dışa aktarma yönündeki aynı hücre tipleme ve stil desteğine sahip bir PDF tablosuna dönüşür.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
try (Document doc = new Document("book.xlsx", new ExcelLoadOptions())) {
doc.save("book.pdf");
}ExcelLoadOptions.setInteractiveForms(true) ayarını etkinleştirmek, sayısal ve etiket hücrelerini statik metin yerine “canlı” bir PDF formuna dönüştürür: sayısal hücreler düzenlenebilir metin alanları haline gelir, formül hücreleri girdilerinden yeniden hesaplama yapan yalnızca okunabilir alanlar olur ve etiket veya sabit hücreler, başka bir formül onlara referans vermediği sürece statik metin olarak kalır. ExcelFormulaTranslator, her formülü Acrobat JavaScript’ye çevirir; desteklenmeyen bir işlevi olan bir formül, son hesaplanmış statik değerine geri döner, böylece alan hâlâ doğru sayıyı gösterir. Yeniden hesaplama yalnızca bir forms/JavaScript motoruna sahip görüntüleyicide çalışır — Adobe Acrobat veya Foxit; bu motoru olmayan bir görüntüleyici sadece yerleşik değerleri gösterir, canlı yeniden hesaplama olmaz.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
ExcelLoadOptions options = new ExcelLoadOptions();
options.setInteractiveForms(true); // cells → fields, formulas → calculate actions
try (Document doc = new Document("invoice.xlsx", options)) {
doc.save("invoice-live.pdf");
}PDF’den Markdown’a
Document bir PDF’i CommonMark / GitHub-tatlı Markdown’a dönüştürür: başlıklar, paragraflar, listeler, tablolar, vurgulama (kalın/eğik/üstü çizili), satır içi ve blok kod, bağlantılar, görseller ve dipnotlar.
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownSaveOptions;
try (Document doc = new Document("article.pdf")) {
MarkdownSaveOptions options = new MarkdownSaveOptions();
options.setStructuralHeuristics(true); // recover headings/lists/tables
options.setSuppressRunningHeadersFooters(true); // drop repeated page furniture
options.setRasterizeVectorGraphics(true); // charts/shapes -> referenced images
doc.save("article.md", options);
}SaveFormat.Markdown, varsayılan seçeneklerle aynı sonucu verir: doc.save("article.md", SaveFormat.Markdown). Document.markdownText(MarkdownSaveOptions), Markdown’ı bir dosyaya yazmak yerine String olarak döndürür (ayrı bir “Markdown metni” erişicisi yoktur — bu yöntem, bellek içi sonuç almak için çağrılması gereken yöntemdir).
Markdown’dan PDF’e
Document yapıcısı aracılığıyla MarkdownLoadOptions alan bir Markdown dosyasını yükleyin. Elle yazılmış bir CommonMark/GFM alt kümesi ayrıştırıcısı kaynağı okur: başlıklar, paragraflar, listeler, tablolar, vurgulama, kod, bağlantılar, görseller, blok alıntılar ve dipnotlar. Markdown içinde gömülü egzotik HTML tam olarak yeniden üretilmez.
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownLoadOptions;
try (Document doc = new Document("README.md", new MarkdownLoadOptions())) {
doc.save("README.pdf");
}İpuçları ve En İyi Uygulamalar
- Doğruluk, her iki format için de piksel düzeyinde değil, yapısaldır: dönüşümler içerik, yapı, görseller ve sayfa geometrisini korur, tam olarak render edilmiş görünümü değil.
ExcelSaveOptions.ExcelFormatveMarkdownSaveOptionsyapısal bayraklar yalnızca output paket formatı ya da sezgisel kurallar — PDF’nizin etiketlendiği gerçek değerler hâlâ bir tablo, bir başlık ya da bir liste olarak neyin algılandığını belirler.- Canlı XLSX formları için, yerleşik hücre değerlerini doğru geri dönüş olarak kabul edin: yalnızca form destekli bir görüntüleyici açıldığında formülleri yeniden hesaplar.
Yaygın Sorunlar
| Sorun | Neden | Düzeltme |
|---|---|---|
XLSX çıktısı, ExcelFormat.CSV veya ODS ayarlansa bile her zaman bir .xlsx uzantısına sahiptir. | FOSS yazarı her zaman bir OOXML .xlsx paketini serileştirir; diğer ExcelFormat değerler yalnızca Aspose.PDF API uyumluluğu için vardır. | Çıktıyı, ayarladığınız ExcelFormat değerine bakılmaksızın .xlsx olarak ele alın |
| Yeniden hesaplayan bir XLSX formu, canlı formüller yerine sabit sayılar gösterir | PDF görüntüleyicisinin forms/JavaScript motoru yok | Canlı yeniden hesaplamayı görmek için dosyayı Adobe Acrobat veya Foxit’te açın |
| Formül hücresi, eski gibi görünen bir değer gösterir | ExcelFormulaTranslator bu formülün işlevini desteklemiyor | Bu, belgelenen geri dönüş: alan son hesaplanan sabit değerini korur |
FAQ
Markdown’ı bir dosya yerine String olarak alabilir miyim?
Evet — Document.markdownText(MarkdownSaveOptions)‘ı çağırın; Markdown metnini doğrudan döndürür, bir dosyaya yazmaz.
XLSX içe aktarıcı gerçek Excel formüllerini destekliyor mu?
Yalnızca ExcelLoadOptions.setInteractiveForms(true) ayarlandığında ve yalnızca ExcelFormulaTranslator işlevlerinin bir alt kümesi Acrobat JavaScript’ye çevrilebildiğinde. Diğer tüm durumlar, formülün kaynak çalışma kitabındaki son hesaplanmış statik değerine geri döner.
API Reference Özet
| Sınıf/Yöntem | Açıklama |
|---|---|
ExcelSaveOptions | PDF’den XLSX’ye dışa aktarmayı ayarlar |
ExcelLoadOptions | XLSX’den PDF’ye içe aktarmayı, canlı formları dahil ederek ayarlar |
ExcelFormat | Hedef elektronik tablo çeşidi ExcelSaveOptions tarafından kabul edilir |
ExcelFormulaTranslator | Excel formüllerini, canlı formlar için Acrobat JavaScript’a çevirir |
MarkdownSaveOptions | PDF’den Markdown dışa aktarımını ayarlar |
MarkdownLoadOptions | Markdown’dan PDF içe aktarımını ayarlar |
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptions | MarkdownSaveOptions)` |
Document.markdownText(MarkdownSaveOptions) | Markdown’ı bir String olarak döndürür |