Comments (14)
The bug in PDF.js where different images were displayed as the same occurred between versions 2.7.570 and 2.13.216. This issue was specifically noted to have started in version 2.13.216 (GitHub) (GitHub).
In various discussions, users reported that certain PDFs displayed correctly in versions up to 2.7.570 but encountered rendering issues in versions starting from 2.13.216 onwards. These issues included images being misrepresented, such as different images being shown as the same (GitHub) (GitHub).
For further details on this and related issues, you can review the discussions on GitHub issues #12537 and #14641 (GitHub) (GitHub).
from autogram.
Vďaka za podnet. Otestoval som aj u seba a naozaj to robí toto. Je to strašne divné. Pridal som label bug.
Tu podľa mňa bude nejaký problém s pdfJS, ktoré používame na vizualizáciu PDF v HTML webview. @jsuchal nepoznáš také? Ty si kedysi práve na tejto časti robil.
Každopádne, chceme už dlhšie upgradnúť práve pdfJs na nejakú novšiu verziu, takže možno to súvisí s #73
from autogram.
Vyskusal som to v pdf.js tu https://mozilla.github.io/pdf.js/web/viewer.html a tam to vyzera takto
@rasel-sk vies prezredit ako si taketo pdf vyrobil?
from autogram.
@jsuchal Vytvoril som ho cez mPDF, ale myslím, že to nie je podstatné. Skúšal som rôzne verzie Autogramu (v1.99.0, v2.0.1, v2.1.69) a zakaždým rovnaký výsledok. Chrome, Edge, Firefox, Adobe Acrobat Reader ho zobrazujú správne... 4:1.
from autogram.
Je to zlozitejsie, zjavne su to bugy ani nie tak v pdfjs ako v engine browseru. JavaFX WebView pouziva asi nejaku starsiu verziu. Ked lokalne skusam v javafx webview otvorit pdfjs (legacy mod) ale aj najnovsiu verziu 4.x, tak to robi to iste.
from autogram.
Strieľam od brucha a na slepo, ak je to problém sa cache (neviem otestovať):
package digital.slovensko.autogram.core.visualization;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import digital.slovensko.autogram.core.SigningJob;
import digital.slovensko.autogram.ui.Visualizer;
import eu.europa.esig.dss.model.DSSDocument;
public class PDFVisualization extends Visualization {
private final DSSDocument document;
public PDFVisualization(DSSDocument document, SigningJob job) {
super(job);
this.document = document;
}
private String getBase64EncodedDocument() {
try {
URL url = new URL(document.getName()); // Assuming document.getName() returns the URL of the document
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0");
connection.setRequestProperty("Pragma", "no-cache");
connection.setRequestProperty("Expires", "0");
try (InputStream inputStream = connection.getInputStream();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
return new String(Base64.getEncoder().encode(outputStream.toByteArray()), StandardCharsets.UTF_8);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public void initialize(Visualizer visualizer) {
visualizer.setPrefWidth(getVisualizationWidth());
visualizer.showPDFVisualization(getBase64EncodedDocument());
}
}
from autogram.
@rasel-sk ja to skusam uplne mimo autogramu len cisty webview, cize toto najskor asi nie.
from autogram.
@jsuchal WebView z default prehliadača namiesto JavaFX?
from autogram.
@rasel-sk to sa v javafx robi velmi zle a navyse by sme si trosku strelili do kolena. Takto mame aspon pod kontrolou aky webview tam je.
from autogram.
@jsuchal Blbé je, že WebView JavaFX mi práve zle zobrazuje obrázky podpisov a nenašiel som spôsob ako to vyriešiť - náhľad nezobrazuje reálny obsah PDF. Menil som rozlíšenie, pridával 1px obrázky medzi faksimile a podobné zverstvá a bez výsledku. Z toho pramení zadanie tohto issue na GitHub. Mať pod kontrolou to čo nie je pod kontrolou je trocha paradox...
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class OpenInDefaultBrowserExample extends Application {
@Override
public void start(Stage primaryStage) {
Button openBrowserButton = new Button("Open in Default Browser");
openBrowserButton.setOnAction(e -> {
String url = "http://www.example.com";
openWebpage(url);
});
BorderPane root = new BorderPane();
root.setCenter(openBrowserButton);
Scene scene = new Scene(root, 300, 200);
primaryStage.setScene(scene);
primaryStage.setTitle("Open in Default Browser Example");
primaryStage.show();
}
public static void openWebpage(String url) {
try {
URI uri = new URI(url);
if (Desktop.isDesktopSupported()) {
Desktop.getDesktop().browse(uri);
} else {
String os = System.getProperty("os.name").toLowerCase();
Runtime runtime = Runtime.getRuntime();
if (os.contains("win")) {
runtime.exec("cmd /c start " + url);
} else if (os.contains("mac")) {
runtime.exec("open " + url);
} else if (os.contains("nix") || os.contains("nux")) {
String[] browsers = { "xdg-open", "google-chrome", "firefox" };
String browser = null;
for (String b : browsers) {
if (runtime.exec(new String[] { "which", b }).getInputStream().read() != -1) {
browser = b;
break;
}
}
if (browser != null) {
runtime.exec(new String[] { browser, url });
} else {
throw new UnsupportedOperationException("No supported browser found.");
}
}
}
} catch (URISyntaxException | IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
from autogram.
Skúsil som práve použiť pdf-box na renderovanie pdf ako obrázok v #452 Je to trochu pomalšie, ale aspoň to teda zobrazuje správne veci. Vedeli by sme ešte nastavneie DPI hodiť do nastavení a na slabších systémoch by si to vedeli ľudia ešte zmenšiť. Ak však 99% podpisovaných PDF je do 5 strán, tak good enough. Čo myslíte?
from autogram.
Mať pod kontrolou to čo nie je pod kontrolou je trocha paradox...
Je, ale este stale moze byt horsie :D
Overime ci pdfbox je pouzitelny, @durasj to z nejakeho dovodu nepouzil, cize si na to treba davat pozor. @celuchmarek ma nejake prvotne riesenie, ale este by som to kukol.
from autogram.
FYI. Volal som si s Jakubom a vyzera, ze na pouzitie pdfbox nema blocker, resp. nevie o ziadnom probleme, ze ked kedysi davno pdf.js do octosign daval, ze by pdfbox zavrhol z nejakeho dobreho dovodu. Skor pdf.js bol projekt mozilla / firefox tak ho zobral ako doveryhodnejsi.
from autogram.
Prerobili sme to do obrázkov z PDF Boxu. Celkovo to funguje a scrolluje lepšie než kedykoľvek predtým. Avšak pri väčších súboroch by sa hodil lazy loading - #456
from autogram.
Related Issues (20)
- Standalone podpora formulárov FS
- Chyba Nezadali ste kod - bez vyziadania kodu (v2.1.5) HOT 3
- KV DPH - Finančná správa - problém s podpisovaním podania HOT 2
- Lepšia error hláška pri odstávke slovensko.sk
- RPM balik nejde nainstalovat na openSUSE Tumbleweed HOT 3
- Pridať možnosť zobrazovať iba kvalifikované certifikáty
- Release v2.1.69
- Pridať možnosť odtlačku (viditeľného podpisu) do dokumentu
- Podpis viacerých súborov do jedného kontajnera HOT 2
- Pridať --bok a --pin do CLI módu HOT 2
- Odchytiť exception pri spustení Autogramu HOT 3
- Pridať mpožnosť používať viaceré TSP
- čítač obrazovky neoznámi otvorenie nového dialógu ani žiaden element, ktorý práve nemá focus
- Niektoré prvky nemajú viditeľný focus
- Rodné číslo v sériovom čísle certifikátu HOT 1
- Pridať lazy loading k PDF Box
- Release v2.1.9
- Feature request: podpisovanie dokument v desktopovej aplikácii cez mobil HOT 3
- Release v2.2.0
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from autogram.