artar ve Ben durumu vardır: Ben apache FOP ile oluşturulan PDF dosyası mevcut olanPDFBOX Java proje üzerinde çalışıyorum iki kez
. İçinde orada Birlikte alıyorum imleri, şunlardır: Ben ikinci dosyayı açıyorum
Map<String, PDAction> actionsMap = new HashMap<String, PDAction>(); PDDocumentOutline bookmarks = doc1.getDocumentCatalog().getDocumentOutline(); PDOutlineItem item = bookmarks.getFirstChild(); while(item != null){ actionsMap.put(item.getTitle(), item.getAction()); item = item.getNextSibling(); }
(tekrar oluşturulan züppe) PDFBOX 2.0.0 ile ve metnin belirli bölümlerine 3 PDAnnotationLinks ekleyin. Dosya birkaç şema ile tek sayfadır. Sonra bağlantılar çalışıyoruz, ikinci dosyayı kaydettikten sonra
PDPage page = (PDPage) diagramDocument.getDocumentCatalog().getPages().get(0);
//objCoordinates is retrieved from another class with PDFTextStripper
Iterator entries = objCoordinates.entrySet().iterator();
while (entries.hasNext()) {
Entry entry = (Entry) entries.next();
String key = (String) entry.getKey();
PDAnnotationLink txtLink = new PDAnnotationLink();
PDBorderStyleDictionary borderULine = new PDBorderStyleDictionary();
borderULine.setWidth(0);
txtLink.setBorderStyle(borderULine);
PDActionGoTo action = (PDActionGoTo) actionsMap.get(key);
txtLink.setAction(action);
final float[] quads = (float[]) entry.getValue();
PDRectangle rect = new PDRectangle();
rect.setLowerLeftX(quads[0]);
rect.setLowerLeftY(quads[5]);
rect.setUpperRightX(quads[2]);
rect.setUpperRightY(quads[1]);
txtLink.setRectangle(rect);
page.getAnnotations().add(txtLink);
}
noktası 1 den eylemleri eklemek, ancak dosya boyutu iki katına çıkarılır. PDF sürümü 1,6'dır. Dosyada zaten FlateDecode filtresi var. Çevrimiçi PDF dosyalarını karşılaştırmayı denedim (ilk dosya ve bağlantılarla sonuç dosyası) ancak sonuçta dosyaların hiçbir farkı yok. Dosyaları, metin düzenleyicisiyle açtığımda - özgün dosya - 1 Tür/Sayfa/örnek - sonuç dosyası - 18/Tür/Sayfa örnekleri Tahminim, PDFBOX'ın fazladan (yinelenen?) Bilgiler ekliyor olmasıdır.
Bu sorunla karşılaştıysanız, tavsiye vermekten memnuniyet duyarım.
Teşekkür
O dosyası olmadan zor ama benim duygu olduğunu sen PDActionGoTo action = (PDActionGoTo) actionsMap.get (anahtar) ne zaman; diğer dosyadan bir sayfaya başvuruyorsunuz. "sayfa bir sayfa nesnesine dolaylı bir referanstır" => Goto eyleminizin hedefinin kendi belgenizin bir sayfası olduğundan emin olmalısınız. Btw durumunda, "2.0.0" dan bahsettiniz, umarım yayınlanmış versiyonu ve RC3 değil. –
Merhaba Tilman, Evet, yayınlanmış 2.0.0 sürümünü kullanıyorum, ancak sorun başka bir yerde. Doğru şekilde söylediğin gibi, Goto eylemi kendi belgenizin bir sayfası olmalı ve başka bir belgeden sayfaya işaret ediyorum ... Bunu işaret ettiğin için teşekkür ederim. Kodumu yeniden işlemek ve PDFBOX – micky
hakkında daha fazla bilgi almak istiyorum. İkinci dosyanızın sadece bir sayfası var, bu yüzden goto eyleminin PDPageDestination öğesinin PDPage parametresini atamak kolay olmalı. action.setDestination (sayfa). –