Add option to remove sides IPP attribute for raster formats
...because apparently my printer doesn't like it, even if it agrees with the raster file
This commit is contained in:
parent
213ab589a3
commit
76abb7cea5
10 changed files with 80 additions and 14 deletions
2
ppm2pwg
2
ppm2pwg
|
@ -1 +1 @@
|
||||||
Subproject commit 66b9eea5a074f08cff948292c07c487a5d90aa78
|
Subproject commit a404a177038626765b915ce0cf21527704bffd7e
|
|
@ -24,6 +24,13 @@ Page {
|
||||||
defaultValue: false
|
defaultValue: false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ConfigurationValue
|
||||||
|
{
|
||||||
|
id: removeDuplexAttributesForRaster
|
||||||
|
key: "/apps/harbour-seaprint/settings/remove_duplex_attribute_for_raster"
|
||||||
|
defaultValue: false
|
||||||
|
}
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
console.log(JSON.stringify(printer.attrs))
|
console.log(JSON.stringify(printer.attrs))
|
||||||
}
|
}
|
||||||
|
@ -40,7 +47,8 @@ Page {
|
||||||
console.log(JSON.stringify(jobParams))
|
console.log(JSON.stringify(jobParams))
|
||||||
pageStack.replace(Qt.resolvedUrl("BusyPage.qml"),{printer:printer},
|
pageStack.replace(Qt.resolvedUrl("BusyPage.qml"),{printer:printer},
|
||||||
PageStackAction.Immediate)
|
PageStackAction.Immediate)
|
||||||
printer.print(jobParams, page.selectedFile, alwaysConvert.value, forceIncluDeDocumentFormat.value)
|
printer.print(jobParams, page.selectedFile,
|
||||||
|
alwaysConvert.value, forceIncluDeDocumentFormat.value, removeDuplexAttributesForRaster.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
|
||||||
void ppm2PwgEnv(QStringList& env, bool urf, quint32 Quality, QString PaperSize,
|
void ppm2PwgEnv(QStringList& env, bool urf, quint32 Quality, QString PaperSize,
|
||||||
quint32 HwResX, quint32 HwResY, bool TwoSided, bool Tumble)
|
quint32 HwResX, quint32 HwResY, bool TwoSided, bool Tumble, quint32 pages)
|
||||||
{
|
{
|
||||||
env.append("HWRES_X="+QString::number(HwResX));
|
env.append("HWRES_X="+QString::number(HwResX));
|
||||||
env.append("HWRES_Y="+QString::number(HwResY));
|
env.append("HWRES_Y="+QString::number(HwResY));
|
||||||
|
@ -29,12 +29,45 @@ void ppm2PwgEnv(QStringList& env, bool urf, quint32 Quality, QString PaperSize,
|
||||||
env.append("DUPLEX="+QString::number(TwoSided));
|
env.append("DUPLEX="+QString::number(TwoSided));
|
||||||
env.append("TUMBLE="+QString::number(Tumble));
|
env.append("TUMBLE="+QString::number(Tumble));
|
||||||
|
|
||||||
|
if(pages != 0)
|
||||||
|
{
|
||||||
|
env.append("PAGES="+QString::number(pages));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConvertWorker::convertPdf(QNetworkRequest request, QString filename, QTemporaryFile* tempfile,
|
void ConvertWorker::convertPdf(QNetworkRequest request, QString filename, QTemporaryFile* tempfile,
|
||||||
QString targetFormat, quint32 Colors, quint32 Quality, QString PaperSize,
|
QString targetFormat, quint32 Colors, quint32 Quality, QString PaperSize,
|
||||||
quint32 HwResX, quint32 HwResY, bool TwoSided, bool Tumble)
|
quint32 HwResX, quint32 HwResY, bool TwoSided, bool Tumble)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
QProcess* pdfinfo = new QProcess(this);
|
||||||
|
pdfinfo->setProgram("pdfinfo");
|
||||||
|
pdfinfo->setArguments({filename});
|
||||||
|
pdfinfo->start();
|
||||||
|
|
||||||
|
if(!pdfinfo->waitForStarted() || !pdfinfo->waitForFinished())
|
||||||
|
{
|
||||||
|
qDebug() << "pdfinfo died";
|
||||||
|
pdfinfo->deleteLater();
|
||||||
|
tempfile->deleteLater();
|
||||||
|
emit failed(tr("Failed to get info about PDF file"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
QByteArray pdfInfoOutput = pdfinfo->readAllStandardOutput();
|
||||||
|
pdfinfo->deleteLater();
|
||||||
|
qDebug() << pdfInfoOutput;
|
||||||
|
QList<QByteArray> pdfInfoOutputLines = pdfInfoOutput.split('\n');
|
||||||
|
quint32 pages = 0;
|
||||||
|
for(QList<QByteArray>::iterator it = pdfInfoOutputLines.begin(); it != pdfInfoOutputLines.end(); it++)
|
||||||
|
{
|
||||||
|
if(it->startsWith("Pages"))
|
||||||
|
{
|
||||||
|
QList<QByteArray> pagesTokens = it->split(' ');
|
||||||
|
pages = pagesTokens.last().toInt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool urf = false;
|
bool urf = false;
|
||||||
|
|
||||||
if(targetFormat == "image/urf")
|
if(targetFormat == "image/urf")
|
||||||
|
@ -104,7 +137,7 @@ void ConvertWorker::convertPdf(QNetworkRequest request, QString filename, QTempo
|
||||||
ppm2pwg->setArguments({"ppm2pwg"});
|
ppm2pwg->setArguments({"ppm2pwg"});
|
||||||
|
|
||||||
QStringList env;
|
QStringList env;
|
||||||
ppm2PwgEnv(env, urf, Quality, PaperSize, HwResX, HwResY, TwoSided, Tumble);
|
ppm2PwgEnv(env, urf, Quality, PaperSize, HwResX, HwResY, TwoSided, Tumble, pages);
|
||||||
qDebug() << "ppm2pwg env is " << env;
|
qDebug() << "ppm2pwg env is " << env;
|
||||||
|
|
||||||
ppm2pwg->setEnvironment(env);
|
ppm2pwg->setEnvironment(env);
|
||||||
|
@ -250,7 +283,7 @@ void ConvertWorker::convertImage(QNetworkRequest request, QString filename, QTem
|
||||||
ppm2pwg->setArguments({"ppm2pwg"});
|
ppm2pwg->setArguments({"ppm2pwg"});
|
||||||
|
|
||||||
QStringList env;
|
QStringList env;
|
||||||
ppm2PwgEnv(env, urf, Quality, PaperSize, HwResX, HwResY, false, false);
|
ppm2PwgEnv(env, urf, Quality, PaperSize, HwResX, HwResY, false, false, 0);
|
||||||
qDebug() << "ppm2pwg env is " << env;
|
qDebug() << "ppm2pwg env is " << env;
|
||||||
|
|
||||||
ppm2pwg->setEnvironment(env);
|
ppm2pwg->setEnvironment(env);
|
||||||
|
|
|
@ -297,10 +297,11 @@ QString targetFormatIfAuto(QString documentFormat, QString mimeType, QJsonArray
|
||||||
return documentFormat;
|
return documentFormat;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: make alwaysConvert force ratser format
|
void IppPrinter::print(QJsonObject attrs, QString filename,
|
||||||
void IppPrinter::print(QJsonObject attrs, QString filename, bool alwaysConvert, bool forceIncluDeDocumentFormat)
|
bool alwaysConvert, bool forceIncluDeDocumentFormat, bool removeDuplexAttributesForRaster)
|
||||||
{
|
{
|
||||||
qDebug() << "printing" << filename << attrs << alwaysConvert << forceIncluDeDocumentFormat;
|
qDebug() << "printing" << filename << attrs
|
||||||
|
<< alwaysConvert << forceIncluDeDocumentFormat << removeDuplexAttributesForRaster;
|
||||||
|
|
||||||
_progress = "";
|
_progress = "";
|
||||||
emit progressChanged();
|
emit progressChanged();
|
||||||
|
@ -350,9 +351,6 @@ void IppPrinter::print(QJsonObject attrs, QString filename, bool alwaysConvert,
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug() << "Printing job" << o << attrs;
|
qDebug() << "Printing job" << o << attrs;
|
||||||
IppMsg job = IppMsg(o, attrs);
|
|
||||||
|
|
||||||
QByteArray contents = job.encode(IppMsg::PrintJob);
|
|
||||||
|
|
||||||
QNetworkRequest request;
|
QNetworkRequest request;
|
||||||
|
|
||||||
|
@ -393,6 +391,14 @@ void IppPrinter::print(QJsonObject attrs, QString filename, bool alwaysConvert,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString Sides = getAttrOrDefault(attrs, "sides").toString();
|
||||||
|
if(removeDuplexAttributesForRaster && (documentFormat=="image/pwg-raster" || documentFormat=="image/urf"))
|
||||||
|
{
|
||||||
|
attrs.remove("sides");
|
||||||
|
}
|
||||||
|
|
||||||
|
IppMsg job = IppMsg(o, attrs);
|
||||||
|
QByteArray contents = job.encode(IppMsg::PrintJob);
|
||||||
// Always convert images to get resizing
|
// Always convert images to get resizing
|
||||||
if((mimeType == documentFormat) && !mimeType.contains("image"))
|
if((mimeType == documentFormat) && !mimeType.contains("image"))
|
||||||
{
|
{
|
||||||
|
@ -418,8 +424,6 @@ void IppPrinter::print(QJsonObject attrs, QString filename, bool alwaysConvert,
|
||||||
|
|
||||||
if(mimeType == "application/pdf")
|
if(mimeType == "application/pdf")
|
||||||
{
|
{
|
||||||
|
|
||||||
QString Sides = getAttrOrDefault(attrs, "sides").toString();
|
|
||||||
bool TwoSided = false;
|
bool TwoSided = false;
|
||||||
bool Tumble = false;
|
bool Tumble = false;
|
||||||
if(Sides=="two-sided-long-edge")
|
if(Sides=="two-sided-long-edge")
|
||||||
|
|
|
@ -55,7 +55,8 @@ signals:
|
||||||
void progressChanged();
|
void progressChanged();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void print(QJsonObject attrs, QString file, bool alwaysConvert, bool forceIncluDeDocumentFormat);
|
void print(QJsonObject attrs, QString file,
|
||||||
|
bool alwaysConvert, bool forceIncluDeDocumentFormat, bool removeDuplexAttributesForRaster);
|
||||||
|
|
||||||
|
|
||||||
void onUrlChanged();
|
void onUrlChanged();
|
||||||
|
|
|
@ -144,6 +144,10 @@
|
||||||
<source>Unsupported target format</source>
|
<source>Unsupported target format</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Failed to get info about PDF file</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>CoverPage</name>
|
<name>CoverPage</name>
|
||||||
|
|
|
@ -144,6 +144,10 @@
|
||||||
<source>Unsupported target format</source>
|
<source>Unsupported target format</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Failed to get info about PDF file</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>CoverPage</name>
|
<name>CoverPage</name>
|
||||||
|
|
|
@ -144,6 +144,10 @@
|
||||||
<source>Unsupported target format</source>
|
<source>Unsupported target format</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Failed to get info about PDF file</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>CoverPage</name>
|
<name>CoverPage</name>
|
||||||
|
|
|
@ -144,6 +144,10 @@
|
||||||
<source>Unsupported target format</source>
|
<source>Unsupported target format</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Failed to get info about PDF file</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>CoverPage</name>
|
<name>CoverPage</name>
|
||||||
|
|
|
@ -144,6 +144,10 @@
|
||||||
<source>Unsupported target format</source>
|
<source>Unsupported target format</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Failed to get info about PDF file</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>CoverPage</name>
|
<name>CoverPage</name>
|
||||||
|
|
Loading…
Reference in a new issue