PDF-Datei mit JBIG2-Bildern drucken

8

Bitte schlagen Sie mir einige Bibliotheken vor, die mir helfen werden, PDF-Dateien zu drucken, die JBIG2-kodierte Bilder enthalten. PDFRenderer , PDFBox helfen mir nicht. Diese Bibliotheken können einfache PDF-Dateien drucken, jedoch keine PDF-Dateien, die JBIG2-Bilder enthalten. PDFRenderer versucht es zu beheben (entsprechend dem Bug-Problem von PDFRedndrers Bug-Tracker), aber einige Seiten (insbesondere wo Barcodes existieren) wollen nicht drucken.

P.S. Ich benutze javax.print API im Applet

Danke!

UPDATE : auch versucht ICEPdf, will auch nicht arbeiten.

Ich kam zu dem Schluss, dass all diese Bibliotheken (PDFRenderer, ICEPdf, PDFBox) JPedals jbig2 Decoder verwenden. Fehler (einige Seiten wurden nicht gedruckt) stammen aus dieser Decoder-Bibliothek. Die Open-Source-Version dieses Decoders (die in PDFRenderer, ICEPdf, PDFBox verwendet wird) wird nicht mehr unterstützt, aber JPedal hat einen neuen kommerziellen Zweig des Projekts, und sie haben geschrieben, dass der Fehler in der neuen kommerziellen Version behoben wurde, was kostet $ 9k.

Irgendwelche Ideen?

UPDATE 2 : Gestern habe ich versucht, JPedals kostenlose Bibliothek durch andere Open-Source-Software zu ersetzen jbig2-imageio Bibliotheken. Aber ich bekomme keine erfolgreichen Ergebnisse. Daher habe ich auf der Projektseite (google-codes Forum - hier ). Wäre dankbar für jede Hilfe.

Ich habe auch hilfreiche Diskussionen zu Apache PDFBox bug-tracker: hier und hier .

    
MyTitle 21.08.2012, 13:48
quelle

5 Antworten

1

Es gibt eine Verzweigung der JPedal-Bibliothek von Borisvl, die sich bei

befindet

Ссылка

enthält Geschwindigkeitsverbesserungen und ich glaube, dass es auch deinen Fehler beheben sollte.

EDIT: Der Fehler bezieht sich auf die einfache Bereichsprüfung. Grundsätzlich müssen Sie verhindern, dass GetPixel auf x, y-Werte außerhalb der Bitmap-Extents zugreift.

Sie müssen sicherstellen, dass die folgenden Bedingungen erfüllt sind, bevor Sie getPixel aufrufen

col & gt; = 0 und col & lt; bitmap.width   Zeile & gt; = 0 und Zeile & lt; bitmap.height

Hier ist ein Delphi-Code mit ein paar kleinen Bereichsüberprüfungen. Ich kann den Java-Code nicht selbst testen, aber Sie müssen Änderungen an src / org / jpedal / jbig2 / image / JBIG2Bitmap.java

vornehmen %Vor%

Andrew.

    
Andrew Cash 07.09.2012, 10:40
quelle
3

Wenn Sie Ihren Kommentar in yms beantworten, z. "aber welche Bibliothek kann ich verwenden, um Bilder zu extrahieren und (noch wichtiger) sie wieder in PDF zu speichern?"

Hier ist eine einfache Demonstration von
 1) Extrahiere jbig2 oder du kannst alle Bilder von pdf sagen.
 2) Konvertiere jbig2 image in ein anderes Format, in meinem Fall in jpeg .
 3) Erstellen eines neuen pdf mit dem jpeg .

Verwenden von Bibliotheken jbig2-imagio und istext .

Im folgenden Beispiel ändern Sie bitte die Ressourcen und den Verzeichnispfad gemäß Ihren Anforderungen.
Dafür musste ich mehrere Ressourcen durchgehen, die ich am Ende anhängen werde. Hoffe, das hilft.

%Vor%

Referenzen:
1) Extrahieren von jbig2 von pdf ( Extrahieren von Bildern ) (MyImageRenderListener ).
2) Konvertieren von jbig2 ( JBIG2ImageReaderDemo )

    
Harmeet Singh 30.08.2012 18:12
quelle
1

Wie wäre es mit AcrobatReader selbst? Es ist ein bisschen matschig, es zur Arbeit zu bringen, und keine robuste Lösung, denke ich. Aber wird wahrscheinlich alles perfekt drucken. Und sei frei

Einige Informationen über diese Route;

Ссылка http://www.codeproject.com/Questions/98586/Programmatisch-Print-PDF-Dokumente Ссылка

    
IvoTops 23.08.2012 15:59
quelle
1

Sie haben Tools wie ImageMagick , die Bilder verarbeiten und in viele Formate konvertieren. Ich habe es vor einigen Jahren benutzt, also kann ich Ihnen nicht sagen, ob das jbig2-Format standardmäßig korrekt gehandhabt wird oder ob Sie ein Plugin installieren müssen. Sie können Folgendes versuchen, um eine Liste der unterstützten Formate zu erhalten, die mit J beginnen, wie die von Ihnen gesuchte JBIG2 :

%Vor%

Es ist wirklich offensichtlich, mit to tool auch zu pdf zu konvertieren, gekoppelt mit gs tool aka GhostScript .

Wenn Sie nichts dagegen haben, können Sie eine PNG / JPEG-Version des Bildes anzeigen und einen Download-Link zur ursprünglichen JBIG2-Datei mit eigenen Metadatas bereitstellen.

    
ThierryB 27.08.2012 15:44
quelle
1
___ qstnhdr ___ PDF-Datei mit JBIG2-Bildern drucken ___ qstntxt ___

Bitte schlagen Sie mir einige Bibliotheken vor, die mir helfen werden, PDF-Dateien zu drucken, die JBIG2-kodierte Bilder enthalten. %code% , %code% helfen mir nicht. Diese Bibliotheken können einfache PDF-Dateien drucken, jedoch keine PDF-Dateien, die JBIG2-Bilder enthalten. %code% versucht es zu beheben (entsprechend dem Bug-Problem von PDFRedndrers Bug-Tracker), aber einige Seiten (insbesondere wo Barcodes existieren) wollen nicht drucken.

P.S. Ich benutze %code% API im Applet

Danke!

UPDATE : auch versucht ICEPdf, will auch nicht arbeiten.

Ich kam zu dem Schluss, dass all diese Bibliotheken (PDFRenderer, ICEPdf, PDFBox) %code% jbig2 Decoder verwenden. Fehler (einige Seiten wurden nicht gedruckt) stammen aus dieser Decoder-Bibliothek. Die Open-Source-Version dieses Decoders (die in PDFRenderer, ICEPdf, PDFBox verwendet wird) wird nicht mehr unterstützt, aber %code% hat einen neuen kommerziellen Zweig des Projekts, und sie haben geschrieben, dass der Fehler in der neuen kommerziellen Version behoben wurde, was kostet $ 9k.

Irgendwelche Ideen?

UPDATE 2 : Gestern habe ich versucht, JPedals kostenlose Bibliothek durch andere Open-Source-Software zu ersetzen %code% Bibliotheken. Aber ich bekomme keine erfolgreichen Ergebnisse. Daher habe ich auf der Projektseite (google-codes Forum - hier ). Wäre dankbar für jede Hilfe.

Ich habe auch hilfreiche Diskussionen zu %code% bug-tracker: hier und hier .

    
___ answer12202988 ___

Wenn Sie Ihren Kommentar in yms beantworten, z. "aber welche Bibliothek kann ich verwenden, um Bilder zu extrahieren und (noch wichtiger) sie wieder in PDF zu speichern?"

Hier ist eine einfache Demonstration von
 1) Extrahiere %code% oder du kannst alle Bilder von %code% sagen.
 2) Konvertiere %code% image in ein anderes Format, in meinem Fall in %code% .
 3) Erstellen eines neuen %code% mit dem %code% .

Verwenden von Bibliotheken jbig2-imagio und istext .

Im folgenden Beispiel ändern Sie bitte die Ressourcen und den Verzeichnispfad gemäß Ihren Anforderungen.
Dafür musste ich mehrere Ressourcen durchgehen, die ich am Ende anhängen werde. Hoffe, das hilft.

%Vor%

Referenzen:
1) Extrahieren von %code% von %code% ( Extrahieren von Bildern ) (MyImageRenderListener ).
2) Konvertieren von %code% ( JBIG2ImageReaderDemo )

    
___ answer12316487 ___

Es gibt eine Verzweigung der JPedal-Bibliothek von Borisvl, die sich bei

befindet

Ссылка

enthält Geschwindigkeitsverbesserungen und ich glaube, dass es auch deinen Fehler beheben sollte.

EDIT: Der Fehler bezieht sich auf die einfache Bereichsprüfung. Grundsätzlich müssen Sie verhindern, dass GetPixel auf x, y-Werte außerhalb der Bitmap-Extents zugreift.

Sie müssen sicherstellen, dass die folgenden Bedingungen erfüllt sind, bevor Sie getPixel aufrufen

col & gt; = 0 und col & lt; bitmap.width   Zeile & gt; = 0 und Zeile & lt; bitmap.height

Hier ist ein Delphi-Code mit ein paar kleinen Bereichsüberprüfungen. Ich kann den Java-Code nicht selbst testen, aber Sie müssen Änderungen an src / org / jpedal / jbig2 / image / JBIG2Bitmap.java

vornehmen %Vor%

Andrew.

    
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ answer12095699 ___

Wie wäre es mit AcrobatReader selbst? Es ist ein bisschen matschig, es zur Arbeit zu bringen, und keine robuste Lösung, denke ich. Aber wird wahrscheinlich alles perfekt drucken. Und sei frei

Einige Informationen über diese Route;

Ссылка http://www.codeproject.com/Questions/98586/Programmatisch-Print-PDF-Dokumente Ссылка

    
___ answer12145169 ___

Sie haben Tools wie ImageMagick , die Bilder verarbeiten und in viele Formate konvertieren. Ich habe es vor einigen Jahren benutzt, also kann ich Ihnen nicht sagen, ob das jbig2-Format standardmäßig korrekt gehandhabt wird oder ob Sie ein Plugin installieren müssen. Sie können Folgendes versuchen, um eine Liste der unterstützten Formate zu erhalten, die mit J beginnen, wie die von Ihnen gesuchte %code% :

%Vor%

Es ist wirklich offensichtlich, mit to tool auch zu pdf zu konvertieren, gekoppelt mit %code% tool aka GhostScript .

Wenn Sie nichts dagegen haben, können Sie eine PNG / JPEG-Version des Bildes anzeigen und einen Download-Link zur ursprünglichen JBIG2-Datei mit eigenen Metadatas bereitstellen.

    
___ tag123printing ___ Drucken ist ein Prozess zum Reproduzieren von Text und Bildern, typischerweise mit Tinte oder Toner, auf Papier unter Verwendung eines Druckers. ___ antwort12110967 ___

Als Alternative könnten Sie versuchen, diese Server-Seite zu tun:

Ansatz 1:
Konvertieren Sie die PDF-Dateien mit einer externen Anwendung in Rasterbilder und drucken Sie diese stattdessen.

Ansatz 2:
Passen Sie Ihre PDF-Dateien durch erneutes Komprimieren von JBIG2-Bildern an:

1- Extrahieren Sie die komprimierten Bilder als JBIG2 aus Ihren Dateien 2- Komprimieren Sie sie mit einem anderen Algorithmus (jpeg, png, etc). Um dies zu tun, müssen Sie möglicherweise außerhalb von Java mit JNI oder eine externe Anwendung aufrufen . Sie können es beispielsweise mit jbig2dec oder ImageMagic versuchen, wenn die GPL-Lizenz Ihren Anforderungen entspricht.

3- Setzen Sie die rekomprimierten Bilder zurück in Ihr PDF Dieser Ansatz führt zu einem gewissen Qualitätsverlust bei diesen Bildern, aber zumindest können Sie die Dateien drucken.

Sie können dies in Java mit iText tun, es gibt ein Kapitel über die Größenänderung von Bildern in dem Buch iText in Aktion (mit Beispielcode) Die Idee besteht darin, das Bild zu extrahieren, seine Größe zu ändern (einschließlich Rekompression) und es zurückzusetzen. Sie können dies als Ausgangspunkt verwenden. Beachten Sie, dass iText ein AGPL-Projekt ist, daher können Sie es nicht kostenlos in kommerziellen Closed-Source-Anwendungen verwenden.

Wenn Sie einen Windows-basierten Server verwenden und sich ein kommerzielles Tool leisten können, können Sie dies auch mit Amyuni PDF Creator entweder mit C # / VB.Net oder C ++ ( Üblicher Haftungsausschluss gilt für diesen Vorschlag ). Sie müssen nur alle Objekte des Typs acObjectTypePicture und setze das Attribut Compression auf acJPegHigh , dieser Ansatz erfordert keinen externen JBIG2-Decoder (ich kann einen Beispielcode mit einbeziehen) hier, wenn Sie interessiert sind).

Wenn Sie ein Applet nur zum Drucken Ihrer PDF-Dateien verwenden, können Sie auch ausprobieren Erzeugen einer PDF-Datei, die den Druckdialog beim Öffnen anzeigt

    
___ tag123pdf ___ Das Portable Document Format (PDF) ist ein offener Standard für den elektronischen Dokumentenaustausch, der von der Internationalen Organisation für Normung (ISO) gepflegt wird. Fragen können zum Erstellen, Lesen, Bearbeiten von PDFs mit verschiedenen Sprachen sein. ___ tag123applet ___ Applet bedeutet "kleine Anwendung". Dies wurde häufig verwendet, um Java-Applets zu beschreiben, die in Webseiten eingebettet sind. Und in diesem Zusammenhang können Applets als veraltete Technologie angesehen werden. ___ tag123jbig2 ___ Ein Bildkomprimierungsstandard für Bilder mit zwei Ebenen, der Bilder komprimieren kann, die bis zu 10x kleiner sind als mit TIFF G4 ___
yms 24.08.2012 14:04
quelle

Tags und Links