Я видел много тем об этом, но большинство из них старые.
Я - новый ученик Java и попытался построить свой первый проект, чтобы я мог применить то, что я изучил, Идея проекта проста, и это программа, которая приносит все PDF-файлы, которые у вас есть, отображает их для вас, позволяет открывать и классифицировать их, показывает процент чтения и многое другое.
Я закончил раздел, касающийся извлечения и обработки файлов PDF и добавления информации о них в базу данных, которая использовалась для этой библиотеки PDFBox и Derpy, интерфейсная часть почти завершена.
И речь идет об открытии файлов PDF. Я попытался использовать ICEpdf и преуспел в этом, но у меня были проблемы с отображением большого количества файлов PDF, так как шрифт не отображался четко, и не было много изображений, которые не появлялись, а в файлах Arabi c PDF много текста появлялось в форма прямоугольников.
Кроме того, формат ICEpdf плох и трудно изменить язык и формат отображения.
Я пытался использовать PDF. js, но не смог, возможно из-за моего отсутствия опыта. Действительно, я видел ответ, используя PDF. js, но он не работал для меня, хотя я написал тот же код в соответствии с моей программой: { ссылка }
Это код, который вы использовали для просмотра PDF-файлов с ICEpdf:
import javafx.embed.swing.SwingNode;
import javafx.scene.layout.BorderPane;
import org.icepdf.ri.common.SwingController;
import org.icepdf.ri.common.SwingViewBuilder;
import org.icepdf.ri.util.FontPropertiesManager;
import org.icepdf.ri.util.PropertiesManager;
import javax.swing.*;
import java.lang.reflect.InvocationTargetException;
import java.util.ResourceBundle;
public class PDFFXMLController {
private SwingController swingController;
private JComponent viewerPanel;
public void createViewer(BorderPane borderPane) {
try {
SwingUtilities.invokeAndWait(() -> {
swingController = new SwingController();
swingController.setIsEmbeddedComponent(true);
PropertiesManager properties = new PropertiesManager(System.getProperties(),
ResourceBundle.getBundle(PropertiesManager.DEFAULT_MESSAGE_BUNDLE));
properties.set(PropertiesManager.PROPERTY_SHOW_TOOLBAR_FIT, "true");
properties.set(PropertiesManager.PROPERTY_SHOW_TOOLBAR_ROTATE, "true");
properties.set(PropertiesManager.PROPERTY_SHOW_TOOLBAR_TOOL, "true");
properties.set(PropertiesManager.PROPERTY_DEFAULT_ZOOM_LEVEL, "1.25");
properties.setBoolean(PropertiesManager.PROPERTY_SHOW_STATUSBAR_VIEWMODE, Boolean.FALSE);
properties.set(PropertiesManager.PROPERTY_SHOW_TOOLBAR_PAGENAV, "true");
ResourceBundle messageBundle = ResourceBundle.getBundle(PropertiesManager.DEFAULT_MESSAGE_BUNDLE);
new FontPropertiesManager(properties, System.getProperties(), messageBundle);
swingController.getDocumentViewController().setAnnotationCallback(
new org.icepdf.ri.common.MyAnnotationCallback(swingController.getDocumentViewController()));
SwingViewBuilder factory = new SwingViewBuilder(swingController, properties);
viewerPanel = factory.buildViewerPanel();
viewerPanel.revalidate();
SwingNode swingNode = new SwingNode();
swingNode.setContent(viewerPanel);
borderPane.setCenter(swingNode);
swingController.setToolBarVisible(false);
swingController.setUtilityPaneVisible(false);
});
} catch (InterruptedException | InvocationTargetException ignored) {
}
}
public void openDocument(String document) {
SwingUtilities.invokeLater(() -> {
swingController.openDocument(document);
viewerPanel.revalidate();
});
}
}